「C Sharp」の版間の差分
imported>Administrator 細 |
imported>Darkitten (誤字訂正) |
||
(6人の利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
− | '''C#'''(しーしゃーぷ)とは、[[マイクロソフト]]が開発した、どちらかというと[[オブジェクト指向]]寄りだが、[[関数型プログラミング言語]] | + | '''C#'''(しーしゃーぷ)とは、[[マイクロソフト]]が開発した、どちらかというと[[オブジェクト指向]]寄りだが、[[関数型プログラミング言語]]の要素を取り入れたり、もともとは強い[[静的型付け言語]]であったが、いつのまにか(C#4.0から)[[動的型付け言語]]の特性も備え、旧来の形式張った分類法ではどうしたらいいのか困るあらゆる方向を向いている[[プログラミング言語]]である。 |
− | + | C#のECMA Internationalによる標準規格名は「'''ECMA-334'''」である。 | |
− | C#のECMA | ||
C#と[[.NET Framework]]はイコールと思われていることが多いが、あくまでC#は特定の環境に依存しない[[プログラミング言語]]であり、ECMAなどの標準規格においても言語(ECMA-334)と動作環境([[ECMA-335]])は分離されている。 | C#と[[.NET Framework]]はイコールと思われていることが多いが、あくまでC#は特定の環境に依存しない[[プログラミング言語]]であり、ECMAなどの標準規格においても言語(ECMA-334)と動作環境([[ECMA-335]])は分離されている。 | ||
== 概要 == | == 概要 == | ||
− | C#は、常に日陰者であった[[ボーランド]]社の[[Turbo Pascal]] | + | C#は、常に日陰者であった[[ボーランド]]社の[[Turbo Pascal]](とくに[[Turbo Pascal 5.5]]の血が濃い)の流れを組む[[プログラミング言語]]であり、[[Object Pascal]]([[Delphi]])に続くTurbo Pascal一族の正当な後継言語である。 |
− | パッと見た構文は[[Java]]に似ているように見えるが、これは「Javaのパクリだから簡単だよ」と世に溢れるJavaプログラマーを騙し、C#のプロジェクトに誘い込むための罠である。あくまでJava風なのは見た目だけであり、構文や掟は基本的に[[Pascal]] | + | パッと見た構文は[[Java]]に似ているように見えるが、これは「Javaのパクリだから簡単だよ」と世に溢れるJavaプログラマーを騙し、C#のプロジェクトに誘い込むための罠である。あくまでJava風なのは見た目だけであり、構文や掟は基本的に[[Turbo Pascal]]であるため、騙されたJavaプログラマーは一時的に精神錯乱状態に陥るが、そこで脱落しなかった多くの者はPascal教へ入信し、[[プログラマー]]の悟りをひらくこととなる。 |
== 生い立ち == | == 生い立ち == | ||
遙か昔、[[ボーランド]]社が売っていた[[Turbo Pascal]]、[[Delphi]]は[[アンダース・ヘルスバーグ]]による洗練された設計と圧倒的なポテンシャルを持っていた。にも関わらずサードパーティ製開発ツールであるがため常に二番手の日陰者であった。 | 遙か昔、[[ボーランド]]社が売っていた[[Turbo Pascal]]、[[Delphi]]は[[アンダース・ヘルスバーグ]]による洗練された設計と圧倒的なポテンシャルを持っていた。にも関わらずサードパーティ製開発ツールであるがため常に二番手の日陰者であった。 | ||
− | + | その[[ボーランド]]社で1994年頃、創業メンバーと会社乗っ取りを目論む取締役会との派閥闘争が勃発。この派閥闘争は創業メンバーの敗北に終わり、[[フィリップ・カーン]]や[[アンダース・ヘルスバーグ]]、[[ポール・グロス]]をはじめとする創業初期メンバーと、その関連部署(主に開発ツール部門)の社員が全員クビになるという大事件が発生した。 | |
− | それを知った[[ビル・ゲイツ]] | + | それを知った[[ビル・ゲイツ]]が「私の味方になれば世界の半分をやろう」と言ったかどうかは知らないが、[[ボーランド]]をリストラされたほぼ全員が[[マイクロソフト]]に再就職し、復讐を誓ったという。そして[[Delphi]]と[[Visual Component Library]] ([[VCL]])を魔改造したC#と[[.NET Framework]]が生まれた。 |
− | + | その当時、[[マイクロソフト]]には創業の祖であり同社にとって創造主、いわゆる神である[[ポール・アレン]]と[[ビル・ゲイツ]]の作った[[MS-BASIC]]、その流れを組み、かつ[[MS-DOS]]の生みの親であり第二の神である[[ティム・パターソン]]が指揮した[[Visual Basic]]が主力であった。にも関わらず、それらを全て捨てるという決断を下すほど[[Turbo Pascal]]の一族は圧倒的な完成度であったという。 | |
− | 以上のような経緯もあり、公開当初のC# 1. | + | 以上のような経緯もあり、公開当初のC# 1.x系は[[Delphi]]の見た目を変えただけの方言という感じで、標準ライブラリも[[VCL]]そのもので[[バグ]]まで完全移植という代物であったが、当時大流行していた[[Java]]風に[[実行ランタイム]]を[[仮想マシン]]、[[メソッドポインタ]]を[[デリゲート]]などと各種用語の呼び名も刷新することで「まるで新しいもの」と思わせた細かいマーケティング戦略(いわゆる「[[リネーム商法]]」)も功を奏し、[[Delphi]]以前を知らない多くの人はコロッと騙された。 |
なお、C# 2.0から壮絶な進化が始まり、2012年3月31日時点での最新バージョンであるC# 4.0は、ほぼ初期(C# 1.x)の原型をとどめない形となっている。 | なお、C# 2.0から壮絶な進化が始まり、2012年3月31日時点での最新バージョンであるC# 4.0は、ほぼ初期(C# 1.x)の原型をとどめない形となっている。 | ||
25行目: | 24行目: | ||
== 進化の系譜 == | == 進化の系譜 == | ||
=== C# 1.0 === | === C# 1.0 === | ||
− | + | ほぼ[[Delphi]]そのもの。 | |
+ | * [[C Sharp/仮想関数|C#/仮想関数]] | ||
* [[C Sharp/プロパティー|C#/プロパティー]] - [[プロパティー]] | * [[C Sharp/プロパティー|C#/プロパティー]] - [[プロパティー]] | ||
* [[C Sharp/インデクサー|C#/インデクサー]] - [[インデクサー]] | * [[C Sharp/インデクサー|C#/インデクサー]] - [[インデクサー]] | ||
38行目: | 38行目: | ||
* [[ジェネリクス]] | * [[ジェネリクス]] | ||
* パーシャルクラス | * パーシャルクラス | ||
− | * | + | * [[C Sharp/null許容値型|null許容値型]] |
+ | * [[C Sharp/null合体演算子|null合体演算子]] | ||
* アクセサのアクセスレベル | * アクセサのアクセスレベル | ||
* staticクラス | * staticクラス | ||
48行目: | 49行目: | ||
* デリゲートの Covariance/Contravariance | * デリゲートの Covariance/Contravariance | ||
<ref>http://ufcpp.net/study/csharp/ap_ver2.html</ref> | <ref>http://ufcpp.net/study/csharp/ap_ver2.html</ref> | ||
+ | |||
=== C# 3.0 === | === C# 3.0 === | ||
* [[LINQ]] | * [[LINQ]] | ||
71行目: | 73行目: | ||
* foreach の仕様変更 | * foreach の仕様変更 | ||
<ref>http://ufcpp.net/study/csharp/ap_ver5.html</ref> | <ref>http://ufcpp.net/study/csharp/ap_ver5.html</ref> | ||
+ | |||
+ | == 記述例 == | ||
+ | * [[フィボナッチ数/C Sharp|フィボナッチ数の記述例]] | ||
== 関連項目 == | == 関連項目 == | ||
78行目: | 83行目: | ||
* [[プログラミング言語]] | * [[プログラミング言語]] | ||
* [[リネーム商法]] | * [[リネーム商法]] | ||
+ | * [[Cシャープ(音楽記号)]] | ||
== 参考文献 == | == 参考文献 == | ||
− | + | {{Reflist}} | |
+ | |||
== 外部リンク == | == 外部リンク == | ||
{{stub}} | {{stub}} |
2014年8月15日 (金) 15:54時点における版
C#(しーしゃーぷ)とは、マイクロソフトが開発した、どちらかというとオブジェクト指向寄りだが、関数型プログラミング言語の要素を取り入れたり、もともとは強い静的型付け言語であったが、いつのまにか(C#4.0から)動的型付け言語の特性も備え、旧来の形式張った分類法ではどうしたらいいのか困るあらゆる方向を向いているプログラミング言語である。 C#のECMA Internationalによる標準規格名は「ECMA-334」である。
C#と.NET Frameworkはイコールと思われていることが多いが、あくまでC#は特定の環境に依存しないプログラミング言語であり、ECMAなどの標準規格においても言語(ECMA-334)と動作環境(ECMA-335)は分離されている。
目次
概要
C#は、常に日陰者であったボーランド社のTurbo Pascal(とくにTurbo Pascal 5.5の血が濃い)の流れを組むプログラミング言語であり、Object Pascal(Delphi)に続くTurbo Pascal一族の正当な後継言語である。
パッと見た構文はJavaに似ているように見えるが、これは「Javaのパクリだから簡単だよ」と世に溢れるJavaプログラマーを騙し、C#のプロジェクトに誘い込むための罠である。あくまでJava風なのは見た目だけであり、構文や掟は基本的にTurbo 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の見た目を変えただけの方言という感じで、標準ライブラリもVCLそのものでバグまで完全移植という代物であったが、当時大流行していたJava風に実行ランタイムを仮想マシン、メソッドポインタをデリゲートなどと各種用語の呼び名も刷新することで「まるで新しいもの」と思わせた細かいマーケティング戦略(いわゆる「リネーム商法」)も功を奏し、Delphi以前を知らない多くの人はコロッと騙された。
なお、C# 2.0から壮絶な進化が始まり、2012年3月31日時点での最新バージョンであるC# 4.0は、ほぼ初期(C# 1.x)の原型をとどめない形となっている。
進化の系譜
C# 1.0
ほぼDelphiそのもの。
C# 1.2
コメント形式が変わった。
C# 2.0
- イテレーター
- 匿名メソッド
- ジェネリクス
- パーシャルクラス
- null許容値型
- null合体演算子
- アクセサのアクセスレベル
- 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 の仕様変更