このページの本文へ

前へ 1 2 3 4 5 6 7 8 次へ

.NET FrameworkとCommon Language Runtime

インサイドMicrosoft.NET(その2)

2000年10月25日 21時24分更新

文● Tetsuya Hara and Peter Hamilton

  • この記事をはてなブックマークに追加
  • 本文印刷
 

 今回の「.NET」では、新しいプログラミング言語「C#」が登場したのも大きな特徴だ。ここでC#が登場した理由を推測してみると、「.NET」の環境自体が言語非依存なので、Visual BasicでもC++でもいいわけだ。では、なぜ新しいプログラミング言語が必要になったかというと、1つはC++での開発が難しいためと、不必要な機能があったからである。

 C++からC#で外された代表的な機能としては、「多重継承」「テンプレート」「ポインタ」などが挙げられる。たとえば「ポインタ」に関しては、使用済みのメモリを解放し忘れるというメモリ管理上の問題があったからである。特にサーバ側では、メモリを使っていないにもかかわらず占有してしまうと、リソース上の問題とセキュリティの問題としては非常に好ましくない。だから、バグの原因になるポインタを外そうということになった。

 「多重継承」の例として、C++でよく使われる「AcitveX Template Library(ATL)」がある。ATLでは、たとえばCOM+/COMのライフタイム管理やリファレンスカウント、あるいはアグリゲーション、スレッディングモデルなどの開発を簡単にするために、テンプレートと多重継承などがよく使われているが、それらの処理は、今後はすべてCommon Language Runtimeが自動的に行なう。つまり、ATLで行なっている処理や機能は、必要なくなってしまうから、外されることになったというわけだ。

 開発者にとって、いままで開発コストが掛かっていた部分の機能をシステムが標準で持つことによって、容易になり負担が軽減されるということと、バグを発生させる可能性がある機能が取り除かれたというのがC#であろう。そして重要なのは、WFC自体もC#で書かれているということだ。

 では、なぜMicrosoftは、C++のバージョンアップを行なわなかったのだろうか。1つの選択肢としては考えられただろうが、C++自体はANSIの標準規格になってるため、Microsoftが勝手に機能拡張するというのには問題がある。C++は標準として手を加えず、それをベースにした新しい開発言語を作ろうということになったわけだ。さらに、多くのWindowsプログラマが、C++をスキルとして持っているということも理由の1つと考えられる。

 そして、たとえばSun Microsystemsが、Javaですべてを実現しようとしているのに対し、Microsoftは、アプリケーションによって、あるいはサービスによって、さまざまな言語を使い分けることが現実的と考えている。そもそも、1つの開発言語で何でもできてしまうのならば、今までの歴史のなかで、多くの開発言語が出てきた理由が説明できなくなる。どうして多くのものが出てきたかというと、それぞれの言語には長所と短所があり、しかしそれを使い分けることで、より現実的な開発ができるからである。Microsoftは、Visual Basicプログラマに対しては、常に容易な開発環境を提供するが、Visual Basicだけでは済まない部分があるので、その部分はC++やC#で補おうという考え方として尊重しているわけである。

 一般の報道にあるような、「C#はJava対抗言語だ」という考え方も、決してないことはない。しかし、別にC#がなくても、Visual BasicもC++もある。しかし、Microsoftは各言語を組み合わせて開発するスタイルを尊重しており、そのなかの1つの選択肢として新たにC#が加わったと考えてもよいだろう。

前へ 1 2 3 4 5 6 7 8 次へ

カテゴリートップへ

アスキー・ビジネスセレクション

ASCII.jp ビジネスヘッドライン

ピックアップ