by イグトランス » 2006年12月13日(水) 23:27
最終的にプログラムは機械語に変換されて実行されます。
JavaScriptはインタプリタと呼ばれるプログラムの下で実行されます。
インタプリタがその場でソースファイルを機械語に変換しながらプログラムは実行されていくのです。
そしてEvalは、その動作に介入し、一時的に(ソースファイルからではなく)メモリ上の文字列から読み込むようにしているのです。
ファイルからだろうとメモリからだろうと、ソースコードをどこから読み込んだか構うことなくインタプリタは処理します。
一方、現在のActiveBasicは、コンパイラによってソースファイルは予め機械語のプログラムに翻訳され、EXE/DLLの形になります。
そのためEXE/DLLになったプログラムの実行にインタプリタは不要ですが、
逆に言うとメモリ上の文字列としてソースコードがあったとしても、それを機械語へ変換するインタプリタが実行時には存在しないため、Evalを実装することはできないのです。
やるとしたら、konisiさんが示したURLでのトピックのように、自分でインタプリタもどきを作ることになります。
#インタプリタなら必ずEvalを備えているわけではありませんし、コンパイラ型でもEvalを使える言語だってありますけど。
最終的にプログラムは機械語に変換されて実行されます。
JavaScriptはインタプリタと呼ばれるプログラムの下で実行されます。
インタプリタがその場でソースファイルを機械語に変換しながらプログラムは実行されていくのです。
そしてEvalは、その動作に介入し、一時的に(ソースファイルからではなく)メモリ上の文字列から読み込むようにしているのです。
ファイルからだろうとメモリからだろうと、ソースコードをどこから読み込んだか構うことなくインタプリタは処理します。
一方、現在のActiveBasicは、コンパイラによってソースファイルは予め機械語のプログラムに翻訳され、EXE/DLLの形になります。
そのためEXE/DLLになったプログラムの実行にインタプリタは不要ですが、
逆に言うとメモリ上の文字列としてソースコードがあったとしても、それを機械語へ変換するインタプリタが実行時には存在しないため、Evalを実装することはできないのです。
やるとしたら、konisiさんが示したURLでのトピックのように、自分でインタプリタもどきを作ることになります。
#インタプリタなら必ずEvalを備えているわけではありませんし、コンパイラ型でもEvalを使える言語だってありますけど。