美文网首页
lisp语言

lisp语言

作者: 天边那一抹 | 来源:发表于2018-04-19 09:36 被阅读37次

    Lisp语言是最简洁有效的编程语言。主要原因有两个:1.设计的初衷不是为了方便程序员编程写代码,而是用于定义图灵机;2.这种语言本质上不是一种技术,而是数学,程序由表达式(expression)组成。

    此外,Lisp有9种设计思想,也是保证它有效的原因:

      1. 条件结构(即"if-then-else"结构)。现在大家都觉得这是理所当然的,但是Fortran I就没有这个结构,它只有基于底层机器指令的goto结构。

      2. 函数也是一种数据类型。在Lisp语言中,函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation),能够储存在变量中,也能当作参数传递。一种数据类型应该有的功能,它都有。

      3. 递归。Lisp是第一种支持递归函数的高级语言。

      4. 变量的动态类型。在Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。复制变量就相当于复制指针,而不是复制它们指向的数据。

      5. 垃圾回收机制。

      6. 程序由表达式(expression)组成。Lisp程序是一些表达式区块的集合,每个表达式都返回一个值。这与Fortran和大多数后来的语言都截然不同,它们的程序由表达式和语句(statement)组成。

    区分表达式和语句,在Fortran I中是很自然的,因为它不支持语句嵌套。所以,如果你需要用数学式子计算一个值,那就只有用表达式返回这个值,没有其他语法结构可用,因为否则就无法处理这个值。

    后来,新的编程语言支持区块结构(block),这种限制当然也就不存在了。但是为时已晚,表达式和语句的区分已经根深蒂固。它从Fortran扩散到Algol语言,接着又扩散到它们两者的后继语言。

      7. 符号(symbol)类型。符号实际上是一种指针,指向储存在哈希表中的字符串。所以,比较两个符号是否相等,只要看它们的指针是否一样就行了,不用逐个字符地比较。

      8. 代码使用符号和常量组成的树形表示法(notation)。

      9. 无论什么时候,整个语言都是可用的。Lisp并不真正区分读取期、编译期和运行期。你可以在读取期编译或运行代码;也可以在编译期读取或运行代码;还可以在运行期读取或者编译代码。

    相关文章

      网友评论

          本文标题:lisp语言

          本文链接:https://www.haomeiwen.com/subject/ckbikftx.html