LISP 成熟

2021-08-02 01:38:55

1980 年 8 月,我从俄亥俄州飞来参加在斯坦福大学举行的人工智能会议(AAAI),从而导致了我的 Byte 关于 AI 的封面故事。这是一次巨大的冒险,将我与一些了不起的人联系起来……在玩过 Dolphin 和 Dorado 位图机器后,我在施乐 PARC 的一个晚上有着美好的回忆,这些机器后来启发了 Macintosh,与计算机音乐极客一起玩,一个闪闪发光的与 Doug Hofstadter 和 Scott Kim 共进晚餐,与科幻作家 James Hogan 和 Vernor Vinge 会面,跌跌撞撞地进入 FORTH 亚文化,潜入 AI 社区过早的繁荣,重新与 Godbout Electronics 的帮派重新建立联系,这些帮派激发了我的 Cyber​​tonics 零件业务 6几年前,如果我降落在硅谷而不是在中西部苦苦挣扎,生活会是什么样子。除了无缘无故的掉名和伤感回顾,这是一个疯狂的一周,完成了一次侧面冒险,包括抓捕闯入斯坦福宿舍的徘徊者并结识校园警察(勉强逃脱可怕的遭遇,独自一人在三层楼宿舍楼,会议开始前几天)。在 AI 活动即将结束时,我发现第一次 LISP 会议即将举行,因此我敦促 Byte 的编辑延长我在校园的逗留时间。一时兴起,他们说要去做,所以我作为一个新手,全身心地投入到语言文化中。 (我还遇到了特雷西德纪念联盟的首席警察,并告诉了他这个消息。“好吧!也许我们又抓到了另一个窃贼!”)无论如何,这是最终的作品,从未发表过(编辑想要详细的技术关于 LISP 编程的文章,这更符合文化哲学……尽管它告知了我正在编写的教科书中的 AI 编程部分)。感谢 Steve Orr 对我于 1980 年寄给他的手稿进行了 2018 年的扫描/OCR,使其在 38 年后重获新生。八月底的两周里,斯坦福大学的校园里热闹非凡。当然,对于斯坦福大学来说,这并不是一个非常不寻常的现象,但在这个特殊的场合,它代表了一个杰出的头脑研讨会——所有这些都以某种方式涉及人工智能 (AI) 和 20 世纪后期计算机科学的相关挑衅性方面。两个背靠背的事件为这次脑肿块的遭遇奠定了基础。第一届全国人工智能年度会议吸引了来自世界各地的 1,000 多名研究人员。另一个有近 300 名参加者是 1980 年的 LISP 会议。这两个事件提供了一个难得的机会来吸收当前人工智能研究的广谱图景。对人工智能及其适当工具的兴趣并不是一个新现象,但它正在迅速达到指数增长曲线的“拐点”。曾经是一小群纯学术研究人员的专属和深奥领域的兴趣现在正在成为工业工程师、医生、教育工作者、随机技术专家和业余爱好者的负责人。越来越清楚的是,要真正成为“智能放大器”,计算机本身必须足够智能,才能与人类进行相对不受约束的交互。这是一个相当可靠地触发情绪反应的主题——要么是激动人心的热情,如斯坦福大学的情况,要么是对人类与生俱来的优越感被侵蚀的偏执沮丧。 “这太可怕了,”一些人在思考新勒德派对机器大师的奴役形象时说。但我们掌握的是“知识工程”技术——其中技术的组合使系统能够在各种领域中的任何一个领域表现出专家级的性能。

这些系统正在成为强大的工具(在医学诊断、数据库查询系统、计算机辅助设计、地球资源测绘和法律援助等领域),并且能够有效地整合和使用积累的人类知识财富关于一个主题,为我们提供了一个巨大的新知识资源。如果这似乎有点“奇才”,请考虑:人类知识可以说是由两大类信息组成。第一个可以称为事实知识,它由相对“硬”的数据组成——教科书式的知识和其他事实,它们构成了图书馆和其他现有信息资源中最明显的主体。第二个,我们称之为启发式知识,有点难以确定。它包括判断力、直觉、关系概念和来自某个领域经验的良好猜测的艺术。它还包括智力任务特定领域之外的知识:解决问题的策略和“如何思考”的非象征性意识。这被称为元知识。当前和未来人工智能系统最值得注意的一个特点是,它们不仅包含限制“传统”系统的事实知识,还包含启发式知识。这意味着可以使系统表现出智能行为,而无需采用经典蛮力方法所特有的超高速详尽搜索和模拟算法。通过精心构建将启发式知识隐含在其结构中的数据库,可以以与我们人类思维方式更密切相关的方式访问事实知识及其关系。一个系统拥有的启发式知识越多,它需要搜索的就越少——当我们作为高度并行的系统设法通过一个高度关联的任务(例如图像识别)来完成它时,它就会越少陷入困境。最小的有意识的努力。但是,在我们拥有数百万个元素的“体表组织的分层计算机”(参考文献 7)之前,我们在创建智能机器时面临一个核心问题:计算机本质上是串行设备。大脑似乎在同时激活广泛分布的资源时执行的操作,计算机必须通过精心执行算法来执行,这些算法以某种方式服务于实现相同的目的。通常这种二分法是显而易见的,但计算机提供的补偿之一就是速度。编写程序的任务——无论是用汇编级代码、BASIC、PASCAL 还是其他代码——传统上都以一组特定的学科为特征。本质上,程序员必须定义某种算法来实现目标,然后使用一组特定的工具(编程语言)将该算法映射到计算机的可用资源上。一个想法从其概念形式到其编码形式的转换涉及接受近乎残酷的语言限制,这导致该过程的严格形式化。程序员从他希望系统做什么的想法开始,然后花费数小时或数月来描述应该如何完成。这项任务的普遍接受的复杂性催生了一些相当精细的学科,以减少出错的可能性。其中包括后来被称为“结构化设计”的一系列戒律。您可能已经目睹了关于自上而下和自下而上设计的相对优点的激烈斗争——每一种都提出了一种设计程序的受控方法,并希望使其工作。

