LISP 1.5 lisp 与机器语言有何相似之处?

标签 lisp racket s-expression machine-code computer-science-theory

我希望 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/

相关文章:

emacs - Scheme 中最接近 Slime 的东西是什么?

json - 在 lisp 中写 json 对象

list - 使用 Scheme 递归添加到列表

lisp - 为什么我们需要 `nil` ?

lisp - 破坏性地反转 s 表达式中的每个 cons 节点

lisp - SICP 练习 1.37 : My iterative solution got the right answer but got wrong in 1. 38

lambda - 理解 Scheme 函数

使用记忆化计算组合 nCk 的方案

html - XML、S-Expressions 和重叠作用域……它叫什么?

lisp - AutoCAD 将文件另存为另一个路径中的同名副本 : "Object reference not set to an instance of an object"