コンパイラとは何ですか?
コンパイラは、高レベルのプログラミング言語で書かれたコードをマシンコードに変換するコンピュータプログラムです。 これは、人間が読めるコードをコンピュータプロセッサが理解する言語(バイナリ1ビットと0ビット)に変換するプログラムです。 コンピュータは、対応するタスクを実行するためにマシンコードを処理する。
コンパイラは、それが書かれているプログラミング言語の構文規則に準拠する必要があります。 ただし、コンパイラは単なるプログラムであり、そのプログラムで見つかったエラーを修正することはできません。 したがって、間違いを犯した場合は、プログラムの構文を変更する必要があります。 それ以外の場合はコンパイルされません。
インタプリタとは何ですか?
インタプリタはコンピュータプログラムであり、各高レベルのプログラム文をマシンコードに変換します。 これには、ソースコード、プリコンパイルされたコード、およびスクリプトが含まれます。 コンパイラとインタプリタの両方が、より高いレベルのプログラミング言語をマシンコードに変換するのと同じ仕事をします。 ただし、コンパイラはプログラムを実行する前にコードをマシンコードに変換します(exeを作成します)。 インタプリタは、プログラムの実行時にコードをマシンコードに変換します。
主な違い
- コンパイラは、プログラムが実行される前に、高レベルプログラミング言語で書かれたコードを一度にマシンコードに変換しますが、インタプリタは各高レベルプログラム文を一つずつマシンコードに変換します。、プログラム実行中。
- コンパイルされたコードは高速に実行され、解釈されたコードは低速に実行されます。
- コンパイラはコンパイル後にすべてのエラーを表示し、一方、インタプリタは各行のエラーを一つずつ表示します。
- コンパイラは翻訳リンクローディングモデルに基づいていますが、インタプリタは解釈方法に基づいています。
- コンパイラはプログラム全体を取り、インタプリタは単一行のコードを取ります。
コンパイラとインタプリタの違い
違いの基礎 | コンパイラ | インタプリタ |
---|---|---|
プログラミング手順 |
|
|
Advantage | プログラムコードはすでにマシンコードに変換されています….. これにより、コードの実行時間が短くなります。 | 通訳者は、特に初心者のために、使いやすいです。 |
欠点 | ソースコードに戻らずにプログラムを変更することはできません。 | インタプリタされたプログラムは、対応するインタプリタを持つコンピュータ上で実行できます。 |
マシンコード | マシン言語をマシンコードとしてディスクに保存します | マシンコードをまったく保存しません。 |
実行時間 | コンパイルされたコードは速く実行されます | 解釈されたコードは遅く実行されます |
モデル | これは、言語translationlinking-loadingモデルに基づ | これは、解釈方法に基づいています。 |
プログラム生成 | は、元のプログラムとは独立して実行できる出力プログラム(exe形式)を生成します。 | 出力プログラムを生成しません。 そのため、実行中に毎回ソースプログラムを評価します。 |
実行 | プログラムの実行はコンパイルとは別です。 これは、出力プログラム全体がコンパイルされた後にのみ実行されます。 | プログラムの実行は、解釈プロセスの一部であるため、行ごとに実行されます。 |
メモリ要件 | ターゲットプログラムは独立して実行され、メモリ内のコンパイラを必要としません。 | インタプリタは、解釈中にメモリ内に存在します。 |
特定のターゲットマシンに限定され、移植することはできません。 CとC++は、コンパイルモデルを使用する最も人気のあるプログラミング言語です。 | 読み込み時間が重要なweb環境の場合。 すべての徹底的な分析が行われるため、コンパイルには複数回実行されない小さなコードでもコンパイルに比較的大きな時間がかかります。 そのような場合は、通訳者の方が良いです。 | |
コードの最適化 | コンパイラはコード全体を先行して見ます。 したがって、コードを高速に実行する多くの最適化を実行します | インタプリタはコードを行ごとに参照するため、最適化はコンパイラほど堅牢ではありません |
動的タイピング | コンパイラがターン時に何が起こるかを予測できないため、実装が困難です。 | 解釈された言語は、動的タイピングをサポートしています |
使用法 | これは、生産環境に最適です | これは、プログラムや開発環境に最 |
エラー実行 | コンパイラは、コンパイル時にすべてのエラーと警告を表示します。 したがって、エラーを修正せずにプログラムを実行することはできません | インタプリタは単一の文を読み取り、エラーがあれば表示します。 次の行を解釈するには、エラーを修正する必要があります。 |
入力 | プログラム全体を取ります | 単一行のコードを取ります。 |
出力 | コンパイラは中間machnieコードを生成します。 | インタプリタは中間のmachnieコードを生成しません。 |
エラー | コンパイル後のすべてのエラーをすべて同時に表示します。 | 各行のすべてのエラーを1つずつ表示します。 |
関連するプログラミング言語 | C、C++、C#、Scala、Javaはすべてコンパイラを使用します。 | PHP、Perl、Rubyはインタプリタを使用します。 |
コンパイラの役割
- コンパイラは、ソースコードを読み取り、実行可能コードを出力します
- コンピュータが理解できる命令 これは、プログラマが書き込むテキストをCPUが理解できる形式に変換します。
- コンパイルのプロセスは比較的複雑です。 これは、プログラムの分析と処理に多くの時間を費やしています。
- 実行可能な結果は、マシン固有のバイナリコードの何らかの形式です。
インタプリタの役割
- インタプリタは、実行時にソースコードを行ごとに変換します。
- Interpretは、高レベルの言語で書かれたプログラムを機械レベルの言語に完全に変換します。
- インタプリタは、実行中のプログラムの評価と変更を可能にします。
- プログラムの分析と処理に費やされる時間が比較的短い
- プログラムの実行は、コンパイラに比べて比較的遅い
高レベル言語
C、C++、JAVA、英語に非常に近いです。 それはプログラミングプロセスを容易にします。 ただし、実行前に機械語に翻訳する必要があります。 この翻訳プロセスは、コンパイラまたはインタプリタのいずれかによって行われます。 ソースコードとも呼ばれます。
マシンコード
マシン言語は、ハードウェアに非常に近いです。 すべてのコンピュータは、その機械語を持っています。 機械語プログラムは、一連のバイナリパターンで構成されています。 (例えば。 110110)これは、コンピュータによって実行されるべき簡単な操作を表します。 機械語プログラムは、直接実行できるように実行可能です。
オブジェクトコード
ソースコードのコンパイル時に、Intel、AMD、ARMなどの異なるプロセッサ用に生成されたマシンコードが異な Tコードを移植可能にするために、ソースコードは最初にオブジェクトコードに変換されます。 これは、プロセッサが理解できない中間コード(マシンコードに似ています)です。 実行時に、オブジェクトコードは基になるプラットフォームのマシンコードに変換されます。
Javaはコンパイルと解釈の両方が行われます。
コンパイラの相対的な利点を利用するには、Javaのようないくつかのプログラミング言語がコンパイルされ、解釈されているインタプリタ Javaコード自体はオブジェクトコードにコンパイルされます。 実行時に、JVMはオブジェクト-コードをターゲット-コンピュータのマシン-コードに解釈します。