但是这一切都存在问题,当手头的编程任务不涉及帐户的顺序处理或通信渠道的轮询,而是涉及人类认知过程的建模时,这些问题就会变得尤为严重。当唯一可用的语言需要以与人类思维完全不同的方式表达问题时,编写程序以通过数据对象的属性关联数据对象或执行演绎推理几乎是非常困难的。这是可以做到的,但很少有人顽固地去尝试。传统编程与人工智能问题所要求的类型之间的根本区别在于,后者涉及结构相互关系和抽象符号,而前者通常可以从数字方面考虑。早期尝试跨越这种二分法导致将符号问题映射到或多或少等价的数字问题,但在此过程中,问题表达的大部分自然性都丢失了。常见的编程语言可以巧妙地分为“解释器”和“编译器”两类,这取决于语言翻译器在任何给定时间为转换为机器代码而咬掉的源文本的数量。 LISP 不能被放置在任何一个类别中,除非被不舒服地强制放入模具中。大多数语言的工作原理是吸入基本无差别的 ASCII 字符串、检测某些定界符、识别标签和保留字、确定适当的目标代码段或子程序调用,以及执行(如果是解释器)或添加将新的对象语句添加到输出文件中。不能说 LISP 的行为方式如此。典型的编程环境对程序员施加了严格的语法限制,并提供了有限的一些原始(用人类术语来说)工具供使用。尽管可以从这些原语构建复杂的工具(宏、子程序、库),但语言本身并没有改变——它的结构刚性几乎是结晶。 APL 被比作一颗钻石,不能通过添加第二颗钻石将其制成更大的钻石。在这种情况下,LISP 是一个粘土球。它的“可扩展性”特性允许语言本身无限制地增长,为程序员提供更复杂的、定制的工具。在几乎任何编程语言中生成自修改代码都被认为是不好的做法。它很难调试,不可重入,并且通常是病态的(尽管有时令人眼花缭乱)。但是 LISP 不区分函数和数据。就其本质而言,它是一个动态且不断发展的环境——改变其形状和质地以适应任务。矛盾的是,乍一看似乎是一团乱麻,LISP 在优雅和简单方面胜过他们。 (在这个行业中,有近十二种相互竞争的计算机语言经常对峙,并得到坚定的、几乎好战的支持者的支持。忍受我。)几乎任何你能命名的语言都具有用于操作数字的内置函数数据,这些函数的范围通常非常适合所讨论语言的应用领域。但是,几乎任何语言在面对有效表示符号信息的任务时都会在其解析器上表现不佳——不是在“CRLF 是 0D 十六进制的符号”的意义上,而是在表示思想的意义上,例如:“DOG 是一个符号对于肉食性的四足家养哺乳动物而言,PHYDEAUX 是一种特殊狗的象征。”

