インタプリタ言語とコンパイラ言語を細かい話は抜きにして、たとえ話でざっくり理解しましょう。
たいていのことは全体感だけ掴んでおけばなんとかなります。
細かい話は気になる人だけGoogle先生に聞けばよいのです。では、いきましょう。
例えるならチャットとメールの違い
イメージを伝えるとインタプリタはLINEとかチャットだと思ってください。
それに対して、インタプリタでない言語をコンパイラ言語と呼びますが、これはメールとか手紙だと思ってください。

どういうことだってばよ……
LINEやチャットは1文ずつ相手に送ってリアクションを確認できるのに対し、メールや手紙はまとめて送ってから、相手が開封して初めてリアクションを確認できますよね。
これと同じことがプログラムでも起きています。
ソースコードを上から1行ずつコンピュータが読んでいきます。その都度、「この文はOK、この文はNG」とリアクションできます。
まさにコンピュータにチャットを送っているイメージです。
ソースコード全体をまとめてコンパイルという作業をしてからコンピュータが読んでいきます。全体を通して初めて、どこの文がOKでNGだったかリアクションが返ってきます。
コンピュータに封緘した手紙を送っているイメージです。
インタプリタ言語のメリット・デメリット
インタプリタ言語のメリット・デメリットを引き続きLINEやチャットに例えて説明します。
インタプリタのメリット
チャットのように1行ずつリアクションがもらえるインタプリタ言語は、書きながら動作確認ができます。
したがって、いわゆる対話型の環境で実行が可能になります。
書いて→結果を試して→また書いて→結果を試して……と1行ずつ入力していけるので分かりやすくお手軽です。もちろん、長文LINEのようにまとめて複数行をインプットすることにも対応しています。
コンパイルをしないので、ソースコードの配布が容易です。LINEで受け取ったメッセージを別のトークに簡単に転送できるようなイメージです。
インタプリタのデメリット
一方で、長文LINEとか少し読みにくいですよね。チャットはまとまった文章を読むにはちょっと向いていません。
プログラムも似ていて、コンパイラ言語と比べて読むのに時間がかかる=動作速度が遅いという欠点があります。
競技プログラミングでコンパイラ言語のC++が主流で、インタプリタのPythonが亜流なのはそういう背景からですね(競プロでは実行時間に制限がある)。
コンパイラ言語のメリット・デメリット
コンパイラ言語のメリット・デメリットをメールや手紙に例えて説明します。インタプリタの裏返しです。
コンパイラのメリット
動作速度が速いです。速度が求められる環境では非常に優れたポイントになります。
まとまった文章はやはり、手紙のように体裁が整えられた紙の状態だと読みやすいですよね。
また、コンパイル(翻訳)を挟むので、コードも人間には読めない形で配布されます。これには簡単に他の人に読まれないというメリットがあります。手紙を封緘して「親展」と書いてるのに似ています。
コンパイラのデメリット
お手軽さがなく面倒です。ちょっと書き足した部分を確認するのにも、実行する度に全体をコンパイルする手間がかかります。
手紙を封緘して送るのは面倒ですよね。受け取った内容を人に伝達するのも大変です。これと似たようなイメージかと思います。
インタプリタとコンパイラまとめ
最速でざっくり理解できたでしょうか?身近な例でざっくり理解するって大事ですよね。
インタプリタはLINE、コンパイラは手紙です。これくらい分かっておけば大丈夫かと思います。
コメント