インタプリタ/コンパイラはどのように機能しますか?インタプリタとコンパイラの違いは何ですか。
コンパイラ
コンパイラは、最初に作成された翻訳プログラムです。アイデアは簡単です。プログラムを作成し、それを翻訳するコンパイラに渡します。次に、結果を実行します。
通訳者
インタープリターは、高レベルの言語を低レベルの言語に翻訳するプログラムでもありますが、プログラムの実行時にそれを行います。テキストエディターなどを使用してプログラムを記述し、プログラムを実行するようにインタープリターに指示します。プログラムを一度に1行ずつ受け取り、実行する前に各行を翻訳します。最初の行を翻訳して実行し、次に2行目を翻訳して実行します。
コンパイラの特徴:
通訳者の特徴:
S-> Tトランスレータは、ソース言語Sで表現されたコードを受け入れ、別の(ターゲット)言語Tで表現された同等のコードに変換します。
翻訳者の例:
Sインタープリターは、言語Sで表現されたコードを受け入れ、そのコードをすぐに実行します。これは、一度に1つの命令をフェッチ、分析、および実行することで機能します。
ユーザーが対話的に指示を入力し(Pythonを考えて)、次の指示を出す前に出力を取得したい場合に最適です。また、プログラムを1回だけ実行する場合や、移植性が必要な場合にも役立ちます。
動作
コンパイラはソースコードをマシンコードに変換しますが、ソースコードまたはオブジェクトコードは実行しません。
インタープリターは、一度に1命令ずつソースコードを実行しますが、ソースコードは翻訳しません。
パフォーマンス
解釈コンパイラ
インタープリターコンパイラーは、コンパイラーとインタープリターの間の適切な妥協案です。ソースプログラムを仮想マシンコードに変換し、解釈します。
インタプリタ型コンパイラは、高速翻訳と適度に高速な実行を組み合わせています。ただし、
例:JDKは、Java用の解釈コンパイラーを提供します。
コンパイラ 、あるコンピューター言語のソースコードを別のコンピューター言語に変換します。
インタープリター 、ソースコードを直接(通常は独自の仮想マシン内で)実行します。
(ソース: answers.com )
一般的に、インタープリターはパフォーマンスが高くなります。
インタプリタとコンパイラの違いは何ですか?
Compilerは、最初にプログラム全体をスキャンしてから、コンピュータープロセッサによって実行されるマシンコードに変換します。
Interpretersは、1つのステートメントを機械語に翻訳して実行し、次のステートメントに進みます。
例:コンパイラはほとんどすべてのエラーを一度に出しますが、インタープリターは間違った記述をした命令まで実行されます
インタプリタ/コンパイラはどのように機能しますか?
違いと動作の仕組み
Q:に使用されるコンパイラとインタプリタは何ですか?
A:ほとんどのプログラムは高水準言語(c#、Java ...)で記述されています。高レベル言語には、理解可能な単語やフレーズが含まれています。一方、コンピューターは(この記事を書いている頃には)0と1だけである別名バイナリ/マシンコードであるマシンコードを理解しています。したがって、高レベルコードを(マシンコード/バイナリ)のソースコードに変換する必要があります。したがって、Wordの変換。
したがって、コンパイラ/インタープリターの仕事は、高レベルのコードをマシンコードに変換することであると結論付けています。
しかし、どちらもコードを「翻訳」する方法が異なります
違い:
コンパイラ:
ソースコードをある種の中間形式に変換します。静的言語の場合、コンパイラは通常、ソースコードをアセンブリに変換します。アセンブリは通常ディスクに保存されません。その後、アセンブリを呼び出してアセンブリをバイナリコードに変換します。バイナリコードは、通常、オブジェクトファイル(.oまたは.obj通常)、リンカーを呼び出してオブジェクトファイルをバイナリ実行可能ファイルにリンクします。また、このコンパイル、アセンブル、リンクのプロセス全体をコンパイルと呼ぶことも一般的です。したがって、gccをコンパイラーと呼ぶこともできますが、実際には、コンパイルするコンパイラーであるcc1、アセンブルするアセンブラー、リンクするリンカーであるldを呼び出します。
通訳:
バイトコード形式と呼ばれる中間体を持つ言語、ソースコードは最初にバイトコードに変換されます。このプロセスはコンパイルと呼ばれ、javacが例になります。バイトコードをホストマシンで実行することはできません。ホストマシンにバイトコードを解釈するために、実際にはOSの観点からプロセスであるプログラムが必要です。このプログラムはインタプリタと呼ばれます。 pythonなどの一部の言語は、単一の言語でコンパイルおよび解釈作業を行います
比較
インタープリター
- ソースコードの分析にかかる時間は短くなりますが、全体の実行時間は遅くなります。
- 中間オブジェクトコードは生成されないため、memoryで効率的です。
- 最初のエラーが発生するまでプログラムの翻訳を続け、その場合は停止します。したがって、デバッグは簡単です。
コンパイラ
- ソースコードの分析には長い時間がかかりますが、全体の実行時間は比較的高速です。
- さらにリンクを必要とする中間オブジェクトコードを生成するため、より多くのメモリが必要です。
- プログラム全体をスキャンした後にのみエラーメッセージを生成します。したがって、デバッグは比較的困難です。
— from: https://www.programiz.com/article/difference-compiler-interpreter
言語の例
解釈済み
コンパイル済み
コンパイラ-コンパイラは、ソース言語をターゲット言語に翻訳します。次に、ターゲット言語が入力を受け取り、出力を提供します。
コンパイラはソースコードをコンパイルしてターゲットコードを生成します
インタープリター-ターゲットコードを生成する代わりに、インタープリターはソースコードとともに入力を直接受け取り、出力を提供するように見えます。
インタープリターはソースプログラムを使用して入力を出力にマップします
次に、コンパイラによって生成された機械語ターゲットプログラムは、入力から出力へのマッピングにおいてインタープリターよりもはるかに高速です。ただし、インタプリタはソースプログラムを1行ずつ実行するため、コンパイラよりも優れたエラー診断を提供します。
リファレンス- コンパイラ:アホの原理、テクニック、ツール 別名the dragon book
インタプリタとコンパイラの違いは何ですか。
直接かつ直感的に配置するには:
コンパイラは、人間が読み取れるソースコードを、コンピューターが読み取って実行できるマシンコードに変換するものです。
インタープリターは、ソースコードを直接読み取って実行するようにコンピューターを装う、またはシミュレートします。