acm-header
登录

ACM通信

BLOG@CACM

约翰·麦卡锡


约翰·麦卡锡

约翰·麦卡锡(John McCarthy)上周去世,享年84岁,他是计算机科学真正的巨人之一。他的贡献最引人注目的是它们的多样性、深度,以及它们如何跨越理论和实践。

要谈论他,首先要消除不公正的负面含义。麦卡锡是人工智能学科的创始人之一,是人工智能最有力的倡导者,也是人工智能这个名字的发明者。在人工智能的冬天在上世纪70年代末和80年代的一段时间里,由于詹姆斯·莱特希尔(James Lighthill)的一份严厉报告指责人工智能研究人员过于乐观,这个名字有些不光彩。事实上,人工智能的推动者可能并没有完全实现他们宣布的结果(谁能准确预测科学?)但他们的表现令人震惊。计算机科学的许多突破,无论是在理论(lambda演算和计算理论的进步)还是在编程实践(垃圾收集,函数式编程语言)上,都可以直接追溯到人工智能的工作。部分原因是我听约翰·麦卡锡自己描述过的一种现象:一旦它工作了,就没人再叫它AI了.”自动垃圾收集曾经是先进的人工智能;现在它只是一个确保我的智能手机不会死机的算法。在另一个领域,我们已经习惯了计算机经常击败国际象棋冠军,这是人工智能的批评者曾经认为不可想象的壮举。

最糟糕的过度承诺不是来自麦卡锡等理解其中困难的领域研究人员,而是来自赫伯特·西蒙(Herbert Simon)等人,他更像是一位哲学家,在1965年写下了这句话在20年内,机器将能够做任何人类能做的工作.”麦卡锡最著名的一次过度承诺,是在1968年接受大卫·列维(David Levy)的打赌:十年内没有一台计算机能打败他。但麦卡锡唯一的错误是低估了时间跨度:“深蓝”最终证明他是对的。

谈到麦卡锡,人们最自然想到的词是“才华横溢”。他属于这样一类科学家,他们会比任何人都先提出基本的见解,即使他们并不总是有耐心去完成细节。介绍Lisp[1]的令人激动的论文被标记为“第1部分”;根本就没有"第二部分"(当然,我们在计算机科学领域有一个著名的例子,这个例子来自一位著名的一丝不苟的作者,一个七卷本的条约从未完整地实现过。)宣布第二部分是不谨慎的,但第一部分足以创建一个全新的编程学院。1962年出版的Lisp 1.5手册[2]是另一部杰作;早在第13页,它就介绍了用这种语言编写的被定义语言的解释器——这是一个难以置信的壮举,特别是考虑到该程序几乎只需要半页多的篇幅!最近的读者在这里只能体会到一种发自内心的、辛酸的和无法熄灭的嫉妒,这种嫉妒在我们第一次意识到我们永远无法参加première的时候就淹没了我们唐乔凡尼1787年10月29日,在布拉格的Estates剧院(正好是224年前的昨天——你还记得庆祝吗?)在1962年的《数据处理》中,突然看到这样一本语言手册的人会有什么反应呢?

这几年,1959年到1963年,仍然属于麦卡锡安妮mirabile.1961年和1962年发表了两篇远见卓识的论文[3,4],开启了通向现代程序验证的道路(事后看来,他似乎非常接近指示语义)。他在[4]中写道

与其调试程序,还不如证明它符合规范,这个证明应该由计算机程序检查。要使这成为可能,就需要一个正规的系统,在这个系统中很容易写出证明。这样做的前景很好,因为在检查每一步时,我们可以要求计算机做比人类愿意做的多得多的工作。因此,步骤可以比目前的正式系统更大。

这些话既准确又有预见性。[3]的结论如下:

我们有理由希望,下个世纪计算和数学逻辑之间的关系将像上个世纪分析和物理学之间的关系那样富有成果。这种关系的发展需要同时关注应用程序和数学的优雅性。

“对应用和数学优雅的关注”是对麦卡锡自己工作的恰当描述。当他不忙于设计Lisp、发明元循环解释器的概念和开发编程的数学基础时,他正在构建Lisp垃圾收集器,并提出了分时的概念。在同一时期,他还在另一个里程碑式的发展中发挥了重要作用,Algol 60——这是他思想开放和多用途的另一个标志,因为Algol(尽管存在麦卡锡所拥护的递归)是一种与Lisp截然相反的命令式语言。

