コンパイラとは
人間が理解できるように書かれたコンピュータ言語はHTMLやCSS、Rubyですが、
その言語をコンピュータが理解できるように変換してくれるのがコンパイラです。
コンパイラは上図のように、人間が書いたソースコード、を機械が理解できるバイナリコードに変換してくれます。
バイナリコードは2進数で表されるもので、例えば「こんにちは」は「11100011 10000001 10010011 11100011 10000010 10010011 11100011 10000001 10101011 11100011 10000001 10100001 11100011 10000001 10101111」と表現されます。
このように人間が理解できるソースコードをバイナリコードに変換するのがコンパイラやインタプリタと呼ばれるものなのです。
#コンパイラとインタプリタの違い
コンパイラとインタプリタではバイナリコードへの変換方法が異なります。
コンパイラは翻訳家
コンパイラはソースコードの全てをまとめてバイナリコードに翻訳します。
例えるならば、英語で書かれた本を全てまとめて日本語に翻訳する「翻訳家」のような役割です。この特徴はプログラミング用語で「一括翻訳型(いっかつほんやくがた)」と呼ばれています。
インタプリタは同時通訳者
コンパイラが翻訳家だとしたら、インタプリタは同時通訳者と言えます。
インタプリタはソースコードを1行ずつバイナリコードに翻訳するという特徴があるからです。
この特徴を逐次翻訳型(ちくじほんやくがた)と呼びます。下図コードを1行ずつ順番に翻訳していくような流れです。
コンパイラのメリット・デメリット
##コンパイラのメリット
- プログラムの実行速度が早い
##コンパイラのデメリット
- プログラム実行に手間がかかる
- エラーを見つけにくい
##インタプリタのメリット
- プログラムをすぐに実行できる
- エラーを見つけやすい
##インタプリタのデメリット
- 実行速度が遅い
使用される場面によって向き不向きがあるので、上手に使い分けられるといいですね。
参考
https://blog.codecamp.jp/compiler-interpreter-commentary
https://wa3.i-3-i.info/word12211.html