我很难理解这一点。
让I_L ^ M成为在机器M上运行的语言L的解释器。假设您可以访问用语言L编写的程序I_K ^ L,它是语言K的解释器。您现在能否(无需编写任何其他内容)翻译或口译)用K语言编写和运行程序?请解释一下。
我认为这是不可能的,因为解释器输出字节代码或其他东西。这很难理解,我想我正在过度思考它。任何帮助都会很棒!
答案 0 :(得分:1)
是的,您应该能够以K
语言运行程序。
考虑一个具体的例子可能有所帮助:让L
成为Python,让K
成为Lisp。 I_L^M
是您可以为您的机器M
获取的Python解释器,并用于运行各种Python程序。一个这样的程序是I_K^L
,一个用Python编写的Lisp解释器。在lisp.py中说出来。然后你会调用:
python lisp.py
Python解释器将启动,打开lisp.py,并执行它在那里找到的Python代码,这将(例如)启动一个Lisp read-eval-print循环。或者你可以调用
python lisp.py fibonacci.lisp
让Lisp解释器在fibonacci.lisp中运行Lisp代码。
由于你提到字节代码:在内部,Python程序可能会将lisp.py转换为字节代码,然后执行 。但是,除了可能创建.pyc文件以节省后续运行时间之外,这对您来说几乎是不可见的。