奎克的藏经阁 · 原书印刷页

智慧的疆界 从图灵机到人工智能 · 第 81 页

PDF 物理页索引 96 · 内容简介

书名
智慧的疆界 从图灵机到人工智能
作者
未记录
印刷页
81
PDF 物理页
96(从 0 开始)
章节
内容简介
UUID
cf76bc49-7e9b-4f42-bee8-3050a9fb9feb
来源类型
original_book
页面 SHA-256
5e514968cf14f569ca67903fcf9c3e068566b9ad36f5ab7a3e9183c55f5aa6ef

但即使是为了验证这种计算机自动推理知识的可行性,麦卡锡也做了相当多的工作。他借鉴了纽厄尔和司马贺之前提出的 IPL(见第 2 章关于人工智能这门学科名字之争那部分),在 1960 年又发表了一篇名为《递归函数的符号表达式以及由机器运算的方式,第一部分》(“ Recursive Functions of SymbolicExpressions and Their Computation by Machine, Part Ⅰ”)的论文。论文中阐述了只通过七个简单的运算符以及用于函数的记号来构建一个具备图灵完备性的语言的想法(这其实就是通过计算机实现邱奇的 Lambda 演算),并将这种语言命名为 LISP(LISt Processing 的缩写,链表处理)。麦卡锡自己并未提供 LISP的实现程序,但他的学生史帝芬·罗素(Steve Russell)阅读完此论文后,在麻省理工学院的 IBM 704 计算机上成功完成了最初版本的 LISP 编译器,实现了最初版的 LISP。

LISP(及其方言变种,如 Clojure)直至现在仍然是活跃的编程语言,以前从事传统人工智能领域开发工作的程序员一般都要掌握 LISP,大量老式的人工智能软件系统都是用 LISP 编写的,与今天 Python 在人工智能编程中的地位相似。

假如有人说 Prolog 是最适合人工智能的编程语言,那么任何使用过 Prolog的人都不会怀疑这一点,因为 Prolog 就是为了逻辑推理而生的,解决类似上面“如何去机场”这种问题会显得无比流畅、自然。但许多编程语言书籍中还会讲到“ LISP 也是最适合人工智能的编程语言”。如果抛开 LISP 的作者是麦卡锡这个传承因素的影响,真的接触或使用过 LISP 的程序员可能看到这里也会对这种表述感到奇怪:LISP 与人工智能之间到底“适合”在哪里?

它们之间的联系可以从 LISP 的名字“链表处理”开始说起,LISP 是历史上第二悠久而且迄今仍然被广泛使用的高级程序语言,如果把它与另一门最为古老的语言 FORTRAN(1957 年发明)相比较,容易看出 FORTRAN 基本上是围绕处理数组建立的,LISP 则是围绕处理链表来实现的。数组和链表是两种最常用的线性数据结构,它们各有特点,但如果仅讨论用来存储逻辑推理涉及的符号的话,那链表显然要比数组合适得多,因为数组要求每个元素具有相同的数据结构,而多种多样的符号即使能设计成一种统一的数据结构来存储,空间效率也必定不会高到哪里去。

第 3 章 符号主义学派

81