プログラミング言語を何にするのか?
プログラム言語とは、コンピュータに仕事をさせるためのいわば命令書のようなものである。ソフトウェアを開発するにあたっては、このプログラミング言語は欠かせないものだ。読者の皆さんも、さまざまなプログラミング言語に触れているのではないだろうか。
実際のシステム開発においては、ハードウェアやOS、そしてプログラミング言語などを、決定していく必要がある。それぞれのレイヤで選択肢が存在し、その選択によってその後の開発が大きく変わってくる。
本連載ではその中でも「プログラミング言語を何にするのか?」という点にフォーカスして解説していくことにする。
プログラミング言語と一口にいっても、その数は非常に多い。ざっとあげてみると、JavaやC++などの基幹系システムに利用されるものから、最近人気が出ている「Lightweight Language(以下、LL)」と呼ばれるPHPやPerl、Python、Ruby、またメインフレームで利用されているCOBOL、日本語で記述するひまわりやなでしこなど、あげていけばキリがない。
これらのプログラミング言語にはそれぞれ異なった特徴があり、見方によってさまざまな分類が可能である。例えば、機械語やアセンブラ言語などのようなハードウェアよりの低級言語と、現在一般的に使われているもので人間にとってわかりやすい高級言語がある。
簡単に分類の例をあげてみれば
- 記述レベル
-
- 手続き型と非手続き型
-
- スタック型(手続き型)
- 関数型(非手続き型)
- 論理型(非手続き型)
- グラフィック型(非手続き型)
- 問い合わせ(非手続き型)
- そのほかの分類
-
表1:分類の例
という項目があげられる。しかしこれらはほんの一例にすぎない。
例えば、オブジェクト指向言語(object-oriented programming language、OOPLと略されることもある)という分類をみていけば、まず大きく2つに分けることができる。JavaやRubyなど元々オブジェクト指向言語として設計された「純粋なオブジェクト指向言語」と、非オブジェクト指向言語であるものにオブジェクト指向の機能をつけたC++などの「ハイブリッド型オブジェクト指向言語」と呼ばれるものである。このようにそれぞれがさらに詳細な分類に分かれていくのである。
また、そのプログラミング言語の特性から、用途による分類も可能である。例えば、事務処理用のものの代表例としてはCOBOL、計算用途としてはFORTRAN、汎用的なものとしてはC、また学校などではBASICなどである。
このように分類していくことによって、その言語の大きな特徴が見えてくるだろう。また、その歴史的背景からもプログラミング言語の特徴が見えてくる。言語の歴史については、その系譜図が下記のWebサイトにあるので参考になる。
しかし、ソフトウェア開発におけるプログラミング言語の選択は、このような分類から選択するわけではない。では、プログラミング言語の選択基準としてはどのようなものがあるだろうか。