C Sharp
C#(しーしゃーぷ)とは、マイクロソフトが開発した、どちらかというとオブジェクト指向寄りだが、あらゆる方向を向いているプログラミング言語である。 もともとは強い静的型付け言語であったが、いつのまにか(C#4.0から)動的型付け言語の特性も備え、旧来の形式張った分類法ではどうしたらいいのか困るプログラミング言語でもある。
目次
概要
C#は、常に日陰者であったボーランド社のTurbo Pascalを流れを組むプログラミング言語であり、Object Pascal(Delphi)に続くTurbo Pascal一族の正当な後継言語である。
パッと見た構文はJavaに似ているように見えるが、これは「Javaのパクリだから簡単だよ」と世に溢れるJavaプログラマーを騙し、C#のプロジェクトに誘い込むための罠である。あくまでJava風なのは見た目だけであり、構文や掟は基本的にPascalであるため、騙されたJavaプログラマーは一時的に精神錯乱状態に陥るが、そこで脱落しなかった多くの者はPascal教へ入信することとなる。
生い立ち
遙か昔、ボーランド社が売っていたTurbo Pascal、Delphiはアンダース・ヘルスバーグによる洗練された設計と圧倒的なポテンシャルを持っていた。にも関わらずサードパーティ製開発ツールであるがため常に二番手の日陰者であった。
そのボーランド社で1994年頃、創業メンバーと会社乗っ取りを目論む取締役会との派閥闘争が勃発。この派閥闘争は創業メンバーの敗北に終わり、フィリップ・カーンやアンダース・ヘルスバーグ、ポール・グロスをはじめとする創業初期メンバーと、その関連部署(主に開発ツール部門)の社員が全員クビになるという大事件が発生した。
それを知ったビル・ゲイツが「私の味方になれば世界の半分をやろう」と言ったかどうかは知らないが、ボーランドをリストラされたほぼ全員がマイクロソフトに再就職し、復讐を誓ったという。そしてDelphiとVisual Component Library (VCL)を魔改造したC#と.NET Frameworkが生まれた。
その当時、マイクロソフトには創業の祖であり同社にとって創造主、いわゆる神であるポール・アレンとビル・ゲイツの作ったMS-BASIC、その流れを組み、かつMS-DOSの生みの親であり第二の神であるティム・パターソンが指揮したVisual Basicが主力であった。にも関わらず、それらを全て捨てるという決断を下すほどTurbo Pascalの一族は圧倒的な完成度であったという。
以上のような経緯もあり、公開当初のC# 1.x系はDelphiの見た目を変えただけの方言という感じであったが、当時大流行していたJava風に実行ラインタイムを仮想マシン、メソッドポインタをデリゲートなどと各種用語の呼び名も刷新することで「まるで新しいもの」と思わせた細かいマーケティング戦略も功を奏し、Delphi以前を知らない多くの人はコロッと騙された。
なお、C# 2.0から壮絶な進化が始まり、2012年3月31日時点での最新バージョンであるC# 4.0は、ほぼ初期(C# 1.x)の原型をとどめない形となっている。
進化の系譜
C# 1.0
ほぼDelphiそのもの。
C# 1.2
コメント形式が変わった。
C# 2.0
- イテレーター
- 匿名メソッド
- ジェネリクス
- パーシャルクラス
- Nullable
- アクセサのアクセスレベル
- staticクラス
- namespace alias qualifier
- extern alias
- pragma
- Conditional
- 固定長配列
- デリゲートの Covariance/Contravariance
C# 3.0
- LINQ
- 型推論
- 拡張メソッド
- ラムダ式
- 初期化子
- 匿名型
- 暗黙型付け配列
- 自動プロパティ
- パーシャルメソッド
C# 4.0
- dynamic
- オプション引数
- 名前付き引数
- ジェネリックの共変性・反変性
- COM 相互運用時の特別処理
C# 5.0
- 非同期処理
- Caller Info 属性
- foreach の仕様変更