2011/04/03

二大プログラミング言語

プログラミング言語には、いろいろな分類があります。
  • 低級言語(コンピュータに近い言語) vs 高級言語(人間が理解しやすい言語)
  • スクリプト言語(小規模向け) vs プログラミング言語(大規模向け)
  • インタープリト(interpret) vs コンパイル(compile)
高級 プログラミング言語は、大きく次の3つに分類されると考えています。
  • 構造化プログラミング言語(C、Pascal、Fortran、BASIC、Perlなど)
  • オブジェクト指向プログラミング言語(Java、C++など)
  • その他(COBOL、Lispなど)
構造化プログラミング言語に属する言語が最も多く「順次処理」「反復処理」「条件分岐」が構造化プログラミングの特徴とされています。これに加えて、オブジェクト指向の考え方を導入したものが、オブジェクト指向プログラミング言語になります。
プログラミングをやってみたいが、どの言語から始めたらよいかという問い合わせをよく見かけます。これには正解はないのですが、2つだけに絞るなら、C/C++言語とJava言語をお勧めします。なぜなら、これらのプログラミング言語のうち、C/C++とJavaは特別な存在だからです。

C/C++にはポインタという概念があり、ハードウェア寄りの知識が要求されます。また多くのOS(オペレーティングシステム)はCで開発されている関係でCから使用できるライブラリが多くあります。そのような性格を持つ構造化プログラミング言語は他にはあまりありません。Javaほどではないと云え、#ifdef~#endifマクロで複数OS対応のアプリケーションを開発できる場合も少なくありません。

次にJavaですが、プログラミング言語としての「Java言語」と、仮想マシンである「JavaVM」の2つの面を持っています。Java言語は分かりやすさ、メモリ管理の煩わしさを考慮し、多くの制約を科した言語仕様となりました。自由度が低く、マルチスレッドプログラミングを容易にした強みがあります。その反面、エンタープライズ向け(大企業向け)アプリケーションを開発するにあたっては、ガーベジコレクション、インタープリタとコンパイラの両刀使いであるJavaVMの知識も要求されます。Java言語の誕生時に「Write once, Run everywhere」と云うスローガンを掲げただけあって、複数OS対応のアプリケーションを容易に開発できるのも強みです。


一夜漬けの経験も許されるなら、私はC、Pascal、Fortran、BASIC、Perl、PHP、Ruby、Java、C++、COBOL、Lispプログラミング言語を経験済みです。でも、いくつの言語を知っているのかは、あまり重要ではありません。新しい物好きのソフトウェア開発者にしてみれば、C/C++とJavaは共にレガシーという見方もありますが、我々に多くのことを教えてくれる存在であることには間違いなかろうと思います。この2つの言語を出発点にし、他のさまざまな言語を学ぶことが比較的簡単にできると考えているからです。

時代はリッチクライアントサーバアプリケーション(Webアプリケーション)、さらにクラウドと流れていきますが、エンタープライズ向けアプリケーションの開発基盤としては、C/C++(.NET Framework)とJava(Java SE/Java EE)の2大勢力は当面続くのではないでしょうか。またAndroidの台頭もJavaの存在を後押ししていますね。

0 件のコメント:

コメントを投稿