私は自分のおもちゃのプログラミング言語に取り組んでいます。今のところ私はASTのソース言語を解釈していますが、バイトコードにどのような利点があり、それを解釈することでどのような利点が得られるのでしょうか?今のバイトコードにコンパイルする動機は何ですか?
私は心の中で三つがあります。
- 時間の構文木の何百ものトラバースは、(1)ランダムアクセス(すなわち特にアレイサポートO場合、配列内の命令を実行するよりも遅くなることがあります。 10命令を上下にジャンプ)。
- 型付き実行環境では、ASTが型指定されているため実行時にコストがかかりますが、私は常にそれをトラバースしています(つまり、10種類のノードがあります。実行する)。型指定されていないバイトコードにコンパイルすると、これを改善するのに役立つかもしれません。タイプチェックとコンパイルの後に、タイプのない値とコードがあるからです。
- バイトコードにコンパイルすると、移植性が向上する場合があります。
ポイントは正しいですか?バイトコードのコンパイルの背景にあるその他の動機は何ですか?
あなたのコードの移植性が向上します – Luis
@ルイス、これはすでに私の心の上にあった、私は追加することを忘れていました。 – sinan
@ルイス:それは偽です。シリアル化されたASTは、同じように移植可能にすることができます。実際、バイトコードは移植可能ではありません。 Pythonバイトコードは、インタープリタの各バージョンに固有のものです。 –