2) | 言語プロセッサ |
言語プロセッサは、プログラム言語を翻訳、実行するプログラムであり、広義のOSに含まれるが、実際のところはミドルウェアに分類する方が実際に即している。
プログラム言語とは、人間側がコンピュータに仕事をさせるためのプログラムの文法のことであり、人間が使う自然言語に比べてより厳密に文法が定められていて、曖昧な部分はほとんどないのが普通である。
もちろん人間の使う自然言語がコンピュータがそのまま正確に理解できれば一番いいのだが、そうはいかないのである。
実際にプログラム言語を習得するのは、かなりの時間と手間がかかり、素人が簡単に実用的なプログラムを作成するというのは非常に困難である。
実際には、専門家が多数人手をかけてユーザーが実際に利用するアプリケーションをプログラム言語を使って開発するというのが現実である。
ここでは、実際に利用されているプログラム言語を分類してみよう。
プログラム言語の分類は、高水準言語、低水準言語に分ける方法と、言語プロセッサの種類で分ける方法などが考えられる。それらを考慮して分類したのが下の図である。
|
|
@ | 高水準言語と低水準言語 |
高水準言語とは、比較的人間の使う言語に近い言語であり、言語プロセッサとしてコンパイラ等の翻訳機能を持つ言語である。
低水準言語とは、機械言語もしくはそれと同等のアセンブラ言語を指し、ハードウェアに即した言語構成になっている。
人間が開発するには高水準言語の方が開発効率は高いが、低水準言語で開発したプログラムは一般に処理効率が高いのが特徴である。
|
|
A | 言語プロセッサ |
(1) | 機械言語 |
機械言語とは、2進コードで記述されたプログラムで、そのまま実行できるので言語プロセッサが不要である。
ただし、最初からこの形式でプログラムを作成するのはたいへん困難である。
|
|
(2) | アセンブラ言語 |
アセンブラ言語は、機械言語を記号化した言語であり、基本的に機械言語と同等である。
記号で記述したアセンブラ言語を機械言語に翻訳するプロセッサをアセンブラと呼ぶ。
この場合、翻訳といっても基本的には1対1の翻訳でしかない。
つまりアセンブラ命令1に対し、機械語命令1が生成されることになる。
下図は、翻訳元のプログラムの命令と翻訳後のプログラムの命令の関係の概念図である。
|
|
(3) | コンパイラ言語 |
コンパイラ言語は、比較的人間が習得しやすい英文と数式を主に使って記述する言語である。コンパイラ言語で記述されたプログラムを機械言語に翻訳するプロセッサをコンパイラと呼ぶ。コンパイラによる翻訳は、アセンブラと違い1命令に対して複数の機械語命令を生成するのが特徴である。
そのためコンパイラで翻訳した機械語プログラムは、アセンブラで翻訳した機械語プログラムに比べ、処理効率が劣ると考えられる。
|
|
下図は、翻訳元のプログラムの命令と翻訳後のプログラムの命令の関係の概念図である。
|
|
(4) | インタプリタ言語 |
アセンブラやコンパイラがプログラムを翻訳して機械語プログラムを生成するのに対し、インタプリタは、機械語プログラムを生成せず、実行時にプログラムを1行ずつ翻訳して機械語命令を生成し、即時に実行する仕組みになっている。
そのため実行時に翻訳することになるので他の言語プロセッサに比べると処理効率に劣ることになる。
webでよく使われるJavaScriptやPerlは、スクリプト言語と呼ばれるがこれもインタプリタ言語の一種である。 これらの言語は、機能的には本格的なプログラム言語に比べて少ないものの習得も容易で特にWebではHTMLと併用することでインタラクティブなWebページを作成できることから良く使われている。 |
|
(5) | ジェネレータ言語 |
このプロセッサは、RPG言語で採用されている方式で、必要なパラメータを設定したら、それに応じて報告書を作成するプログラムを作成してくれるプロセッサである。 | |
B | コンパイラ言語の種類 |
(1) | C言語 |
1972年にアメリカAT&T社のベル研究所でD. M. Ritchie氏とB. W. Kernighan氏によって開発されたプログラミング言語。 |
|
(2) | COBOL |
CODASYLが開発した事務処理用言語である。 文法は、規格化が完了しているので移植性に優れている。 汎用コンピュータでの事務処理ならばCOBOLが定番であったが、最近ではダウンサイジングが進み、汎用コンピュータの使用頻度が下がっていることと、COBOL自体がグラフィック命令を持っていないのでGUIに対応できないこと、また関数も持っていないことなどから使用頻度が下がっている。 |
|
(3) | FORTRAN |
IBMが開発した科学技術計算用言語である。 文法は、規格化が完了しているので移植性に優れている。 現在では、スーパーコンピュータの科学技術計算プログラムは、FORTRANで書かれている。 しかし、あまり汎用性がないので使用頻度は低い。 |
|
(4) | Java |
Sun Microsystems社が1995年に開発したオブジェクト指向言語。もともとインターネット環境や、PDA、Fax、携帯電話などコンピュータ以外の情報機器で利用することを目的として開発された。Javaの最大の特徴はプラットフォームに依存しない動作が保証されている点。Javaアプリケーションは、Mac
OS Runtime for Java(MRJ)などJavaVirtual Machine(Java VM)と呼ばれる動作環境をもつコンピュータなら、ハードウェアやOSの相違を超えて、全く変更なしに動作させることができる。 Netscape Navigator/Communicator 2.0以降やMicrosoft Internet Explorer 3.0以降では、Javaで書かれた小さなアプリケーション(Javaアプレット)をWebサーバーから自動的にダウンロードして実行する機能をもつ。 最近の主流といっていいであろう。 |
|
C | インタプリタ言語 |
(1) | BASIC言語 |
インタプリタ言語の代表的な言語がBASICである。 最初は、TSS用会話型言語としてダートマス大学のJohn G. Kemeny氏、Thomas E. Kurtz氏によって開発されたのが最初だが、マイクロソフト社のビル・ゲーツがパソコン用言語としてインタプリタを作成し、パソコンに標準装備するようになって飛躍的に普及した。 現在では、パソコンに標準装備することはなくなったが、Windows環境で動作するVisual BASICがマイクロソフトから販売されるなど廃れてはいない。 最近ではインタプリタだけではなくコンパイラも持つようになっている。 またEXCELなどのアプリケーション上で動作するマクロも内容はBASICである。 |
|
(2) | JavaScript |
Java言語をベースにSun Microsystems社とNetscape Communications社が開発したスクリプト言語(簡易プログラミング言語)。 従来は印刷物のような静的な表現しかできなかったWebページに、動きや対話性を付加することを目的に開発された。Netscape社やMicrosoft社のWebブラウザに搭載されている。Microsoft社のWebサーバ IIS上で動作させることもでき、サーバ上でスクリプトを実行して動的にHTML文書を生成することができる。また、WSHを利用してWindows 95/98やWindows NT上で従来より強力なバッチ処理を行なうこともできる。 |
|
(3) | Perl |
Larry Wall氏が開発したプログラミング言語。テキストの検索や抽出、レポート作成に向いた言語で、表記法はC言語に似ている。 |