这有各种各样的含义。最引人注目的一个,特别是考虑到产生本文的会议,是 LISP 作为表达 AI 编程问题的流动媒介的形象。它不仅允许以独立于表征编码的相对抽象的方式编写过程,而且由于缺乏功能数据区分,它为程序提供了一种通过修改或扩展自身来编码新信息的方法。 (我不是在这里尝试将其固定下来,而是请您参阅参考文献 3。)很明显,这种语言与计算机世界中大量存在的更具体的语言处于相当不同的抽象级别。坐在 LISP 机器前并构建程序是一项高度交互的任务,其中所需的系统以增量方式出现。设计师塑造工具和数据结构,凭经验进行尝试,构建和修改子组件,然后逐渐将所有内容集成到“生产系统”或完成设计中。该系统支持真正的调试,处理存储管理的细节,并且通常以一种“友好”的方式运行,对于那些在编程生涯中花费大量时间将整体代码聚合成不仅可以编译(或解释、汇编或无论如何)没有错误,但也有效 - 或者至少似乎适用于可以方便地测试的所有条件集。 LISP 系统有助于实现想法;它不只是将定义的算法转换为机器代码。据推测,所有这些狂热的语气暗示了 LISP 会议存在背后的一些基本原理,该会议吸引了来自各地的积极参与者,并产生了 247 页的会议记录,除了热情之外。因为,根据定义,LISP 不是具体的,它的用户群在开发新工具、新应用程序和看待计算机系统的全新方式方面一直非常活跃。除了活跃和精力充沛的人之间持续互动的魔力之外,会议还提供了为期三天的技术会议计划。这些都不是介绍性的(这一事实使作者争先恐后地去书店进行一些激烈的会前填鸭式),尽管在会议开始前的星期五,LISP 公司的 John Allen 提供了一个教程.该计划以约翰·麦卡锡 (John McCarthy) 的讲话开始,他是 LISP 的老大哥,他在 1958 年与马文·明斯基 (Marvin Minsky) 作为麻省理工学院人工智能项目的联合创始人一起工作时,诞生了最初的实现。他当时认识到,在数字计算环境中结构相互关系的表达充其量是尴尬的。现在,仅仅过了 21 年,随着 LISP 成为现存第二古老的计算机语言(在 FORTRAN 之后),作为斯坦福人工智能实验室的主任,他仍然非常活跃在该领域。在他的演讲中,他通过指出导致语言长寿的因素并指出需要改进的领域,为随后的许多会议活动定下了基调。随后进行了一系列讨论,从浅显深奥到平流层,其中详细阐述了惰性可变范围机制、多处理环境中的 LISP 和自然语言处理等广泛多样的主题。

在会议的第三天也是最后一天,就未来 LISP 的一般主题进行了小组讨论。这个最令人惊叹的组合的各个成员经常用疯狂的手势交替地拥护和谴责这种语言的激烈竞争特征,空气中充满了兴奋。讨论由埃塞克斯大学的布鲁斯·安德森 (Bruce Anderson) 主持,作者的笔记本见证了其对事件的机智和辛酸的疯狂涂鸦:“LISP 不是一种语言——LISP 永远不会消亡。这是一种生活方式。” “LISP 是在新想法周围加上括号并表示它们一直存在的艺术。” “DWIM,而不是 DWTWHMY(按照我的意思去做,而不是按照昨天的意思去做)。” “LISP 的核心在编程语言领域占据了某种局部最优。” “……离机器如此之近,你可以感觉到脚趾之间的缝隙……” VAX 系统(以及其他,咳咳,计算机设计师艺术的其他表现形式)在 LISP 世界中的主导地位不再是避免你当你面对这样的一篇文章时,凝视。正如 BYTE 页面定期显示的那样,在“微型”世界中发生了很多事情,64K RAM 卡的组装售价低于 8008 天 6K 2102 的芯片成本。其无穷无尽的影响之一是内存吞噬者(例如在 CDOS 和 CP/M 下运行的 LISP)的实际可用性。

即将发行的 BYTE 将发表一篇关于某些微处理器 LISP 相对优点的调查文章,但我们可以在此注意到 Cromemco、The LISP 公司和 The Soft Warehouse 都提供了健康的版本,可以在小型系统中实际投入使用.在某个地方,人与机器之间的相互关系存在理论上的最优解。每个人都有自己擅长的领域;每个人都在另一个极端受苦。最终的计算机器很可能不是针对稀疏矩阵构造优化的百万节点多处理器,而是一种与其人类主机很好地集成的更便宜的启发式系统。也许不会。但如果不是,我们还有很多年可以生存,直到类脑系统在少数资金充足的研究实验室之外首次亮相。无论如何,一个渴望“智能放大”的人类面临的选择很多。有很好的 ole BASIC,但出于某种原因,它并没有激发太多的国际会议。它也是两个世界中最糟糕的——它不仅对符号表示很尴尬,而且与流行的结构概念相反。有许多语言并没有那么响亮,但在所有语言中,LISP 似乎是最字面意义上的个人计算的主要候选者。 Allen, John,“LISP 概述”,LISP 上的 BYTE 特刊,1979 年 8 月。Steven K. Roberts 是一名全职作家和兼职微处理器系统顾问,目前居住在俄亥俄州哥伦布附近。他从事工业系统设计和家庭计算已有 6 年的时间,并发表了 30 多篇关于他的工作的文章。他的第一本书 Micromatics 最近由 Scelbi 出版,他现在正在为 Prentice-Hall 编写带有微型计算机的工业设计。随着将 Cromemco LISP 添加到他的家庭系统中,他逐渐屈服于对人工智能的痴迷——“现在个人计算再次变得有趣了。”后来在这次和随后的 AI 会议上研究的一篇文章,重点是编程问题,题为 To Teach A Machine,并于 1982 年 1 月发表在麻省理工学院的技术评论中。