声明:,,,。概况
人工智能编程言语是一类习惯于人工智能和常识工程范畴的、具有符号处理和逻辑推理才能的核算机程序规划言语。可以用它来编写程序求解非数值核算、常识处理、推理、规划、决议计划等具有智能的各种杂乱问题。
事实上,现已有多种对应于各种不同常识标明办法的人工智能编程言语。按所对应的常识标明办法不同。大体上可以区分为以下几类:
。例如,由美国卡耐基·梅农大学的C·L·福基(C.L.Forgy)等人于1 977年开发的OPS(official production system),其时’就用它来为DEC公司开发了一个处理VAX核算机体系配置问题的专家体系X1/XCON。
。一种已广为运用的逻辑言语便是PROLOG。它是1 970年由法国马塞大学的 A.柯迈豪埃(Alain Colmerauer)所开发的。
。这是一类所谓“面向对象”的(object-oriented)言语。其间一个有代表性的语种便是Smalltalk。它是在1980年创始,后来开展了好几个版别,一般以发布的年份来符号,例如,第1个版别叫Smalltalk-80等等。
。首要是由核算机科学家J.巴科斯(J. Backus)在1978年宣告的一篇获图灵奖的闻名论文中提出。这篇论文的标题就叫做:“程序规划可以脱节诺依曼风格吗?程序的函数风格及其代数”。它提出的函数式编程言语,虽然在理论上很完美,并且建立在坚实的数学根底之上,可是在惯例核算机上很难完成。却是早在20世纪50年代末、60年代初美国麻省理工学院的约翰·麦卡锡等人首要开发的列表处理言语LISP(LISt Processing)迄今依然广泛用于编写人工智能运用程序,特别是用于开发专家体系。函数言语在解说履行机制上的特征是递归地由最内层向外层归约(reduction),而每次归约都是把一个函数“效果”,于它的变元而得出函数值的进程。所以又称这类言语为“效果式”(applicative)言语。
人工智能编程言语有一个一起的特征,那便是这些言语都是面向所要处理的问题、结合常识标明、彻底脱离今世核算机的诺依曼结构特性而独立规划的;它们又处于比面向进程的高档编程言语更高的笼统层次。因而,用这些言语编写的程序,在现代核算机环境中,无论是解说或编译履行,往往功率很低。特别当程序规划很大、很杂乱时,将糟蹋很多体系资源(主要指处理机占用时刻和存储空间占用量),使体系功用下降到难以容忍的境地。
早在20世纪50年代后期,麻省理工学院的John McCarthy就开端了人工智能的研讨,他其时致力于规划一个用表处理的递归体系,并在20世纪60年代初研发出了LISP言语。LISP言语是一个用于处理符号表达式的、适当简略的函数式程序规划言语,其以数学中的函数与函数效果的概念作为规划原理,它奠定了函数式言语的根底。纯LISP言语是彻底非vonNeumann风格的,它没有运用ALGOL60等言语中所选用的可修正变量、赋值句子、转向句子等yon Neumann结构言语中的有关概念。LISP程序与其数据结构选用了彻底相同的结构方式与处理办法。因而可以适当方便地用LISP来编写它的解说程序。LISP言语除了用s一表达式来一致处理数据与程序外,还引入了前缀运算符标明法、递归数据结构、递归操控结构以及新的条件表达式方式。
Prolog(Programming in Logic)是一种逻辑编程言语。它建立在逻辑学的理论根底之上,开始被运用于自然言语等研讨范畴。现已广泛运用在人工智能的研讨中,可以用来制作专家体系、自然言语了解、智能常识库等。一起,对一些一般的运用程序的编写也很有协助,可以比其他的言语更快速地开发程序,由于Prolog的编程办法更像是运用逻辑的言语来描绘程序。
Prolog程序具有明显的逻辑编程言语特征,包含:没有特定的运转次序,其运转次序是由核算机决议的,而不是编程序的人;Prolog程序中没有if、when、case、for这样的操控流程句子;Prolog程序和数据高度一致,其程序实际上是一个智能数据库;Prolog言语具有强壮的递归功用。自1981年日本政府宣告第5代核算机体系(FGCS)项目以Prolog为根底以来,Prolog已成为人工智能研讨范畴的主导言语。
一是研发与某种言语彻底习惯的所谓新一代核算机。例如LlSP机、数据流机、PROLOG机、面向对象的体系结构等等。可是实践早已标明,此路远景迷茫。由于以诺依曼机为中心的现代通用核算机现已广泛遍及并且功用还在不断进步,一起现已积累了巨大的软件资源。任何与现代核算机不兼容的专用机,最多因能满意单个特别需求而在某些场合发挥效果,难以与现代通用核算机相抗衡。
第二条途径是,把几种不同风格的编程言语结合起来,开展复合言语或嵌入式言语,以便扬长避短,使体系功用得以进一步进步。当时最为盛行的是把面向对象言语的规划思路融汇到常用的面向进程的高档言语中。C++言语便是一个杰出的比如。
第三条途径是,充分利用面向问题的人工智能编程言语的特征,先挑选某种言语编写出一个简洁明了而易于调试的程序原型。经过验证、调试后,再模仿这个原型,改编为某种面向进程的高档言语程序,例如C或C++,乃至BASIC,以此来到达进步终究运用体系开发质量和履行功率的意图。用PROLOG、 LISP、OPS等来开发专家体系原型,已有不少先例。