インタプリタとはなにか?「コンパイラ」との違いとインタプリタ言語の代表例
多くの開発現場で使用されている「インタプリタ言語」ですが、その意味や「コンパイラ言語」「スクリプト言語」の違いを理解できているでしょうか? そもそも「インタプリンタ」とは、どのような処理方法を指すものなのでしょうか?
本記事では、インタプリタの基礎知識や、コンパイラとの違い、インタプリタ言語の代表例など、要点をあらためてまとめます。
Contents
インタプリタとは
「インタプリタ」とは、日本語で「通訳者」を意味する言葉で、プログラミング言語で記述されたソースコードを、コンピュータが解釈・実行できる形式に変換しながら実行する処理方法のひとつです。
また、記述したソースコードを随時翻訳しながら実行できるインタプリタに対応するプログラミング言語は「インタプリタ言語」と呼ばれ、PythonやJavaScript、PHPなどがインタプリタ言語の代表例に挙げられます。
コンパイラとの違い
「コンパイラ」も、プログラミング言語で記述されたソースコードを、コンピュータが理解できる形式に変換する処理方法であり、インタプリタと同様の役割を担いますが、両者の翻訳方法には違いがあります。
- インタプリタ:記述されたソースコードを随時翻訳する
- コンパイラ:記述されたソースコードを一括翻訳する
つまり、インタプリンタとコンパイラでは、変換処理・実行のタイミングが異なります。
インタプリタではソースコードを一行ずつ変換し命令を処理・実行するのに対し、コンパイラはすべての命令をまとめて変換した後に、一括で処理・実行します。
また、コンパイラは一括で処理を行うことから、インタプリタと比較してプログラムの実行速度が速い点が大きな特徴になっています。その一方で、すべてのソースコードを記述してから翻訳するため、エラーが発生した際のデバッグ作業が難航する傾向も見られます。
コンパイラ言語の代表例には、Java、C++、Goなどが挙げられます。
JITコンパイラとは
JITコンパイラとは、ソースコードや中間コードをコンピュータが理解できる言語に変換する処理を、必要な時にコンパイルできるコンパイラです。
JITコンパイラはインタプリタとコンパイラの中間のような処理方法で、ソフトウェアの実行時にJITコンパイルを行うことで、実行速度の向上が期待できます。このことから、実行時コンパイラと呼ばれることもあります。
通常、コンパイラはソフトウェアの実行前にソースコードをコンピュータが理解できるオブジェクトコードに変換します。一方、JITコンパイラではソフトウェア実行時にソースコードをオブジェクトコードに変換します。
実行時にコンパイルを行うことで、OSやハードウェアに依存しないソースコードの状態でソフトウェアを配布できる利点があります。
スクリプト言語との違い
スクリプト言語とは、明確な定義はありませんが、プログラミング言語の中でも可読性に優れ、比較的簡単に記述や実行できるものの総称です。スクリプト言語は人間が使用する自然言語に近いため、習得も容易な傾向にあります。
なお、インタプリタ言語のPythonやPHPも、スクリプト言語とされることから、インタプリタ言語とスクリプト言語は混同されがちです。
しかし、両者は本質的に異なります。スクリプト言語が比較的簡単にコードを記述できるプログラミング言語の総称であるのに対し、インタプリタ言語は「プログラム実行の際にコードを一行ずつ随時翻訳しながら動作する言語」という明確な定義があるためです。
インタプリタ言語のメリット
インタプリタ言語には、主に次の2つのメリットがあります。
- デバッグしやすい
- プレビューしやすい
デバッグしやすい
インタプリタ言語では、プログラムを一行ずつ翻訳・実行するため、プログラムの動作を確認しながら開発を進められます。ソースコードを記述しながら不具合を発見できるため、不具合が発生している箇所を特定しやすく、バグの修正作業にも素早く取り組めます。
一方、コンパイラ言語ではソースコードをすべて記述してから一括で処理・実行するため、不具合があった場合にその箇所を特定しづらく、バグの修正作業が難航しやすい傾向です。
プレビューしやすい
インタプリタ言語は、プログラムが未完の状態でも細かくプレビュー(プログラムの実行結果)を確認できることも利点に数えられます。一方、コンパイラ言語はソースコードの記述が完了した後に実行することから、プレビューの柔軟性の面では及びません。
インタプリタ言語のデメリット
上述のメリットに対し、インタプリタ言語はソースコードを一括で処理・実行するコンパイラ言語と比較すると、実行速度に劣ります。
これはインタプリタ言語の特性である、ソースコードを一行ずつ読み、実行を繰り返すことに処理能力が割かれるためです。また、コンパイラ言語と比較してインタプリタ言語はCPUやメモリにかかる負荷や、消費電力も大きくなりがちです。
なお、コンパイラ言語の処理速度の速さ、CPUなどへの負荷や消費電力を低減できるメリットは、センサーなど高速処理が求められるシステムにて活かされています。
インタプリタ言語の代表例
現在、開発現場にて広く使用されているインタプリタ言語として、次の4つを紹介します。
- Python
- JavaScript
- Ruby
- PHP
Python
Pythonは、1991年に発表されたプログラミング言語で、近年ではデータ解析や機械学習などにも用いられている、需要の高い言語です。汎用性にも優れ、組込み開発や統計・分析などにも対応します。コードがシンプルで習得しやすく、少ない記述で多くの処理を行えることも特徴です。
Pythonで開発された有名なプロダクトの具体例には、AIが行うチェスや将棋などのボードゲームがあります。そのほか、株価予測やスポーツのデータ解析、ECサイトでのレコメンドの洗い出しなどにも活用されています。
JavaScript
JavaScriptは、主にWeb開発のフロントエンドに用いられるプログラミング言語で、Webページやアプリに動きのある要素をプラスする目的で用いられています。
Pythonの汎用性には及ばないものの、Web開発においては多く用いられている言語です。例えば、SNSやYouTubeなどでも、ページに動きをつけるために活用されています。
Ruby
Rubyは、1995年に公開された日本人が開発したオープンソースの言語で、主にWebサイトやWebアプリの開発に用いられています。汎用性が高く、シミュレーションやデータ処理にも活用されています。
シンプルな文法のため初心者でも習得しやすいこと、プログラムのメンテナンスがしやすいことが特徴です。Rubyを用いて開発された代表的なプロダクトには、AirbnbやGitHubがあります。
PHP
PHPとは、主にWeb開発に用いられるオープンソースの言語で、Webサイトのバックエンドなどに活用されています。動作確認が簡単で、HTMLで容易にコードを動かせることが特徴です。
HTMLがWebページを静的に表示するのに対し、PHPはアクセスしたタイミングや状況によって表示内容が変わるような、動的に表示するWebページを作成できます。また、WordPressなどのCMS開発にも使われています。
- インタプリンタは、プログラミング言語で記述されたソースコードを、コンピュータが解釈・実行できる形式に「随時翻訳」・変換しながら実行する処理方法
- インタプリタ言語の代表例には、Python、JavaScript、PHPなどがある
- コンパイラは、プログラミング言語で記述されたソースコードを、コンピュータが理解できる形式に「一括翻訳」・変換する処理方法
- コンパイラ言語の代表例には、Java、C++、Goなどがある
- インタプリタ言語のメリットには「デバッグのしやすさ」「プレビューのしやすさ」が挙げられる
- ただし、コンパイラ言語と比較すると実行速度に劣り、CPUやメモリにかかる負荷も大きい傾向