このテーマはプログラム言語の特徴を私なりの解釈で書いていこうと思います。
これを書こうと思ったのは、営業さんにC#の名前の由来を説明して技術者を見るときのポイントを教えたら凄く感謝されたので、結構役に立つ知識なのかもしれないなぁと思ったからです。
もちろん自己満足の世界ですが、少しでも読んでいる方のお役にたてれば幸いです。
ということで、現時点で一番好きなプログラム言語
C#
の特徴などを自分なりに解釈して書きます。
ところで、C#の由来って知っています?
C言語の兄弟っぽいのは名前から想像がつくと思います。
C++はC言語を進化してオブジェクト指向をくっ付けたものです。
ところが、C#はC++を進化させたはずなのに++が消えています。
何故#になったのでしょうか?
実はC#の「#」は
++++
のことなのです。
すなわち
C#はC++++
なのです。
え?全然#じゃないって。
いいですか。
++
++
とするとどうですか?
#っぽくないですか?
これがC#の名前の由来です。
アンダース・ヘルスバーグ氏が語っているものです。
(由来はこれだけではないのですが、この話が一番受けました。)
さて、名前の由来は分かったでしょうか?
ところで、C++はC言語をただ進化させたのではなく、オブジェクト指向の原型である「Simula」を参考にして生まれた言語です。
なので、C++の親はC言語とSimulaになると思います。
そう考えるとC#の親はC++とJavaになります。
ただ、C++よりJava寄りである感が否めません。
(ちなみに、Javaの親はC++とSmalltalkになります。)
では、C#の特徴をここに書きます。
・C++やJavaを参考にして出来たオブジェクト指向型言語である。
・Javaと同様多重継承を禁止している。(C++では多重継承が出来たのですが、プログラムが煩雑になるためJavaでは多重継承を禁止しました。その代わりにインターフェースが存在します。)
・Javaを相当意識しているのか、構文や命令がかなりJavaに似ている。
・C++から引き継いだポインタ型がつかえる。(ただし、強い制限がある。)
・スタック領域でクラスを生成する仕組みが存在する。そのため一部の処理を高速化することが出来る。(構造体のことです。)
・IDE(統合開発環境)がかなり強化された。画面デザインはVBのように開発することが出来るため開発効率がかなり上がっている。
・C++にあったDLL地獄がかなり緩和された。(DLLの管理が楽になっている。)
・Javaよりは高速に動作するが、C++の速度を実現することは出来ない。(JavaもC#も中間言語のためC++のようなネイティブ言語の速度は出せない。)
・ポインタを安全に使うメソッドが用意されている。(デリゲート)
・デリゲートがあるためJavaと違い、インターフェースが極端に少ない。
・C#は構造体やポインタが使えるためオブジェクト指向開発以外にも使える。(逆に完全オブジェクト指向開発にすると良さが無くなる。)
・・・等
色々書きましたが、簡潔に説明すると
Javaからは
使いやすいオブジェクト指向
を継承して、C++からは
ポインタ
を継承したものがC#という位置付けになるかと思います。
なので、Javaユーザーはポインタを除けは違和感無く入れると思います。
しかし、C++ユーザーはオブジェクト指向の理解がないとC#に入るのは難しいと思います。
(これは、オブジェクト指向寄りの言語であるためです。)
| このブログのURL
|この記事のURL