.NET/C#概要 -これまでの言語-

ホームC#プログラミング応用講義 > これまでの言語

目次

講義概要

入門講座を読み終えてここへ来た方も多いと思います。この講義はどのようなものなのか説明します。

入門講座はとにかく Windows アプリケーションを作成できるようになることを目的としました。そのため、相当多くの部分を省略し ています。
初めて C# 言語を学ぶ方には手っ取り早く Windows アプリケーションの作成ができて有益であると思いますが、入門講座だけでは物足りない方も多いと思います。

この講義ではその部分を補修していきたいと思います。よって、この講義には入門講座の知識すべてが必要となると考えていいでしょう。
重なる部分もありますが、この講義では深い理解をしていきたいと思いますのでぜひ読んでください。

この講義が完成するのがいつになるかわかりませんが、入門講座とセットで C# 言語に対する深い理解を身につけられるようにしたいと思っています。

また、この講義では入門講座のように常にわかりやすく実践的なサンプルばかりではありません。わかりにくくなったら入門講座に戻ったり、ちょっと休んだり してください。
この講義を習得していくことで、私を含む初心者が一歩足を伸ばせるような講義にしたいものです。

Microsoft.NET テクノロジは深いもので、私のような未熟者に講義できることではないかもしれませんがよろしくお願いします。

C言語

.NET/C# を理解するには残念ながらそれ単独を学べばいいというわけではありません。.NET テクノロジ、C# 言語の登場はそれ以前の多くのプログラミング歴史にのっとった必然のものです。

プログラミング歴史という言葉が出てきましたが、その幕を開けるのは C 言語であるといえます。それ以前にも多くの言語が登場している とはいえ、ここでそれらを論じる意味はありません。

C 言語は簡潔かつ強力という点で大変人気を呼びました。その影響で今でもまだユーザは多い ですし、C 言語を使える人の数はプログラマの大半を占めるといえます。

しかし、ここで重要な定理を述べますが、「時代の進化とともにプロジェクトは巨大化します」。

この定理がすべての言語を進化させていきました。C 言語も例外ではありません。徐々にですが確実に、巨大なプログラムには対応できなくなりました。
大きなプロジェクトになるとその全体を把握することは非常に難しくなります。

それで始めて、「オブジェクト指向」という手法が生まれるのですが、これに関してはのちのちやることにします。

C++

C with class」 と呼ばれた言語があります。C 言語に class という概念をくっつけたものです。それが今の「C++」です。

C++ はオブジェクト指向であるため、大きなプログラムに対応できました。現に今最も広く利用されているのは C++ です。
しかし、C++ をやったことのある人はわかると思いますが、難易度が非常に高いのです。

言語を習得するのに非常に時間がかかり、難しいゆえにその管理が大変です。
C++ は他に欠点がないともいえますが、難しい・管理が大変という点があまりにも大きいのです。

その難しい・管理が大変という点の多くはポインタの概念やメモリ管理という点です。この点が解決できれば、C++ のパワーオブジェクト指向は 問題ないのですからそのまま残してもいいのです。強力になれば申し分ないですが、C++ でできないことはないといわれるほどパワーがあるので、パワーはもう望んでいませんでした。

Java

ここで別な流れが入ってきました。それはインターネットの普及です。

インターネットは数多くのプラットフォームを結んでいますから、ある CPU 用にコンパイルされたマシンコード(機械語)は別の CPU では動きません。ここで新たな重要要素に加わったのは「どこでも動く」ということです。

ここでのどこでも動くというのは必ずしもパソコンだけではありません。皆さんの中で携帯電話を持っている方は多いと思いますが、その携帯に搭載されたソフ トは「Java アプリ」と呼ばれるのをご存知と思います。

それが Java 言語です。この言語は
Write Once , Run anywhere.(一度書いたらどこでも動く)
ということが一番の売りです。

マシンコードではなく、バイトコード(中間言語)を生成することでどこでも動くプログラムを 実現しました。その中間言語は JavaVM(バーチャルマシン)上でコンパイルしなおされます。そのため、「遅い」 というデメリットがあります。

さらに、Java はサン・マイクロシステムズ社によって開発されたため、世界中の90%以上のシェアを占める Windows との連携が非常に甘いという点ももの足りません。
ただし、Java の中間言語+バーチャルマシンの考え方は非常に画期的で、評価するに値します。

C#

C++ のパワーとオブジェクト指向、Java の動作性能を持った言語があれば、非常に有益ではないですか?
そうして、C# 言語が登場するのです。

C# 言語は独自の機能の多くあるものの、第一の特徴は「C++」「Java」の仕様を受け継いでいるという点にあります。
もし、まったく違うものを作ってしまったら例え両者のメリットを含んでいても移行・習得に非常にコストがかかります。

ただし、C# 言語は現在単独で言語として認めるよりも、.NET とセットで考えなければ なりません。C# 言語の今後は .NET 戦略にかかっているといえます。
.NET 戦略については今後いつでも考えておかなければならない問題ですので、この講義の中で多く登場してくるでしょう。

ただし、C# 言語は VisualBasic ほどツールと密着してないため、将来性は非常に高いといえます。 Microsoft が作り管理している言語とはいえ、多くの外部企業・団体によって、.NET 自体がサポートされつつあるためその将来性を心配する必要はなくなっています。(登場当初はその点を危ぶむ声が非常に多かったですが...)

C# 言語はこれまでの言語のよい点をとり、独自の機能を実装した次世代言語であることを認識すればよいでしょう。


[ ステップアップC# ] [ C#プログラミング応用講義 ]