C#言語ってなんだろう?

プログラミング言語C#

現在、私たちの身の回りには、実にたくさんのコンピュータが内蔵された機械が存在します。パソコンやスマートフォン、コンピュータゲーム機などといったものばかりではなく、自動車や家電製品の制御、さらには信号や電車の制御などの交通インフラや、金融機関の基幹システムなど、実に様々な領域で、コンピュータが活躍してます。

このコンピュータは、それ以外の機械と大きく違う点があります。それは、コンピュータ単体では、何の役にも立たない、ということです。コンピュータを制御するには、コンピュータに対し、どのように仕事や作業をするかということを教える必要があります。この一連の作業のことを、プログラムと言います。

そして、そのプログラムを作るために必要な言葉を、プログラミング言語と言います。これは、コンピュータが理解できる言語で、コンピュータ上でアプリケーションをはじめとする、様々なソフトを作ることが出来るのです。

一口にプログラミング言語といっても、実に多種多様です。C#はその中の一つです。

その他のプログラミング言語

すでに述べた通り、コンピュータ言語には実にたくさんの種類があるのです。(表0-1参照)その中でも、C#は、その中の一つです。

表0-1:主要なコンピュータ言語一覧
言語名 特徴
C 現在用いられている主流の言語の中では最も古い言語。多くの言語が、C言語をベースに作られている。
C++ C言語を更に拡張した言語。オブジェクト指向といった考え方に対応。
Java C/C++をベースにして、SunMicrosystemsによって開発された、Androidなどで用いられている言語。
C# Microsoft社がJavaなどをベースに独自に開発した言語。
Objective-C Apple社がC言語を独自に拡張した言語。iPhoneやiPadのアプリ開発に用いられる。

コンピュータ言語の役割

マシン語と高級言語

C#言語について説明する前に、そもそもコンピュータ言語とはどのようなものか、ということについてもう少し詳しく説明しましょう。すでに説明したとおり、コンピュータ本体は、そのままでは働きもしません。コンピュータを動作させるには、コンピュータに理解できる言葉で命令をしてあげる必要があるのです。

とはいえ、コンピュータが理解できるのは、マシン語(機械語)と呼ばれるきわめて判りづらい言語であり、この言語はつまるところ、0と1の数値の羅列であり、人間が理解するのが大変困難な言語なのです。そこで考え出されたのが、高級言語という、人間にとって比較的理解し易い文章や記号で構成されている言語を作ることでした。C#は、高級言語の一つなのです。

コンパイラとインタープリタ

しかし、コンピュータが理解できるのはあくまでも機械語であり、高級言語はそのままではコンピュータが理解不可能です。そこで、これを機械語に変換する必要があるのですが、その変換する方法には、大きく分けてコンパイラと呼ばれるものと、インタープリタと呼ばれるものが存在します。

これらの違いは、高級言語でかかれたプログラム(ソースコード)を機械語に変換するプロセスの違いにあります。コンパイラは、一度にすべてのソースコードを機械語に変換(コンパイル)し、変換後そのプログラムを動かすという方式です。それに対し、インタープリタは、ソースコードを翻訳しながら実行するという構造になっています。(図0-1)

図0-1.コンパイラとインタープリタの違い
コンパイラとインタープリタの違い

一般に、コンパイラーは、コンパイル作業に時間がかかるものの、全てが一括返還されるため実行速度が速く、インタープリターは、コンパイル作業は要らないものの、変換作業を行いながらの実行になるため、速度はコンパイラーに劣るといわれています。

C#言語ってどんな言語なの?

C#言語の起源

C#言語の特徴について説明する前に、C#言語の成り立ちについて簡単に説明しておくことにします。C#という言語は、すでにあったC言語、およびC++言語の後継言語としての位置づけがなされています。そのため、C#の#という記号は、この言語が、「C++++言語」であるという意味合いを含んでいます。

そもそもこの言語が開発されたのは、

C#言語の特徴

では、そんなC#言語ですが、一体どんな特徴があるのでしょうか?

実は、C#言語は、単純にインタープリター型言語、もしくはコンパイラー型言語と、簡単に分類することが難しい言語です。それは、C#言語の特殊性にあります。C#は基本的にコンパイラでソースコードをコンパイルしてから実行しますが、コンパイラによって生成されるプログラムは、実は直接アセンブラに変換されるわけではありません。

C#のコンパイラは、.NET Framework(ドットネットフレームワーク)と呼ばれる実行環境の上でプログラムが実行できるようにするよう、ソースコードをコンパイルするのです。

.NET Framework

ではいったい、.NET Frameworkとはなんでしょう?C#のプログラムをコンパイルし、実行するということは、一旦このフレームワーク上で動作するCIL(Common Language Infrastructure:共通言語基盤)と呼ばれる独自の中間言語に変換し、その中間言語を、インタープリターで変換しながら逐次実行していくという仕組みにほかなりません。

つまり、C#言語は、コンパイラ型の言語と、インタープリター型の言語という、2つの側面を持っているわけです。ではいったい、なぜこのような回りくどいことをするのでしょう?

この方法のメリットは、.NET対応のアプリケーションソフトは.NET Frameworkが存在する環境なら機種やOSの違いなどに拠らず同じように動作させるという点にあります。従来のマイクロソフトの言語は、マイクロソフトのOSが必要でしたが、これにより、C#は、OSの違いを超えて、様々な領域で利用可能になったのです。

学習の進め方

このサイトでC#言語の学習を進める方法

このサイトでは、C#言語のプログラミングについて学習します。基本編7日間、応用編7日間の計14日分あります。基本編でだいたいの仕組みがわかるようになっていますが、より高度なプログラミングを学ぶ場合は、応用編を学んでください。

プログラムの入力の仕方

C#言語には、ネームスペースという概念があり、ここで取り上げるサンプルは、日にちによって、ネームスペースを分けています。サンプルは、プロジェクトと、ネームスペースは同じ名前になっています。プロジェクトの名前は、サンプルソースコードの先頭に書かれていますので、それに従ってください。

また、開発環境として想定しているのは、VisualStudio2015と呼ばれる、マイクロソフト純正の開発環境を用います。VisualStudio2015の使い方および、プロジェクトの作り方、プログラムの実行方法については、こちらを参照してください。