C#の誤解

僕はC#をメインに使っているが、この言語、非常に誤解の多い言語だ。

マイクロソフト製なのだが、マイクロソフトがやんちゃしていた末期に登場したためだと思う。

(その後、段々と綺麗なマイクロソフトになっていくのだけど)

よくある誤解を挙げてみよう。

 

1.C#の互換コンパイラとか基盤とか作っても、いつかMSにサブマリン的な事されて訴えられるんじゃないの?

これは、OracleJavaに関する動きも原因の一つだと思う。

MSがJava VMを開発した所、独自性が大きいという事で訴えたり。AndroidJava互換クラスライブラリを「API設計が同じ」という理由で訴えたり。

(個人的には、MS攻撃してる暇があったらOracleを攻撃した方がいいと思うよ、マジで)

そういった前例があるから、C#も同じ様な事が言われる。

.NET互換の共通言語基盤を実装したMonoというものがあるけども、これもいつかMSに訴えられるだろうから使っても無駄、なんて論調があったり。

実際は真逆だ。

C#はISO標準となっており、そんなOracleみたいな事は未来永劫起こらない。というより、実はMSはMonoを支援している。

しかも、.NET絡みものは結構ソースコードが公開されている。

 

2.C#ってどうせWindowsVisual Studioの組み合わせでしか使い道ないっしょ?

今をときめくUnityはC#が利用可能言語の1つになっている。

あまり有名じゃないけれど、プレステのSDKに採用されたという実績もあったりする。

イントラネット向けのWebアプリはASP.NETが使われている事がちょくちょくあるが、そういった際、大体の場合はC#だ。(VB.NETの場合もあるかも知れないけど)

結構色んな所で使われているのだ。

 

3.ああ、C#ってJavaの真似した言語か。

違う。

Javaと似ているのは、どちらもC言語を元にした言語だからだ。そして、どちらもオブジェクト指向だからだ。

細部を見よう、結構違う部分がある。

実はObject Pascalとそっくりな言語なのだ。パクりではなくそっくりと言っているのは、言語設計者が同じ人(アンダース・ヘルスバーグ)だから。

 

4.細かいメモリ管理出来ないよね?

出来る。ポインタが使える。

unsafeを指定して、ガベージコレクタにいじられない様にメモリを確保して、というやや煩雑な手順は混ざるけど。

 

5.結局Windowsの開発もC++に戻るでしょ。

C#は.NET中のマネージドな言語としては、MSが最も推進している言語だ。

現状MS絡みの開発で使えないケースはほぼ無いし、これからも恐らくは無い。

 

6.でも、C++使わないと速度遅いんじゃない?

確かに遅いケースが多い。

でも、C#の方がC++より早い処理もあったりする。

まあ、遅いケースが多い事には違いないだろうけど、そんなのは使い分けだ。

遅い事が悪なら、C++だってCより遅くなるケースがあるだろうし、Cだってアセンブラより遅いケースがあるだろう。そんな事を言っていたキリが無い。

 

そんなわけで、C#は安心して使える言語だよ!