プログラミング言語のコンパイラ方式とインタプリタ方式とは?
世の中にはたくさんのプログラミング言語がありますが、それぞれが様々な特性を持っています。
wikiなどで特定のプログラミング言語を調べてみると、「コンパイラ方式」「インタプリタ方式」と記載があるのに気づくと思います。
この「コンパイラ方式」「インタプリタ方式」はどういったものなるのでしょうか?また、その違いは?
今回はプログラミング言語の「コンパイラ方式」「インタプリタ方式」の内容や違いについて紹介します。
2つの異なる実行方式
「コンパイラ方式」「インタプリタ方式」この違いは簡単に言うと実行方式の違いになります。
この二つの違いを説明する前に、まずプログラムがどのように動作するのかを理解する必要があります。
プログラムを実行した時、コンピューターがその命令を理解し忠実に実行します。
プログラマーが書いているコードというのは、コンピューターへの命令文と理解するとイメージしやすいかもしれません。
コンパイラ方式のメリット・デメリット
この命令ですが、人間が書いたものなのでそのままではコンピューターは理解できません。
この命令(コード)をコンピューターが理解できる機械語に変換するプログラムのことをコンパイラと呼びます。ちょうど人間と機械の間にある翻訳機のようなイメージでしょうか。
コンパイラ方式では一度、コンパイラで変換をしてから実行するという手間がかかります。
筆者も初めてCを触った時にはなんて面倒なんだ!と感じたことを記憶しています。
しかし、コンパイラ方式ではコンピューターは自分が即座に理解できる機械語の変換されたコードを実行するだけなので、実行速度が速いというメリットがあります。
一方で、先ほども触れたようにコードを一度コンパイルしてから実行しないといけないので手間がかかります。
コンパイラ方式のプログラミング言語には以下のようなものが挙げられます。
- C
- C++
- C#
- Objective-C
インタプリタ方式のメリット・デメリット
では、インタプリタ方式とはどのようなものになるのでしょうか?
インタプリタ方式では、書かれたコードがその都度解釈された機械語として実行されます。
メリット・デメリットはコンパイラ方式のそのまま逆のものになります。
コンパイルしなくても実行できるので手軽に実行できるというメリットがあります。
しかし、その都度コンピューターは解釈→変換を行うので実行速度が遅くなります。
インタプリタ方式のプログラミング言語には以下のようなものが挙げられます。
- Ruby
- Python
- PHP
- JavaScript
両方の良いとこ取りをした中間コード方式もある
さらに掘り下げると、コンパイラとインタプリタ双方の良いとこ取りをした中間コード方式というものもあります。
これは中間コードに一括変換を行い、中間コードから専用のインタプリタで都度解釈を行いながら実行するというものです。
中間コード方式のプログラミング言語の代表的なものと言えばJavaですね。
まとめ
コンパイラやインタプリタは「実行方式の違い」と覚えておくと分かりやすいと思います。
しかし、Javaのように中間コード方式を採用するプログラミング言語も台頭しているので、プログラミング言語をコンパイラやインタプリタで分けて考えるのはナンセンスかもしれませんね。
プログラミング独学のおすすめ本
アメリカにて独学でプログラミングを学ぶ方法を紹介しているジョン・ソンメズ氏による翻訳本。
どのようにプログラミングを独学で勉強していくかのロードマップが詳しく記載されています。
ソフトウェア開発者のキャリアについても言及されているので、プログラミング初心者以外の人にもおすすめ。