- 发布日期
是什么
LISP 是一种编程语言,名字是「List Processor」(列表处理器)的缩写,链表(linked list)是它的主要数据结构之一[1]。它的源代码本身由列表构成,因此程序可以把自己的源代码当作数据来操作,这也是它宏系统的基础[1]。计算机历史博物馆从另一个角度描述同一个特点:LISP 的一个关键特征是数据和程序都只是括号里的列表,于是一个程序可以把另一个程序、甚至把它自己当作数据来处理[3]。链表在通常意义上是一串彼此相连的项,每一项指向下一项,因此列表可以被延长、拆分或整段传递,而不必作为一整块被复制。
由来
约翰·麦卡锡(John McCarthy)1958 年在麻省理工学院(MIT)开始开发 LISP[1];计算机历史博物馆的时间线同样把 LISP(List Processing 的简称)的发明定在 1958 年的 MIT[3]。维基百科则把这种语言的首次出现列在 1960 年[1]。1960 年 4 月 1 日,麦卡锡在《ACM 通讯》(Communications of the ACM)上发表了它的设计,论文题为 "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I"[1];麦卡锡在斯坦福大学的页面也把这篇 1960 年 4 月发表的文章称作关于 LISP 的原始论文[2]。
LISP 最初是作为计算机程序的一种实用数学记法而创造的,它受到阿隆佐·丘奇(Alonzo Church)的 lambda 演算影响,但最初并非由后者派生而来[1]。那篇论文表明,只用少数几个简单算符,再加上一种借自丘奇的匿名函数记法,就能构造出一门图灵完备(Turing-complete)的算法语言[1]。图灵完备在通常意义上指的是:这门语言足以表达通用计算机所能完成的任何计算。
实现与早期版本
这种语言最早由 Steve Russell 在 IBM 704 上用穿孔卡片实现,起因是他意识到 eval 函数可以用机器码实现[1]。在那台机器上,两个汇编宏 car 和 cdr 成了取出列表第一个元素与列表其余部分的原语[1],这两个名字此后再没有离开这种语言的词汇表。LISP 1.5 是第一个广泛分发的版本,由麦卡锡等人在 MIT 开发[1]。
第一个完整的 LISP 编译器由 Tim Hart 和 Mike Levin 于 1962 年在 MIT 用 LISP 本身写成,据报告比解释器快 40 倍[1]。垃圾回收(garbage collection)例程由 MIT 研究生 Daniel Edwards 在 1962 年之前开发,LISP 引入了自动垃圾回收这一概念[1]——也就是说,判断某块内存已经无法再被访问、可以回收,由语言运行时而不是程序员来做。
在人工智能研究中的位置
LISP 很快成为人工智能研究偏爱的编程语言[1],计算机历史博物馆也指出,它至今仍被用于大量人工智能应用[3]。让它长期有用的正是前面说的性质:代码和数据具有同样的列表形式,程序因此可以把别的程序当作普通的值来构造、检查和运行,这比以算术运算为主的语言更适合符号处理。
作为基础1
贡献者1
注释与来源
- Lisp (programming language)https://en.wikipedia.org/wiki/Lisp_(programming_language)
- Recursive Functions of Symbolic Expressions and Their Computation by Machine (Part I)https://www-formal.stanford.edu/jmc/recursive.html
- AI & Robotics - Timeline of Computer Historyhttps://www.computerhistory.org/timeline/ai-robotics/
引用本页: LISP 语言. TellWorld, https://www.tellworld.net/zh/products/lisp. 更新于 2026-11-07