私は自分のおもちゃのプログラミング言語に取り組んでいます。今のところ、私は AST からソース言語を解釈しています。バイトコードにコンパイルしてからそれを解釈すると、どのような利点が得られるのか疑問に思っています。
今のところ、次の3つのことを念頭に置いています。
- 特に配列が O(1) ランダム アクセス (つまり、10 個の命令を上下にジャンプ) をサポートしている場合、構文ツリーを何百回もトラバースすると、配列内の命令を実行するよりも遅くなる可能性があります。
- 型付けされた実行環境では、AST が型付けされているため、ランタイム コストが発生します。また、AST を常にトラバースしているためです (つまり、10 種類のノードがあり、現在実行している型を確認する必要があります)。型のないバイトコードにコンパイルすると、型のチェックとコンパイルの後、型のない値とコードになるため、これを改善するのに役立つかもしれません。
- バイトコードにコンパイルすると、移植性が向上する場合があります。
私のポイントは正しいですか?バイトコードへのコンパイルの背後にある他の動機は何ですか?