プログラミング言語マスターへの道


C#

C#(シーシャープ)はマイクロソフト社によって同社の.NET戦略の一環として開発されたオブジェクト指向プログラミング言語です。
市販アプリケーションやビジネスソフトウェアの開発現場で 最も広く使われてきている言語は C と C++ でした(90年代の話)。この二つの言語は非常に細かなコントロールを行える柔軟な言語ですが、柔軟性と引き換えにソフトウェア開発が難しいという欠点があります。
CやC++を使用してアプリケーションを開発するには「Visual Basic」などの言語を使用して同等のものを作る作業に比べ、開発期間が長くなります。

C#の始まり

CやC++プログラマは、基礎となるプラットフォームの機能にアクセスできるパワーを持ち、高速なソフトウェアの開発が行え、既存のソフトウェアのと統合も可能で、更に必要があれば低レベルのコーディングもできる環境を望んでいます。
このようなことから、Microsoft は C#(しーしゃーぷ)と呼ばれる、新しい言語を作成しました。C# は C++ のパワーと柔軟性を持ち、 同時に Visual Basic などの生産性の高さも持ち合わせる言語です。開発にはボーランド社のTurbo PascalやDelphiを開発したアンダース・ヘルスバーグを筆頭に多数のDelphi開発陣が参加しています。

C#の組み込み開発

しばらくの間、Windowsといえばパソコン用OS で、Microsoft主導でWindows アプリケーション開発用に作られた C#(.NET Framework)もまた、パソコン用(特にビジネスアプリケーション開発用)なイメージがありました。
ところが最近では、Microsoftも組み込みシステム向け製品開発にも力を入れていて、.NET Frameworkを用いた組み込み開発も可能になっています。
一口に組み込みシステム向けといっても要求(据え置きか携帯型か)や、筐体サイズや搭載可能なCPU等)に応じて様々な製品が用意されています。

もっとC#

C#は共通言語基盤(共通言語ランタイムなど)が解釈する共通中間言語にコンパイルされて実行されます。
基本的な書式がC言語風になっているため、初見の構文はサン・マイクロシステムズ社によるJavaに近いといわれますが、実際の構文はDelphiに準じていて、C言語風ということもあり、C++ Builderの独自拡張構文に極めて近い内容となっています。
また、プロパティやデリゲートなどDelphiの構文そのまま、もしくは名称変更しただけの機能となっているものが多くあります。

C#の機能

自動ボックス化、デリゲート、プロパティ、インデクサ、カスタム属性、ポインタ演算操作、構造体(値型オブジェクト)、多次元配列、可変長引数などの機能を持ちます。
また、Javaと同様に大規模ライブラリ、プロセッサ・アーキテクチャに依存しない実行形態、ガベージコレクション、JITコンパイルによる実行の高速化などが実現されています。もっともこれらはC#の機能というより.NET Frameworkによるものです。

C#の開発言語(1)

C#はNET構想における中心的な開発言語であり、XML WebサービスやASP.NETの記述にも使用されます。
他の.NET系の言語でも記述可能ですが、生産性・機能においてC#が最も優れるとされています。マイクロソフトの統合開発環境では、Microsoft Visual C#がC#に対応しています。

C#の開発言語(2)

C#は共通言語仕様のCLSによって、他のCLS準拠の言語(Visual Basic .NETやVisual C++ (C++/CLI)など)と相互に連携することができます。他言語で記述されたクラスを継承することも、またその逆も可能です。
様々な意味において、基盤であるCLIの機能をもっとも反映している言語であるといえます。C#にある組み込み型のほとんどは、CLIフレームワークに実装されている値型と対応しています。しかし、C#の言語仕様はコンパイラのコード生成については何も言及していなません。
つまり、CLRに対応しなければならないとか、共通中間言語 (CIL) などの特定のフォーマットのコードを生成しなければならないとかいうことは述べられていないのです。そのため、理論的にはC++やFORTRANのように環境依存のマシン語を生成することも可能です。
しかし、現在存在するすべてのC#コンパイラはCLIをターゲットにしています。

CやC++からの改良点

C#では、CやC++と比較して様々な制限や改良が加えられています。下記にその一例をまとめてみました。