1. ホーム
  2. javascript

[解決済み] angularコンパイラは何を「コンパイル」するのですか?

2023-03-14 15:25:16

質問

今日も聞かれたのですが、うまく答えられませんでした。

TypescriptはJSにトランスパイルされます。そして、ツリーシェイク、"less" (オプション)、および配置を作成するプロセスにおける他のものがあります。しかし、(afaik) そのようなものは何も "compiling" とは関係ありません。すべてはバンドルされ、高度に最適化されますが、実際にはコンパイルされていないのですね?

さらに "ahead of time"-compiler があり、これは本当に顕著な仕事をします。何が足りないのでしょうか?

Javascript自体はまだインタプリタなんですよね?

どのように解決するのですか?

あなたは、コンパイルとは、ソースコードからマシンコードや低レベルのコードなどを生成することだと思い込んでいます。しかし、コンパイルとは実際には、あるソース コードを別のソース コードに変換することを意味するだけです。ですから、Typescript を取って JavaScript を生成するというのは合理的であるように思えますが、これは 形式 であると言うことができます。これは、(たとえば) c# が IL 言語にコンパイルされたときに行うことと似ていなくもない。

とはいえ、より良い言葉としては トランスパイル . 私は、Typescript コンパイラが より良い Transpiler として記述されることを提案します。

この違いは微妙で、トランスパイルはコンパイラの一種と考えることができます。しかし、(純粋な)コンパイル言語は、(通常は)C# の例のように、高レベルの言語を(機械語に近い)低レベルの言語に変換するものです。トランスパイラとは、高レベルの言語を同じようなレベルの(抽象化された)言語(高レベルの言語)に変換するものです。 *

コンパイルされたコードの結果は、通常 自分で書くような言語ではありません。 . トランスパイラの結果は、別の高級言語です。理論的には、(例として)ILを書くことはできますが、それは実際にはコンパイラによって生成されるように設計されており、これを行うためのツールやサポートはなく、C#/vb.netをコンパイルすることによってILを生成するだけです。一方、Javascript はそれ自体で使用可能な (そして使用される) プログラミング言語です。

*これらの言葉の定義とその使用方法はかなり曖昧であるため、多くの注意事項があります。