8. 程序设计
并不是所有的AI论文都包含代码,而且本领域的很多重量级人物从来没有写过一
个重要的程序。但是为了初步的近似AI工作原理,你必须会程序设计。不仅仅是很多
AI研究工作需要编写代码,而且学会程序设计能给你什么是可计算的什么是不可计算
的直觉,这是AI对认知科学贡献的主要来源。
在MIT,本质上所有的AI程序设计都使用Common Lisp。如果还不知道,赶快学吧
。当然,学习一门语言并不能等同于学习程序设计;AI程序设计包含的一些技术与那
些在系统程序设计或者应用程序设计中用到的大不相同。开始学的时候,可以先看看
Abelson和Sussman的《Structure and Interpretation of Computer Programs》,
并做一些练习。这本书与AI程序设计本质上并不相干,但是包含了一些相同的技术。
然后读Winston和Horn写的Lisp书第三版,书里有很多优雅的AI程序。最后,进行实际
的程序设计,而不是阅读,才是最好的学习程序的方法。
学习Lisp程序设计有很多传统。有些人习惯一起写代码,这取决于个性。还有的
人寻找机会直接向有经验的程序员学习,或者请他对你的代码进行评价。阅读别人的
代码也是很有效的方法。如果可以向高年级同学要他们的源代码。他们可能会有些抱怨,
说自己的编程风格差极了,程序实际上并不能工作云云。不管怎么样,最后你获得了
源代码。然后你要仔细地通篇阅读,这很费时间。通常阅读并完全理解别人代码所花
的时间与你自己编程完成的时间是一样多的,因此要计划好在你的头一个或者头两个
学期用数周的时间去阅读别人的代码。你将从中学到很多以前不曾想到在课本中也没
有的技巧。如果你读到了大段大段不可理解没有注释的程序,你就会明白不应该如何
写代码了。
在软件工程课里学习到的那些知识在AI程序设计中依然有用。要给代码加注释。
使用正确的数据抽象。将图和你的代码隔离开,由于你使用的语言基本上是
Common Lisp,因此可移植性很好。诸如此类。
经过头几年的学习后,应该写一些自己的标准AI模块,如:
真值维护系统
规划