インタプリタの解説(基本情報技術者シラバス用語)

目次

インタプリタとは

インタプリタとは、人間が書いたプログラミング言語のソースコードを、コンピュータが理解できる形式に「1行ずつ翻訳しながら、その場で同時に実行していく」方式のプログラム、またはその翻訳仕組みのことです。前もって全体の翻訳を完了させておく「コンパイラ」とは異なり、事前の変換作業が不要です。そのため、プログラムを書き換えたらすぐに実行して動作を確認できるため、開発の手間が少なく、テストを繰り返しやすいというメリットがあります。一方で、実行しながら1行ずつ翻訳を行うため、実行ファイルを作成して走らせるコンパイラに比べて、処理速度が遅くなるという欠点があります。

具体例

PythonやRuby、JavaScriptなどのプログラミング言語がインタプリタ方式を採用しています。例えばPythonでは、ソースコードに計算式を入力して実行ボタンを押すと、インタプリタが即座にその計算を翻訳・実行し、結果を画面に出力します。エラーがあればその行で処理が止まり、エラー箇所がすぐわかります。

もう少し詳しく

インタプリタの最大の特徴は、ソースコードを実行する際に事前のコンパイル(一括翻訳)作業を必要としない点にあります。ソースコードを読み込むと、インタプリタという特別なプログラム自身が、コードの指示を1行ずつ(または1命令ずつ)解析し、コンピュータのCPUが理解できる形に即座に変換しながら実行を進めていきます。
この仕組みにより、開発者はプログラムの一部を書き換えた後、すぐに実行して動作を確認(テスト)することができます。バグ(不具合)が見つかった場合も、エラーが発生した行でプログラムが停止するため、どこに問題があるのかを特定しやすく、デバッグ作業が非常にスムーズに進むという大きな利点があります。そのため、Web開発やデータ分析、ちょっとした自動化スクリプトの作成など、スピード感を持った開発が求められる現場で広く採用されています。
一方で、プログラムを実行するたびに「翻訳」と「実行」を同時に行わなければならないため、事前にすべてを機械語に翻訳し終えているコンパイル方式のプログラムと比較すると、どうしても実行速度が遅くなってしまうという構造上の弱点があります。また、プログラムの後半部分に重大な文法エラーが潜んでいたとしても、そこを実行するまでエラーに気づくことができない(コンパイラのように事前に全チェックができない)という点にも注意が必要です。近年では、この速度低下のデメリットを補うために、実行時に内部で一時的にコンパイルを行い高速化を図る「JIT(Just-In-Time)コンパイラ」という技術を組み合わせた高度なインタプリタも普及しています。

試験でのポイント

試験においては、やはり「コンパイラ」との比較が最も重要なテーマとなります。「1行ずつ解釈しながら実行する」「事前の翻訳処理が不要」「実行速度はコンパイラより遅い傾向にあるが、開発やデバッグが容易である」といったキーワードを見つけたら、インタプリタを指していると判断できます。
また、どのプログラミング言語がどの方式を採用しているかという知識も問われやすいポイントです。Python、Ruby、JavaScript、PHPなどが代表的なインタプリタ言語(またはスクリプト言語)であり、C言語やJava(Javaは中間言語方式という特殊な仕組みですが、広義にはコンパイルを必要とする)との違いを整理して覚えておくと良いでしょう。実行時に翻訳を行うため、実行環境(パソコンやサーバー)に必ずインタプリタのプログラム自体がインストールされている必要がある点も、システム運用の知識として重要です。

関連する用語

関連する用語として、プログラムを一括して翻訳する「コンパイラ」、プログラムの誤りを見つけて修正する「デバッグ」、実行時にプログラムを都度コンパイルして高速化する「JITコンパイラ」などが挙げられます。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