C#言語ってなんだろう?
プログラミング言語C#
現在、私たちの身の回りには、実にたくさんのコンピュータが内蔵された機械が存在します。パソコンやスマートフォン、コンピュータゲーム機などといったものばかりではなく、自動車や家電製品の制御、さらには信号や電車の制御などの交通インフラや、金融機関の基幹システムなど、実に様々な領域で、コンピュータが活躍しています。
このコンピュータは、それ以外の機械と大きく違う点があります。それは、コンピュータ単体では、何の役にも立たない、ということです。コンピュータを制御するには、コンピュータに対し、どのように仕事や作業をするかということを教える必要があります。この一連の作業のことを、プログラムと言います。
そして、そのプログラムを作るために必要な言葉を、プログラミング言語と言います。これは、コンピュータが理解できる言語で、コンピュータ上でアプリケーションをはじめとする、様々なソフトを作ることができるのです。
一口にプログラミング言語といっても、実に多種多様です。C#はその中の一つです。
その他のプログラミング言語
すでに述べた通り、プログラミング言語には実にたくさんの種類があります。(表0-1参照)その中でも、C#は、その一つです。
| 言語名 | 特徴 |
|---|---|
| C | 主流言語の中で最も歴史がある言語。OSや組み込みシステムなど低レベル開発の基盤として今も現役で使われる。 |
| C++ | C言語を拡張してオブジェクト指向を取り入れた言語。ゲームエンジンや高速処理が求められる場面で広く利用される。 |
| C# | Microsoft社が開発した言語。Windowsアプリ・Webサービス・Unity(ゲーム開発)など幅広い用途に使われる。 |
| Java | Oracle社が開発した言語。Androidアプリや企業の基幹システムで長年にわたり広く採用されている。 |
| Python | シンプルで読みやすい文法が特徴。AI・機械学習・データ分析の分野で非常に高い人気を誇る。 |
| JavaScript | Webブラウザ上で動作する唯一の言語。Webページへの動的な演出からサーバーサイド開発(Node.js)まで幅広く活用される。 |
| Kotlin | JetBrains社が開発し、GoogleがAndroidの公式言語として採用。Javaとの互換性を持ちながらより簡潔に書ける。 |
| Swift | Apple社が開発した言語。iPhoneやMac向けアプリ開発の主流言語であり、Objective-Cの後継にあたる。 |
| Ruby | 読みやすさを重視した日本発の言語。WebフレームワークRuby on Railsとともにスタートアップ界隈で人気が高い。 |
| Rust | Mozilla発の言語。メモリ安全性と高いパフォーマンスを両立し、システムプログラミング分野で注目されている。 |
コンピュータ言語の役割
マシン語と高級言語
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#言語には、ネームスペースという概念があり、ここで取り上げるサンプルは、日にちによって、ネームスペースを分けています。サンプルは、プロジェクトとネームスペースが同じ名前になっています。プロジェクトの名前は、サンプルソースコードの先頭に書かれていますので、それに従ってください。
また、開発環境として想定しているのは、VisualStudio2026と呼ばれる、マイクロソフト純正の開発環境です。VisualStudio2026の使い方および、プロジェクトの作り方、プログラムの実行方法については、こちらを参照してください。