C#の誤解
僕はC#をメインに使っているが、この言語、非常に誤解の多い言語だ。
マイクロソフト製なのだが、マイクロソフトがやんちゃしていた末期に登場したためだと思う。
(その後、段々と綺麗なマイクロソフトになっていくのだけど)
よくある誤解を挙げてみよう。
1.C#の互換コンパイラとか基盤とか作っても、いつかMSにサブマリン的な事されて訴えられるんじゃないの?
これは、OracleのJavaに関する動きも原因の一つだと思う。
MSがJava VMを開発した所、独自性が大きいという事で訴えたり。AndroidのJava互換クラスライブラリを「API設計が同じ」という理由で訴えたり。
(個人的には、MS攻撃してる暇があったらOracleを攻撃した方がいいと思うよ、マジで)
そういった前例があるから、C#も同じ様な事が言われる。
.NET互換の共通言語基盤を実装したMonoというものがあるけども、これもいつかMSに訴えられるだろうから使っても無駄、なんて論調があったり。
実際は真逆だ。
C#はISO標準となっており、そんなOracleみたいな事は未来永劫起こらない。というより、実はMSはMonoを支援している。
しかも、.NET絡みものは結構ソースコードが公開されている。
2.C#ってどうせWindowsとVisual Studioの組み合わせでしか使い道ないっしょ?
今をときめくUnityはC#が利用可能言語の1つになっている。
あまり有名じゃないけれど、プレステのSDKに採用されたという実績もあったりする。
イントラネット向けのWebアプリはASP.NETが使われている事がちょくちょくあるが、そういった際、大体の場合はC#だ。(VB.NETの場合もあるかも知れないけど)
結構色んな所で使われているのだ。
違う。
Javaと似ているのは、どちらもC言語を元にした言語だからだ。そして、どちらもオブジェクト指向だからだ。
細部を見よう、結構違う部分がある。
実はObject Pascalとそっくりな言語なのだ。パクりではなくそっくりと言っているのは、言語設計者が同じ人(アンダース・ヘルスバーグ)だから。
4.細かいメモリ管理出来ないよね?
出来る。ポインタが使える。
unsafeを指定して、ガベージコレクタにいじられない様にメモリを確保して、というやや煩雑な手順は混ざるけど。
C#は.NET中のマネージドな言語としては、MSが最も推進している言語だ。
現状MS絡みの開発で使えないケースはほぼ無いし、これからも恐らくは無い。
6.でも、C++使わないと速度遅いんじゃない?
確かに遅いケースが多い。
まあ、遅いケースが多い事には違いないだろうけど、そんなのは使い分けだ。
遅い事が悪なら、C++だってCより遅くなるケースがあるだろうし、Cだってアセンブラより遅いケースがあるだろう。そんな事を言っていたキリが無い。
そんなわけで、C#は安心して使える言語だよ!