麦卡锡在上世纪六七十年代是斯坦福大学人工智能实验室的负责人。由于某种原因,斯坦福人工智能实验室没有像施乐帕洛阿尔托研究中心那样具有传奇色彩,但它也是革命技术的早期版本的大本营,这些技术现在已经变得司空见惯。电子邮件,这个社区之外几乎没有人听说过的东西,已经是正常的交流方式,无论是与隔壁的同事,还是与麻省理工学院的研究人员;互联网被认为是理所当然的;每个人都在使用图形显示和全屏用户界面;外面,机器人在打排球(必须说,不是很成功);自动贩卖机不收硬币,但你输入登录名,就会在月底收到账单,这种设置总能让访问者感到惊讶;论文在激光打印机上用复杂的字体打印出来(我记得有一群人直接在实验室的XGP(施乐图形打印机)上阅读马文·明斯基(Marvin Minsky)的框架论文[5]的连续几页,这些论文一页接一页地从麻省理工学院直接打印出来)。亚瑟·塞缪尔正在完善他的跳棋程序。那些没有使用Lisp编程的人都被SAIL(斯坦福人工智能语言)迷住了,这是一种令人惊叹的设计,它的深刻见解让我彻底相信,如果没有自动序列化机制的好处,就无法认真地处理数据结构。 The building itself, improbably set up amid the pastures of the Santa Cruz foothills, was razed in the eighties and the lab moved to the main campus, but the spirit of these early years lives on.

麦卡锡以一种开放的、几乎是温文尔雅的方式管理着实验室。他是一个传奇人物,有点吓人,但从不傲慢,实际上非常平易近人。我从他那里学了Lisp语言课程;在斯坦福的第二或第三周,我举起手,以一个完全无知的人的镇定自若的自信,慢慢地问了一个很长的问题:到目前为止,在您所展示的所有递归函数定义中,终止都是显而易见的,因为在每次递归调用中都有某个'n'减少,我们以一种特殊的、非递归的方式处理'n = 0'或'n = 1'的情况。但事情不会总是这么简单。有什么语法我们可以用来确定递归定义是否总是导致终止计算的Lisp程序的标准?观众席上年龄大一些的研究生集体倒吸了一口气,他们惊讶于一个新手竟然敢用这样一个不合格的问题打断课程。但麦卡锡并没有把我打发走,而是微笑着解释了不确定性的基本原理。在他教授的许多研讨会上,他的态度都是一样的,主题往往跨越计算机科学和哲学,以一种苏格拉底式的风格,欢迎任何意见,没有人可以不受批评。

他也有幽默的一面。麦卡锡在SRI的演讲结束时,托尼·霍尔(Tony Hoare)问了一个问题。麦卡锡立即反驳说,这个问题他早就料到了,他把AI实验室一名拿着吉他的研究员叫到台上,用准备好的歌曲的形式回答了这个问题。

科学技术的进步是集体的努力;将新的见解转化为日常现实需要很多人的努力。这些见解本身来自少数人,每一代人中的少数人。麦卡锡是这些无可争议的先驱之一。

参考文献

[1]约翰·麦卡锡:符号表达式的递归函数及其机器计算,第一部分,在ACM通信,第3卷,第3期。4, 1960年,184-195页。

John McCarthy, Paul W. Abrahams, Daniel J. Edwards, Timothy P. Hart, Michael I. Levin, LISP 1.5程序员手册,MIT, 1962。可以在亚马逊同时作为PDF

[3]约翰·麦卡锡:《计算数学理论基础》1961年,西部联合计算机会议第一版,年修订版计算机程序设计与正式系统“,, eds。P. brafford和D. Hirschberg,北荷兰,1963年。可在网上的不同地方获得,例如:在这里

[4]约翰·麦卡锡:面向计算数学科学,载于1962年IFIP大会,第21-28页。在这里

[5]马文•明斯基:表示知识的框架, MIT-AI实验室备忘录306,1974年6月,可用在这里


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
Baidu
map