平成25年度 秋期 ITパスポート試験 問55 解説 プログラム実行方式
プログラムの実行方式としてインタプリタ方式とコンパイラ方式がある。図は,データを入力して結果を出力するプログラムの,それぞれの方式でのプログラムの実行の様子を示したものである。a,bに入れる字句の適切な組合せはどれか。
- ア インタプリタ インタプリタ
- イ インタプリタ コンパイラ ✓ 正答
- ウ コンパイラ インタプリタ
- エ コンパイラ コンパイラ
解説
この問題は、プログラムの実行方式における「変換の手順」の違いを見極めることで正解にたどり着けます。
図の左側は、ソースプログラムを直接読み込みながら結果を出力しています。これは「翻訳しながら逐次実行する」というインタプリタ方式の特徴です。一方、図の右側は、ソースプログラムを一度「目的プログラム(実行ファイル)」に変換してから実行しています。これは「事前に全部まとめて変換する」というコンパイラ方式の特徴です。
プログラム実行方式の仕組み
プログラミング言語で書かれたコード(人間が読み書きできるソースコード)を、コンピュータが理解できる機械語(0と1の列)に変換する必要があります。この変換と実行をどのように行うかの違いが、両方式の分かれ道です。
インタプリタ方式は、ソースコードを1行ずつ翻訳しながら、その場で実行していきます。例えるなら、同時通訳です。話者の言葉を一度にすべて翻訳するのではなく、話しながらリアルタイムで訳していくため、すぐに動作を開始できますが、実行速度は一般的に遅くなります。
コンパイラ方式は、ソースコード全体をあらかじめ一括で翻訳し、コンピュータがそのまま実行できる「目的プログラム」というファイルを作成します。例えるなら、翻訳済みの本です。事前にすべて翻訳する手間がかかるため、動作開始までには時間がかかりますが、出来上がった目的プログラムは高速に実行できます。
正解を導き出す思考プロセス
試験会場でこの図を見たとき、以下の点に注目してください。
- インタプリタを探す: 「ソース」と「データ」が同時に処理機構に入り込み、そこから「結果」が出力される流れになっていれば、それは逐次実行しているインタプリタです。
- コンパイラを探す: 「ソース」が一度「目的プログラム」という中間形態を経由してから「データ」と合流し、「結果」を出力する流れになっていれば、それは事前変換を行うコンパイラです。
この問題は、図の矢印の向きと経由地を追うだけで、専門的な知識がなくても判断できるようになっています。
なぜこの知識が必要なのか
開発の現場では、言語によって採用している方式が異なります。例えば、PythonやJavaScriptはインタプリタ(またはそれに近い方式)を採用しており、実行の手軽さや開発効率の高さが重視されます。一方で、C言語やJavaなどはコンパイラを採用しており、実行時のパフォーマンスやプログラムの配布のしやすさが重視されます。
ITパスポートでは、これらを単なる用語としてではなく、コンピュータシステムがどのように命令を解釈し、処理を実行しているかという基本原則として理解しておくことが求められます。この違いを知っておくと、プログラミング言語ごとの特徴や、ソフトウェアの開発プロセスについての理解がより深まります。