インタープリター型プログラミング言語とコンパイル済みプログラミング言語:違いは何ですか?

2つの番号を追加する場合でも、インターネット経由でリクエストを送信する場合でも、すべてのプログラムは一連の命令です。コンパイラとインタプリタは、人間が読めるコードを受け取り、それをコンピュータが読めるマシンコードに変換します。

コンパイルされた言語では、ターゲットマシンがプログラムを直接変換します。インタープリター言語では、ソースコードはターゲットマシンによって直接翻訳されません。代わりに、別のプログラム、別名インタープリターがコードを読み取って実行します。

わかりました…しかし、それは実際にはどういう意味ですか?

あなたが作りたいフムスレシピを持っていると想像してください、しかしそれは古代ギリシャ語で書かれています。古代ギリシャ語を話さないあなたがその指示に従う方法は2つあります。

1つ目は、誰かがすでにそれを英語に翻訳してくれているかどうかです。あなた(そして英語を話せる人なら誰でも)は英語版のレシピを読んでフムスを作ることができます。この翻訳されたレシピをコンパイルされたバージョンと考えてください。

2番目の方法は、古代ギリシャ語を知っている友人がいる場合です。あなたがフムスを作る準備ができたら、あなたの友人があなたの隣に座って、あなたが行くにつれてレシピを英語に一行ずつ翻訳します。この場合、あなたの友人はレシピの解釈されたバージョンの通訳です。

コンパイルされた言語

コンパイルされた言語は、プロセッサが実行できるマシンコードに直接変換されます。その結果、インタープリター型言語よりも実行が高速で効率的になる傾向があります。また、開発者は、メモリ管理やCPU使用率などのハードウェアの側面をより細かく制御できます。

コンパイルされた言語には「ビルド」ステップが必要です。最初に手動でコンパイルする必要があります。変更を加える必要があるたびに、プログラムを「再構築」する必要があります。私たちのフムスの例では、翻訳全体があなたに届く前に書かれています。元の作者が別の種類のオリーブオイルを使用したいと判断した場合は、レシピ全体を再度翻訳して、あなたに再送する必要があります。

純粋にコンパイルされた言語の例は、C、C ++、Erlang、Haskell、Rust、およびGoです。

インタープリタ型言語

インタプリタはプログラムを1行ずつ実行し、各コマンドを実行します。ここで、作者が別の種類のオリーブオイルを使用したいと決めた場合、古いものを削って新しいものを追加することができます。その後、翻訳者の友人は、その変更が発生したときにその変更を伝えることができます。

インタープリター型言語は、かつてコンパイル型言語よりも大幅に低速でした。しかし、ジャストインタイムコンパイルの開発により、そのギャップは縮小しています。

一般的なインタープリター言語の例は、PHP、Ruby、Python、JavaScriptです。

小さな警告

ほとんどのプログラミング言語は、コンパイル済みとインタープリター型の両方の実装を持つことができます。言語自体は必ずしもコンパイルまたはインタープリター型である必要はありません。ただし、簡単にするために、通常はそのように呼ばれます。

たとえば、Pythonは、コンパイルされたプログラムとして、またはインタラクティブモードでインタープリター言語として実行できます。一方、ほとんどのコマンドラインツール、CLI、およびシェルは、理論的にはインタープリター言語として分類できます。

長所と短所

コンパイル言語の利点

ネイティブマシンコードにコンパイルされるプログラムは、インタープリター型コードよりも高速になる傾向があります。これは、実行時にコードを変換するプロセスがオーバーヘッドを増加させ、プログラム全体の速度を低下させる可能性があるためです。

コンパイル言語のデメリット

最も顕著な欠点は次のとおりです。

  • テストの前にコンパイルステップ全体を完了するために必要な追加の時間
  • 生成されたバイナリコードのプラットフォーム依存性

インタープリター言語の利点

インタープリター言語はより柔軟になる傾向があり、動的型付けや小さなプログラムサイズなどの機能を提供することがよくあります。また、インタプリタはソースプログラムコード自体を実行するため、コード自体はプラットフォームに依存しません。

インタープリター型言語のデメリット

最も顕著な欠点は、コンパイルされた言語と比較した場合の一般的な実行速度です。