コンパイラ型言語・インタプリンタ型言語解説

コンパイラ型言語

コンパイラとは、高水準言語から機械語に変換するソフトウェアのこと。

コンパイラで変換することを、コンパイルという。

C、C++など

処理の流れ

C言語などのソースコードを機械語のファイルに変換してから、実行する。

メリット

実行前に一気に機械語にコンパイルするので、インタプリタ言語に比べて処理が早い。

デメリット

コンパイルする処理に手間がかかる。

 

インタプリタ型言語

インタプリタは、高水準言語を逐次解釈して実行するソフトウェア。

Ruby、Python、Perlなど

処理の流れ

流れとして、「一行だけ読み込む」 => 「機械語に変換する」 => 「実行する」

これを繰り返す。

 

メリット

ソースコードをそのまま実行することができる。

例えば、

とファイルを読み込むだけで、インタプリタが変換・実行までしてくれるので、簡単に実行できる。

デメリット

一行ずつ解釈・実行するので、コンパイラ型言語に比べて処理が遅い。

 

中間インタプリタ言語

主にJavaでの仕様です。

コンパイラ型・インタプリタ型にも属さないです。

処理の流れ

まず、コンパイラによって8ビットずつのビットストリームのclassファイルに変換します。

そして、Java Virtual Machineによって、インタプリタで逐次解釈・実行 もしくは、JITコンパイラによってコンパイル => 実行がなされます。

 

メリット

そもそも、コンパイラはOSなどのプラットフォームに合わせて作成されています。

プラットフォームが違えばコンパイラもそれに合わせて作成しないといけない問題があります。

そこでJavaは、まずどのプラットフォームでも共通のバイナリデータ (classファイル)を作成して、仮想マシンで各環境に合わせて機械語に変換する

ことによって対応している。

そうすることによって、コンパイラ型言語・インタプリンタ言語の両方のメリットを持つことができています。

 

おまけ

動的型付け

ソースコードの変数に型を指定しない。

メリット

柔軟に変数定義できる。

完結にコードが書ける。

デメリット

インタプリタ型だと、実行時に型も解釈しないといけないので処理が遅くなる。

静的型付け

ソースコード上の変数に型指定をする。

メリット

堅牢なコードになる。

デメリット

コードがややこしくなる。

参考資料

https://qiita.com/zd6ir7/items/20755a3d33480aa7a6c7

https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA