コンテンツ
主な違い
コンパイラーとインタープリターはどちらも高レベル言語プログラムを翻訳します。違いは、コンパイラーがソースコードを実行可能なマシンコードにコンパイルするのに対し、インタープリターは各命令を解釈し、マシン/オブジェクトコードを生成せずに実行することです。プログラムがコンパイルされると、コンパイラーの作業は一度だけです。インタプリタはプログラムを実行するたびに解釈する必要があるのに対して、後で実行するために保存できます。コンパイラーの場合はオブジェクトコードが生成されますが、インタープリターではオブジェクトコードは生成されません。中間コードのみを生成します。コンパイラーはプログラム全体を処理しますが、インタープリターは命令ごとにプログラムを処理します。コンパイラでは、プログラムの実行は高速で、インタープリターの場合はステートメントごとのステートメントの解釈と実行に時間がかかるため、処理が遅くなります。コンパイラでは、インタープリターでのデバッグと比較して、デバッグプロセスは困難です。コンパイラは実行時にソースコードを必要としませんが、インタプリタの場合、プログラムを実行するには完全なソースコードファイルが必要です。生成されるマシンコードは非常に大きいため、コンパイラはより多くのメモリを必要としますが、インタプリタの場合、追加のメモリは必要ありません。コンパイラでは、完全なソースコードが分析された後にプログラムのエラーが表示されますが、インタープリターの場合は、解釈される行ごとにエラーが表示されます。コンパイラの場合、コンパイルされたコードはコンピューターハードウェアによって実行されますが、インタープリターでは、中間コードは別のプログラムによって処理されます。プログラミングシナリオでは、コンパイラはプログラムの構文をチェックしますが、インタープリターはプログラムのキーワードを検証します。コンパイラーにはコード最適化の範囲があり、インタープリターにより実行時にコードを変更できます。これらはどちらも一般にプログラマーによって使用されており、どちらも独自の仕様と利点を備えています。
比較表
通訳 | コンパイラ | |
入力 | 通訳者は、単一の命令を入力として受け取ります。 | コンパイラは、プログラム全体を入力として受け取ります。 |
オブジェクトコード | Interpreterでは、中間オブジェクトコードは生成されません。 | 中間オブジェクトコードはコンパイラで生成されます |
制御ステートメント | 通訳での条件付き制御ステートメントの実行が遅い。 | 条件制御ステートメントは、コンパイラですばやく実行されます |
変換 | 高レベルのプログラムは毎回低レベルのプログラムに変換されます。 | コンパイラで毎回プログラムをコンパイルする必要はありません。 |
コンパイラの定義
コンパイラは、高レベルの言語で記述されたソースコードをコンピューターが理解できるマシンコードに処理する特殊なプログラムです。このマシンコードは実際には、プロセッサが理解して実行するバイナリ言語です。ソースコードを記述するために、プログラマはプログラミングエディタを使用してC、C ++、またはPascalなどの言語でプログラムを記述します。その後、このプログラムは、ソースコードが記述されている言語に適したコンパイラを使用して実行されます。コンパイラの入力は完全なプログラムです。最初に分析してから処理します。入力として与えられたソースコードに対して、字句解析および構文解析の多くの分析を実行します。これらの両方のステップを実行した後、コンパイラの最終タスクはマシンコードを生成することです。このコンパイルの出力はオブジェクトコードであり、実行可能です。プログラムは一度コンパイルされるため、プログラムを実行するたびにコンパイルする必要はありません。
通訳の定義
インタープリターは、より高いレベルの言語で書かれたプログラムのソースコードをステートメントごとに(行ごとに)翻訳するプログラムです。インタープリターは、プログラムが渡されると、その1行を解釈し、解釈してから実行します。インタープリターは、ソースコードの解釈後に中間コードを生成し、実行します。コンパイル段階はなく、マシンコードは生成されません。これが、インタープリターがプログラム全体を1行ずつ変換して実行する方法です。命令実行による即時命令が必要な場合に推奨されます。特に、コードのテストが行われている場合に役立ちます。プログラムが実行されるたびに、インタープリターは同じように解釈します。
一言で言えば違い
- コンパイラーはプログラム全体を処理します。インタープリターはコードを1行ずつ解釈します。
- コンパイラはバイナリマシンコードを生成します。インタープリターは中間コードを生成します。
- コンパイラマシンコードは保存され、コンパイル後に再利用できます。インタプリタは毎回ソースコードを解釈する必要があります。
- コンパイラは、コード構文の妥当性を調べます。インタプリタはキーワードをチェックします。
- コンパイラでは、プログラムの実行は高速です。インタープリターではプログラムの実行が遅い。
- コンパイラーではデバッグは複雑です。インタープリターではデバッグが簡単です。
- コンパイラは、完全なソースコードをチェックした後にエラーを表示します。インタープリターは、指定された順序でコード内の各命令のエラーを表示します。
- コンパイラのマシンコードはハードウェアによってさらに処理されます。通訳者の中間コードは別の特別なプログラムによって処理されます。
- コンパイラは、実行時にソースコードファイルを必要としません。インタープリターには、実行時の実行にソースコードファイルが必要です。
- コンパイラーでは、プログラムの実行はコンパイル段階の後に行われます。インタープリターはコンパイルせずにプログラムを直接実行します。
- コンパイラはより多くのメモリを使用します。インタプリタはより少ないメモリを必要とします。
結論
コンピュータアーキテクチャとそれに関連する用語の理解は面倒な作業になる可能性があり、上記の2つの用語は類似した用語であり、それらの間にはさまざまな違いがありますが、常に互いに類似しているように見えます。したがって、この記事では、両者の違いを説明して、人々が明確な理解を得るのに役立つようにしています。