Compiler vs Interpreter
3998 ワード
const
、let
、var
から、知らない単語や概念が多いので、勉強しながら整理してここまで来ました.今日は、JavaScriptコードを実行する原理、すなわちinterpriterに似ていますが、他の原理とは異なるコンパイラについてお話しします.
Compiler vs Interpreter
コンピューター言語を観察すると、コンパイル言語、interpreter言語という言い方があります.実は、私がこのブログのために勉強する前に、私もこのような直訳をコンパイル、編集、印刷、翻訳するしかありませんでした.
Conpiler
コンパイラとinterpreterの最大の違いは、コンパイル作業がユニークであることです.
コンパイラまたはプログラミング言語の特性に応じて、コンパイル操作はいくつかのステップをスキップしたり、より詳細なステップに分割したりすることがありますが、基本的なステップはそうです.
1.構文解析
構文解析フェーズでは、一連の文字列を有意義なタグに分解し、これらのタグからなる解析ツリーを作成するプロセスです.
抽象概念をコードで表現して理解を助ける.
const writer = 'tess';
簡単なjs変数宣言コードをコンパイルすると、それをグループ化するプロセスがそうなります.[const, writer, =, ', tess, ']
このように変換する過程が最大の分解過程である.(分かりやすいようにjs Arraytypeと表記します.)分解したタグを解析ツリーにマージします.
{
type: const,
content: {
key: {
content: writer
},
value: {
type: string,
content: tess
}
}
}
こんな風に作られているはずです.(もちろん、これも理解を助けるためにjs Objecttypeとして表しています.)2.最適化
抽象構文ツリーを解析して最適化します.
このステップでは、到達できないコードを識別したり、定数式を事前に計算したり、ループを解いたりするなど、ほとんどの最適化が実行されます.
const writer = 'tess';
writer = '김코딩';
コードをコンパイルすると、抽象構文ツリー化されたコードをスライスフェーズで解析すると、定数writerに「kim coding」を再割り当てしようとするコードが、そのフェーズでは達成できないコードとして認識され、エラーに分類されます.3.コード生成
コンパイルは、ソースコードが存在する言語をソースコードが作用するプラットフォームの操作可能言語とは異なり、ソースコードをプラットフォームが操作可能な言語に変換する操作であり、コード生成段階の目的コードは、最適化された構築ツリーをプラットフォームが操作可能な言語に変換することである.
Interpreter
このような操作手順でコンパイルを行い,interpreterではコンパイルを行わない.
どうしても段階的に分けなければならないなら、
最終的には
Compiler vs Interpreter
2つの駆動方式の長所と短所を考察し,この文章を終了した.
Compiler
Interpreter
Reference
この問題について(Compiler vs Interpreter), 我々は、より多くの情報をここで見つけました https://velog.io/@tess/Compiler-vs-Interpreterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol