プログラミング言語のコンパイラ方式とインタプリタ方式の違い

プログラミング言語

コンピュータはプログラム言語をそのまま理解できる訳ではなく、プログラムを実行させるためにはコンピュータが理解できる機械語(バイナリコード)に変換する必要があります。

機械語に変換することをコンパイルと呼びます。

プログラミング言語には機械語に変換するタイミングによって、コンパイラ方式とインタプリンタ方式の2つに分類する事ができます。

この2つに分類された両者をそれぞれ、コンパイラ型言語とインタプリンタ型言語と区分けして呼んでおります。

コンパイラ型言語

ソースコードをいったん機械語(01010の羅列のようなもの)に変換して、その機械語になったプログラムを実行する方式です。

ファイルはそれ自体が直ちに実行可能なわけではなく、リンカなどで幾つかのファイルを特定の形式に連結させて、実行可能ファイルやライブラリに生成されます。

※リンカとは、機械語のプログラムの断片を適切に結合して、実行可能なプログラムとして生成するためのプログラムです。

代表的なコンパイラ型言語としてはC、C++、C#、Java などがあります。

但し、C#とJavaは、ソースコードを機械語に変換するのではなく、中間コードと言われるコードに変換します。

中間コードは各マシンにインストールされた仮想マシン上で実行されますが、中間コードを利用するメリットはOSに依存しないで実行できることです。

インタプリタ型言語

インタープリタ型言語は、ソースコードを機械語に少しずつ変換しながらプログラムを実行する言語でソースコードを先頭から順に処理して実行していくタイプの言語です。

作成したソースコードを直ぐに実行できるという点がこの方式のメリットになります。

但し、ソースコードを機械語に変換しながら実行するため、コンパイル型言語に比べると処理速度は若干、遅くなります。

しかし、コード運用に柔軟性があり多くのプログラム開発に活用されています。

代表的なインタプリンタ型言語としては、PHP、Ruby、JavaScript、Python などがあります。

参考:スクリプト言語

インタプリンタ型言語とスプリット言語を混同してませんか?

スクリプト型言語とはコード内容が理解しやすいプログラミング言語の総称であり、比較的容易に記述や実行ができるものを指します。

ただし、厳密な定義はなく、本来はソースコードのコーディングを簡素化したものを指し、特定のプログラミング言語を指すのではありません。

スクリプト言語とインタプリタ型言語を混同している記事を散見しますが、スクリプト言語とインタープリタ型言語は、全く別の観点から定義づけされたものです。

この両者が混同される要因は、スクリプト言語がほぼインタプリタ型言語だからだと思われます。

まとめ

いかがでしたか。

繰り返しになりますが、インタプリタとコンパイラの違いは、コードの実行前に機械語に翻訳するタイミングによるコードの処理方式の違いにあります。

これからプログラミングを学習する方は、インタプリタ型言語をおすすめします。

理由は作成したプログラムをすぐに実行して確認できるので、結果がすぐに目に見えやすいからです。

この記事で解説したことを理解しておくことで、皆さんが学んでいる言語について理解が深まると思います。

コメント