Compiler vs Interpreter


constletvarから、知らない単語や概念が多いので、勉強しながら整理してここまで来ました.
今日は、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

  • ソースコードは行ごとに読み取り、実行され、実行時間が遅い.
  • もコード変換プロセスが簡単であるため、セキュリティ面で不安である.
  • ですが、コードの変更時に直ちに実行してフィードバックすることができます.
  • は、伝送時にコードのみを送信することもできるので、容量面でも比較的小さい.