C#と.NET

C#というプログラム言語に興味が出てきたので、関連の情報を探してネットをさまよっている。

一番わからないのが、一口で言って.NETとは何かということだ。C#は.NETのネイティブな開発言語なのらしいが、肝心の.NETが一体何をするためのものなのかを一言で説明した記事に出会わない。間違っているかもしれないがわかったと思ったことをまとめると次のようになる。

  1. .NETとはOSの上に被せたもうひとつのOSのようなもので、パソコンの機械語ではなくCLIという中間言語で動作する。このため、.NETで動くように開発されたプログラムは、C++で開発されたライブラリをVisual Basic やC#で何の変更もせずに利用することができる。
  2. Javaも中間言語を出力し、Javaの中間言語をJava仮想マシンで実行するため、どんなOSであっても仮想マシンがインストールされていれば動かすことができる。しかし、他の言語のデータやライブラリをそのまま利用するという芸当はできなかった。.NETはプログラムの実行の環境を提供するだけでなく、プログラム言語間のデータの互換性も実現する。
  3. .NETはXMLデータの読み書きができる。XMLをディスクからだけでなくネットからも送受信することができるため、クラウドコンピューティングが楽になる。
  4. .NETはメモリ管理などの面倒な作業や、セキュリティに関する作業もやってくれるので、プログラムする側はアルゴリズムだけに集中できる。

要するに今までの技術と違うのは、言語間のプログラムやデータの互換性を実現できること。また、ネットワークを介したプログラム間の通信を簡単に実現出来ることというところだろうか。

前回の記事で書いたように、プログラム言語の表記はそれぞれでかなり違うが、できあがったプログラムの動作は同じだ。プログラムというブラックボックスに、キー入力という入力が与えられると、ディスプレーへの表示という出力が得られる。ひとつのプログラムからの出力を別のプログラムの入力につなぐことができれば、全く別のプログラム言語で開発したライブラリをそのまま利用することができる。

このときに最も大事なのは、出力されたデータを入力につなぐときのインターフェースだ。実は、これはUnixでは普通に行われている。データをキャラクタ・ストリームという文字列に統一したため、ひとつのプログラムのデータを別のプログラムにパイプラインでつないで処理する事ができる。このため、大きなプログラムを開発しなくても、単機能のコマンドをつなぎ合わせることによって複雑な処理をすることができる。

.NETはデータをXMLで記述したオブジェクトという規格に統一することで、プログラム言語間やネットワーク間のインターフェースを作ろうとしているのではないだろうか。オブジェクト指向プログラミングのおかげで、プログラムの部品化ができるし、XMLを使って異なるプログラム間のインターフェースが作れる。Unixの文字列の処理で行われていた小さいプログラムを組みあわて目的の作業をおこなうというやり方を、もっと、いろいろな構造を持つデータや高度なグラフィックスでもやれるような時代がきているのだろう。
[PR]
by tnomura9 | 2010-01-01 08:20 | C# | Comments(0)
<< C#のキーワード 2010年の記事 >>