我希望 John McCarthy还活着,但是……
来自 LISP 1.5 Programmer's Manual :
LISP can interpret and execute programs written in the form of S- expressions. Thus, like machine language, and unlike most other higher level languages, it can be used to generate programs for further execution.
我需要更多关于如何使用机器语言生成程序以及 Lisp 如何做到这一点的说明?
最佳答案
也就是说,机器代码可以直接将机器指令写入内存并跳转到那些指令来执行它们;事实上,这是许多攻击软件的基础。
重点是,当您编写机器代码时,很容易生成机器代码。但是当您使用 C 等编译语言编写时,您不能只在运行时生成 C 代码然后执行它 - 除非您的程序包含 C 编译器。
Lisp - 以及如今许多其他语言,尤其是“脚本语言”,如 Perl、Python、Ruby、Tcl、Javascript 和命令 shell - 能够执行在运行时生成的代码。在 Lisp 中,由于代码和数据具有相同的结构,因此这通常比在其他语言中的工作要少,在其他语言中,要评估的代码通常是必须解析的字符串。 (尽管 Perl 有能力eval
一个 block 而不是一个字符串,这让编译器可以提前对文字代码进行解析。)
关于LISP 1.5 lisp 与机器语言有何相似之处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18220404/