标题：人工智能语言
简介
典型的人工智能语言主要有LISP、Prolog、Smalltalk、C++等。
一般来说，人工智能语言应具备如下特点：
•具有符号处理能力（即非数值处理能力）； 
•适合于结构化程序设计，编程容易； 
•具有递归功能和回溯功能； 
•具有人机交互能力； 
•适合于推理； 
•既有把过程与说明式数据结构混合起来的能力，又有辨别数据、确定控制的模式匹配机制。
人工智能语言与传统语言的区别
人们可能会问，用人工智能语言解决问题与传统的方法有什么区别呢？
传统方法通常把问题的全部知识以各种的模型表达在固定程序中，问题的求解完全在程序制导下按着预先安排好的步骤一步一步（逐条）执行。解决问题的思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。
对于人工智能技术要解决的问题，往往无法把全部知识都体现在固定的程序中。通常需要建立一个知识库（包含事实和推理规则），程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动，所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和学习能力。这种方法对解决一些条件和目标不大明确或不完备，（即不能很好地形式化，不好描述）的非结构化问题比传统方法好，它通常采用启发式、试探法策略来解决问题。 
人工智能程序与传统程序之间的差别
在处理一些简单问题时，一般传统方法和人工智能用的方法没有什么区别。但在解决复杂问题时，人工智能方法与传统方法有差别。传统方法(人工智能程序与传统程序的差别)——传统方法：把问题的全部知识以各种的模型表达在固定程序中，问题的求解完全在程序制导下按着预先安排好的步骤一步一步（逐条）执行。这种方法解决严格结构（Well Structured）问题非常有效。如果把这类问题形式化为三元组（x,->,y）,“x”是给定的信息，“->”为求解途径，“y”是目标。传统方法的特点：“x”、“y”是明确的、完备的；“->”有着固定的明确的程式。这个方法之所以有效，主要是因为这个思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。人工智能方法人工智能方法：人工智能要解决的问题，无法把全部知识都体现在固定的程序中。它要建立一个知识库（包含事实和推理规则），程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动，所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和学习能力。这种方法对解决一些弱结构（ill structured）问题比传统方法好。弱结构指“x”、“y”不大明确或不完备，即不能很好地形式化，不好描述。“->”用试探法。AI也尚未发展到完全能解决这类问题的全部问题。这类问题是AI研究要解决的问题。随之而来也希望计算机硬件结构也来一个革命，突破冯.诺依曼体系结构。
人工智能语言的特点
由于人工智能研究的问题的特点和解决问题的方法的特殊性，为了能方便而有效地建立人工智能系统，需要发展专门的人工智能语言。人工智能语言的特点是什么，亦即人工智能语言应具备的特征是什么？
一般来说，人工智能语言应具备如下特点：
1.要有符号处理能力（即非数值处理能力）； 
2.适合于结构化程序设计，编程容易；（要把系统分解成若干易于理解和处理的小单位的能力，从而既能较为容易地改变系统的某一部分，而又不破坏整个系统。） 
3.要有递归功能和回溯功能； 
4.要有人机交互能力； 
5.适合于推理； 
6.要有把过程与说明式数据结构混合起来的能力，又要有辨别数据、确定控制的模式匹配机制。
lisp和prolog
函数型语言LISP和逻辑型语言PROLOG都适合作符号处理，都适合于结构化程序设计(LISP提供了函数定义，prolog提供了谓词定义)，都具有递归功能(prolog还具有自动回溯功能)，都具有人机交互能力(prolog还特别适合于推理)，也都具有把过程与说明式数据结构混合起来的能力以及辨别数据、确定控制的模式匹配机制(LISP将程序与数据均表示为表，因此可以把程序作为数据处理，也可将数据当作程序来执行。Prolog用一致的数据结构“项(term)”来构造数据和程序，事实、规则和询问的表现形式都为Horn子句，执行时作统一的操作匹配。LISP的匹配函数、prolog的合一运算自动匹配、自动搜索都具有很强的模式匹配机制。)因此可以说LISP和prolog是两种较为典型的人工智能语言。
人工智能语言的历史
人工智能语言
在人工智能的研究发展过程中，从一开始就注意到了人工智能语言问题。人工智能发展的初期，人工智能语言就得到了研究和开发。实际上四十多年来有一百来种人工智能语言先后出现过，但很多都被淘汰了。它们大抵有三个来源。第一个来源是计算机科学家们对可计算性理论的研究。例如，LISP语言是为处理人工智能中大量出现符号编程问题而设计的，它的理论基础是符号集上的递归函数论。已经证明，用LISP可以编出符号集上的任何可计算函数。Prolog语言是为处理人工智能中也是大量出现的逻辑推理问题(首先是为解决自然语言理解问题)而设计的。它的理论基础是一阶谓词演算(首先是它子集Horn子句演算)的消解法定理证明，其计算能力等价于LISP。OPS5面对的问题也是逻辑推理。不过PROLOG是向后推理，OPS5是向前推理。OPS5的理论基础是Post的产生式系统，其计算能力也等价于LISP。第二个来源是认知科学的研究成果。人们研究出各种各样的认知模型，并为这些模型设计相应的知识表示语言。例如产生式表示、框架表示、语义网络表示等实际上都有其认知模型作为背景。如上所述的OPS5是产生式表示的语言，SRL、FRL、FEST等是框架语言，概念图和SNetI都是语义网络表示语言。面向对象的程序设计是在SIMULA中的类程和Minsky的框架表示两种思想融合的基础上发展起来的(它适用于计算机软件的所有领域，不只是人工智能)。
面向主体(Agent,亦称活体)程序设计
近年来出现了具有人工智能特色面向对象程序设计，称为面向主体(Agent,亦称活体)程序设计。往一个对象中增加更多的智能，使它能根据环境的变化进行推理并规划自己的行为，就得到主体(Agent)。主体概念符合Minsky提出的“意念社会”认知模型，特别适用于分布环境。经典的面向对象程序设计语言是Smalltalk,面向主体的程序设计语言也已经有了一些，如OZ等，但还没被大家公认和普遍采用。也有基于PDP认知模型(Parallel Distributed Processing)的神经网络语言。第三来源是知识工程的实际需要。例如，为了开发各种领域的专家系统而设计的包含不精确推理或不确定推理功能，甚至包含多种不同推理机制的AI语言，例如Loops和TUILI。还有的是看到某一个专家系统做得比较成功，干脆抽去它的领域知识，留下它的表示方法，也成为一种语言，俗称专家系统外壳。例如，抽去医学专家系统MYSIN的领域知识就得到一个外壳语言Emycin。
人工智能手册
在人工智能手册中介绍了七种人工智能语言：
LISP,PLANNER,CINNIVER,QLISP,POP-2,SAIL,FUZZY。近百种人工智能语言中，只有LISP和后起之秀Prolog是人工智能研究和应用中占重要地位的两种人工智能程序设计语言。虽然国内外对这两种AI语言曾有争议，褒贬不一，但LISP和PROLOG的重要性是都不可否认的。
名家名言
谈到LISP和PROLOG两种AI语言的重要性，我们可以从美国AI界的权威学者、麻省理工学院教授P.H.Winston(温斯顿)所说的三段话来体会：
(1)温斯顿认为，LISP 语言是AI的数学，不仅对AI的机器实现有重要意义，而且是AI理论研究的重要工具。
(2)“在中世纪，拉丁文和希腊文的知识对所有学者来说，都是必不可少的。只懂一种语言的学者必然是一个残缺不全的学者，他缺乏从两个方面来观察世界所获得的那种理解力。同样地，现代的AI专业人员如果不能同时大致通晓LISP和Prolog，也犹如一个残疾人,因为就广义来说,这两种人工智能的主要语言的知识都是必不可少的。”
“我一直热衷于Lisp，Lisp是在MIT被制造并且在那儿成长起来的。”
(3)概括地说,计算机语言的发展正是一个从HOW型低级语言向WHAT型高级语言进化的过程.在HOW型语言中,程序编制者必须详细说明运算是怎样(HOW)一步一步进行的;而在WHAT型语言中,程序编制者只需简单说明要做的事情是什么(WHAT) 。 …现代的LISP语言是这些语言的佼佼者,因为采用Common Lisp格式的Lisp具有非凡的表现力,但是如何做某件事情仍然是有待于Lisp程序编制者来表达的东西.相反,Prolog是一种明显地冲破了HOW型语言陈规的语言, 它鼓励程序编制者去描述情况和问题,而不是那些用来解决问题的详细步骤。”
由以上论述可以看出LISP语言和Prolog语言对人工智能学科和人工智能学者的重要性。
一般来说,LISP可以称为人工智能的汇编语言, Prolog是人工智能更高级的语言。