人間が書いたプログラムをコンピュータが実行できる形式に変換するソフトウェアの総称。
言語処理プログラムとは、人間が書いたプログラム(ソースコード)を、コンピュータが実行できる形式に変換するソフトウェアの総称です。コンピュータが直接理解できるのは 機械語(=0と1だけで表された命令のこと)だけで、人間が読み書きしやすい言葉とはかけ離れています。そのギャップを埋めるのが言語処理プログラムの役目です。
身近な例で考えると、外国語の通訳・翻訳者に似ています。日本語しか話せない人(人間)と、英語しか分からない人(コンピュータ)のあいだに通訳が入って、お互いに伝わる形に変換してくれる──その通訳役が言語処理プログラムです。
上の図解では、ソースコードが3種類の言語処理プログラム(コンパイラ・インタプリタ・アセンブラ)を経て、機械語や実行へとつながる流れを示しています。それぞれ変換のしかたが異なります。
言語処理プログラムは、代表的に次の3種類に分類されます。
・コンパイラ:高級言語(=人間に分かりやすい言葉で書く言語のこと)を一括翻訳する
・インタプリタ:高級言語を1行ずつ逐次(ちくじ)解釈しながら実行する
・アセンブラ:アセンブリ言語(=機械語に近い低水準の言語のこと)を機械語に変換する
| 種類 | 入力する言語 | 変換のしかた |
|---|---|---|
| コンパイラ | 高級言語 | 一括翻訳 |
| インタプリタ | 高級言語 | 逐次解釈実行 |
| アセンブラ | アセンブリ言語 | 機械語へ変換 |
同じ「変換役」でも、扱う言語のレベルと変換の進め方が異なります。コンパイラとインタプリタは人間に近い高級言語を扱い、アセンブラは機械語にぐっと近いアセンブリ言語を扱う、という点をまず押さえましょう。
3種の最も大きな違いは、「いつ・どうやって変換するか」です。コンパイラとアセンブラは、実行する前にプログラム全体をまとめて翻訳し、実行ファイル(=そのまま動かせる機械語のファイル)を作っておきます。
一方のインタプリタは、実行ファイルを作りません。プログラムを動かしながら1行ずつ「解釈→実行」を繰り返すのが特徴です。
| 項目 | 事前に翻訳(コンパイラ/アセンブラ) | 実行しながら(インタプリタ) |
|---|---|---|
| 変換のタイミング | 実行前に一括 | 実行しながら1行ずつ |
| 実行ファイル | 作る | 作らない |
| 実行速度 | 速い | 遅め(毎回解釈) |
料理にたとえると、コンパイラはレシピを全部読んで作り置きしておく方式、インタプリタはレシピを1行読んでは作り、また1行読んでは作る方式です。作り置きは食べるとき(実行)が速く、その場調理は始めるのが手軽、というイメージで整理すると分かりやすいです。