注意:本文非常不寻常。这是我发表的第一个文章。它于1986年3月在惠普杂志上发表,这是35年前。由于在互联网之前很好,因此在任何地方都不在线,除了PDF存档。所以我用了一个OCR扫描仪,并在这里重新发布这篇文章。它有点是一个时间胶囊,描述了一些技术,当时我似乎接近迫在眉睫,但对于大多数部分最终需要几十年来实现,而其他技术明显地走向其他方向。但我发现重新审视我们在AI,语音识别,自然语言理解以及编程语言,开发人员生产力和开发环境中的期望令人着迷。

惠普杂志- 1986年3月

惠普AI工作站技术简介

以下是惠普人工智能工作站研究工作的概述,以及它们与惠普第一个人工智能产品——通用Lisp开发环境的关系。

马丁·r·卡根(Martin R. Cagan)著

最近,惠普公司(Hewlett-Packard)进入了人工智能(Al)领域,宣布了其首个符号编程产品——通用Lisp的惠普开发环境(Hewlett-Packard Development Environment for Common Lisp)。惠普最初产品的基础技术,是五年多来研发的成果,目前已发展成为惠普AI工作站。本文概述了人工智能工作站技术。

Hewlett-Packard Ai Workstation代表了Hewlett-Packard的主要符号编程软件开发努力的总体。(此前,这项研究努力在内部称为棱镜程序。)

术语AI工作站是指在全公司内部研究开发项目的铝,而不是特定的产品。除了许多HP分裂他们的努力作出了贡献关键的系统组件,许多重要的概念是基于来自加州大学伯克利分校,麻省理工学院(MIT)和施乐公司帕洛阿尔托研究中心(PARC)的研究。犹他州大学,特别是已显著贡献。

目前,惠普的人工智能工作站被超过200名惠普各部门人员以及美国主要研究型大学的学生和教授积极使用。惠普最近宣布拨款5,000万美元,向选定的主要计算机科学大学提供惠普AI工作站的硬件和软件。

人工智能工作站技术是便携和可扩展的,并且可以在各种处理器和操作系统,包括新的HP 9000系列300工作站家族的HP-UX操作系统下运行。

第一个和主要的产品是AI工作站技术的后代是惠普开发环境的Common Lisp这是在1985年国际人工智能联合会议上宣布的。本文中描述的许多技术都是实验性的,读者不应该假设这里讨论的软件是可以购买的。这些组件是惠普通用Lisp开发环境或其他产品的一部分,将被注意到。

最近媒体上有很多关于符号编程技术和人工智能的文章。从数字编程到符号编程的转变类似于一个世纪前数学的“代数化”。为了简化和澄清如此多的谜题,需要公理抽象的代数观点,这就好比需要符号编程技术来帮助解决当今复杂的计算问题。

诸如自然语言理解、定理证明和人工视觉等人工智能应用都依赖于符号编程技术,因为它们在操纵符号、操纵符号之间的关系以及表示大型和复杂的数据结构方面具有灵活性和能力。人工智能工作站是一种利用符号编程技术来解决问题的软件系统。本文从市场、技术、环境和应用四个方面对人工智能工作站进行了探讨。

市场

关于软件市场的未来方向有许多观点,但大多数人都认为软件正在稳步地变得更加复杂、强大和智能。惠普的AI工作站提供了开发和执行智能和复杂应用程序的技术。

在惠普,人工智能技术被视为一种使能技术。AI工作站提供工具和设施,使程序员能够创建以前认为不可行的应用程序。这些应用包括专家系统、人工视觉、自然语言界面、机器人和语音识别系统。这些Al应用程序的开发和执行通常需要常规计算机系统中不可用或不可行的功能。例如,考虑一个专家税务顾问的应用程序。这样一个系统需要体现人力税务顾问的相关知识和推理策略。基于人工智能的技术为这种知识表示和推理提供了必要的机制。

人工智能工作站的使用不必然而受限于需要直接就业铝技术的问题。它也被设计为促进在传统的软件开发市场的改善。例如,一个典型的税务会计应用程序可能不需要铝技术及其实现,但可以实现更高效地维护通过采用基于人工智能的软件开发工具,如智能帮助查找工具和诊断错误的程序代码。该AI工作站所使用的软件开发人员开发应用程序,并通过最终用户运行基于人工智能的应用程序。其中一个AI工作站的到AI市场主要贡献是,它同时提供了一个开发环境和AI应用程序执行环境,它成本低,传统的硬件,如300的HP 9000系列同时提供。

软件开发人员将人工智能工作站视为为软件系统的快速开发量身定制的环境。所提供的语言是为高生产率而设计的。该环境允许同时创建、测试和记录用多种语言编写的多个程序。解释器和编译器允许系统以增量和交互的方式进行开发。软件开发人员可以使用AI工作站来开发基于知识的系统,或者只是作为一种更有效的方法来生成用传统语言编写的传统软件。总的来说,有两个原因促使使用AI工作站作为软件开发机器。要么AI工作站技术是开发特定AI应用程序所必需的,要么用户需要用传统语言更高效地开发传统应用程序。

基于工作站-AI应用程序的最终用户查看AI工作站作为具有高度互动性,智能化,定制的应用程序执行环境。从总系统,具有高分辨率的图形,彩色显示器,局域网,多个窗口,和专用的输入设备的最终用户的利益。人工智能工作站是模块化和可扩展的,这样一个特定的应用程序可以用最少的资源运行,因此保持运载工具的成本尽可能低。这是许多谁愿意使用AI工作站都开发和销售应用人工智能工作站用户的一大特色。对于这些用户来说,提供了一个低成本的运载工具是一个主要问题。

AI Workstation还支持服务器的概念。服务器是位于网络上的系统,专用于运行特定应用程序。网络上的其他系统甚至可能是其他服务器,可以向服务器发送请求以执行函数。服务器执行任务并在适当时进行响应发件人。基于Workstation的服务器和工作站使应用程序可以轻松来回创建和发送程序。接收程序的机器能够在其本地环境的上下文中执行程序。运行基于AI工作站的应用程序的服务器网络可能被证明是许多用户的成本效益的解决方案。

已经有很多关于软件开发中生产力和质量改进的巨大潜力的文章,并且考虑到软件开发成本的上升,对这种改进的需求很高。传统上,人工智能研究人员要求他们的环境提供更高效、更强大的软件工程工具。这对于管理软件系统的范围和复杂性是必要的。由于个人工作站具有成本效益,以前只能在昂贵的大型机或特殊用途的硬件上使用的广泛的软件工程工具,现在可用于软件系统的设计、开发、测试和维护。

这项技术

人工智能工作站基础技术的发展始于惠普实验室和犹他大学的联合开发工作。这一努力的目标是创建一个可移植的、高性能的现代Lisp系统实现,以便程序员能够享受与C和Fortran相当的效率和可移植性,以及Lisp的交互式和增量式程序开发和调试环境。

以前,要享受Lisp的高性能,需要专用的、昂贵的硬件。由此产生的底层Lisp技术的一个主要贡献是,即使在传统的、低成本的硬件上它也是高效的。

口齿不清

Lisp是美国人工智能研究的主要编程语言。但是为什么Lisp呢?从历史的角度来看,Lisp在耐久性和寿命方面仅次于Fortran。现代Lisp系统,比如惠普的Common Lisp实现,提供了比基本Lisp命令更简单的替代方案,以及许多在传统语言中已被证明有用的控制结构和数据类型。虽然Lisp从最初的形式发展而来,但它在很大程度上是由John McCarthy在1958年设计的。然而,与Fortran不同的是,Lisp每天都在吸引着新的皈依者,并且在它28年的历史中比以往任何时候都更受欢迎。不幸的是,当今行业中的许多程序员还没有机会将Lisp作为生产语言来使用,因此很难将Lisp与C、Pascal、Fortran或COBOL进行比较。接下来将讨论Lisp的主要特性,以便使用传统语言的程序员能够了解在Lisp环境中开发是什么样子的。

- Lisp的支持增量发展。在常规语言,试图逐步建立程序时,程序员必须执行许多耗时的任务,如写程序存根,包括声明,构建或模拟数据。每次迭代需要编辑/编译/连接/测试周期。与此相反,Lisp的程序员可以简单的写的,可能会或可能不会被写入但其他功能方面和构建无论是在自上而下的方式或以自下而上方式的功能,创造和不断的测试。该功能可一旦它已被键入执行。

- Lisp程序不需要声明。与C、Pascal、COBOL和大多数其他常规语言不同,在这些语言中,程序员必须在使用数据结构和变量之前指定它们,Lisp在需要时自动分配适当的存储空间。这允许程序员真正“动态”地开发函数,而无需在整个程序中维护和传播声明。一旦程序稳定下来,程序员就可以添加声明来提高效率。

- LISP提供出色的调试。LISP环境支持对误差诊断的态度与传统编程语言引起的态度完全不同。当在开发LISP程序期间遇到错误时,LISP环境邀请程序员探索检测到异常的环境。调试时,程序员可以使用LISP本身的全功率。可以分析数据结构并重新定义功能。事实上,程序员甚至可以在飞行中构建新的LISP功能,以帮助诊断问题。在LISP中,程序错误较少,程序员可以检查系统的错误点。

- LISP为程序员自动管理内存。在LISP环境中自动处理内存管理和回收。通过传统语言,内存管理通常会占程序员代码的重要部分。然而,在LISP系统中,LISP本身跟踪内存使用并自动回收不需要的存储。此服务允许程序员专注于手头的问题,而无需管理实现问题解决方案所需的资源。

- LISP程序可以轻松创建或操作其他LISP程序。Lisp在主要语言中是独一无二的,其中Lisp程序和数据以相同的数据结构表示。这种特征产生的好处是许多人,并且已经证明是Lisp力量的主要贡献之一。例如,这种特性使得可以轻松地编写创建其他LISP程序的Lisp程序,以及写可以理解其他LISP程序的Lisp程序。可以作为数据操作程序,可以立即执行或传输到另一台LISP机器以执行。

- Lisp程序可以混合编译代码和解释代码运行。AI工作站提供了一个Lisp编译器和一个Lisp解释器。对于开发,解释器允许增强调试和快速增量设计。一旦一个程序准备投入使用,就可以对它进行编译,以提高它的性能并减少它的代码大小。然而,在开发过程中,程序员经常需要混合使用编译代码和解释代码。AI工作站的Lisp具有允许编译和解释代码任意组合的特性。对于程序员来说,在运行时重新定义已编译函数以检查和探索应用程序的行为是很常见的。

- Lisp对符号感到舒适。在传统语言中,任意符号被视为非结构化数据。程序员将它们授予其字符数组,并按字节分析数组字节,直到可以在语言理解的数据类型方面从它们中出现某种意义。然而,Lisp是一种象征性的编程语言。任意符号是一流的对象,可以作为符号操纵,而不是尝试将它们视为数组中的元素。反过来,程序员可以给出符号属性并操纵符号之间的关系。

Lisp很容易扩展。程序员定义的函数与系统定义的函数以同样的方式处理。在实现复杂系统时,开发特定的函数词汇表以在特定的问题领域进行对话通常是有用的。有了Lisp,这些特定的、面向问题的语言可以轻松快速地开发。

由于其长寿和许多有用的功能,读者可能会想知道为什么传统程序员多年来没有使用LISP。这有三个主要原因。

首先,直到最近,上面描述的Lisp环境只在大型和昂贵的机器上可用,即使在这些机器上,Lisp使用的资源也超过了它的份额。直到现在,随着廉价、高性能的工作站和改进的编译器技术的出现,Lisp才成为传统软件开发的一种经济有效的解决方案。

其次,生产语言以前主要是根据编译代码的效率来判断的。既然受约束的资源是软件开发成本,而不是交付机器的硬件,那么语言将基于一套不同的价值来判断。

第三,虽然上面描述的Lisp特性很有价值,但它们并非没有代价。大多数Lisp系统仍然不适合处理实时和安全敏感应用程序这样的问题。降低这些成本是许多大学和工业研究实验室的主要研究课题。在HP,我们已经认识到不同的语言被优化以解决不同的问题,并且我们已经为Lisp环境提供了访问任意C、Pascal和Fortran例程的能力。这对惠普及其客户产生了重要影响。

没有必要放弃现有的代码和数据库来享受Lisp的好处。例如,可以用Lisp编写访问Fortran代码库以进行仪器控制的智能前端。(用于外部函数调用的Common Lisp扩展是用于Common Lisp产品的Hewlett-Packard开发环境的一部分。)

基于Workstation的应用程序通常是LISP和传统语言组件的融合。

面向对象编程

AI工作站提供了两种更高级的语言,它们本身用Lisp实现,支持软件开发的替代范例。第一种语言扩展支持面向对象编程,而第二种语言扩展支持基于规则的编程。HP提供了一种基于Lisp的面向对象编程语言。(用于面向对象编程的Common Lisp扩展是用于Common Lisp产品的Hewlett-Packard开发环境的一部分。)

大多数AI工作站的环境本身就是使用这种技术编写的。在整个行业中,面向对象编程正在兴起,这是有原因的。面向对象编程为程序员带来了一个高效而强大的软件开发范例。它是一种范例,通过使用强大的技术(如继承、数据抽象、封装和泛型操作),正面解决代码可重用性和软件可维护性的严重问题。

与大多数传统语言不同,面向对象的Lisp是一种旨在支持特定编程方法的语言。该方法在语言的支持下,为代码可重用性、软件可维护性、程序可扩展性和快速开发提供了显式设施。

面向对象编程中的基本思想是通过对象集合表示数据,并通过对这些对象执行操作来操纵数据。每个对象定义它可以执行的操作。

我要描述的第一个设施是数据抽象. 使用面向对象的编程风格,每个对象都被视为一个抽象实体或“黑匣子”,其行为严格由可以对其执行的操作决定。换句话说,访问或修改对象的唯一方法是执行在该对象上显式定义的操作。特别是,用于表示对象的内部数据结构是私有的,并且仅由在对象上定义的操作直接访问。通过向对象发送消息来调用操作。

面向对象风格编程的一个优点是,它在对象的实现中封装了对象如何表示的知识。对象的行为由其外部接口决定,外部接口是在对象上定义的一组操作。如果设计人员更改了对象的表示,而操作的外部可见行为没有改变,则无需更改使用该对象的源代码。

例如,假设我们希望定义一个类.使用面向对象的扩展到常见的LISP,我们的定义可能是:

(定义类型的狗

(:var name)

(:VAR年龄)

(中:var所有者)

)

这表示我们正在定义一种新类型的对象与内部表示由名称的,年龄,和一个所有者。例如:

(setf fido (make-instance ' dog:name " fido "))

这设置了变量菲多转换为该类型的实例他的名字叫“Fido”。如果我们愿意,我们可以创建100个类型为dog的实例,每个实例都是唯一的,不管它们是否具有相同的名称(就像有很多狗,有不止一个名为“Fido”)。注意,在外部,没有任何东西知道我们的狗类型的内部表示。我们可以用多种方式实现狗的内部表示。

我们通过指定类型和操作、操作所需的任何参数以及操作的实现来定义类型dog上的操作。例如,要定义一个操作,让我们更改狗的主人:

(定义 - 方法(狗:给予新所有者)(新所有者)

(setf所有者新主人)

需要注意的是操作的实现就是类型狗的内部被引用的唯一地方。这种封装的价值,如果我们决定改变类型狗的实现,那么它只能在类型需要修改定义的类型定义和操作。

我们可以通过向对象发送消息请求它执行特定操作来访问和操作对象。例如,要将Fido的所有者更改为“Mandy”:

( - >菲:给新所有者“曼迪”)

这句话是这样写的:“将消息发送给fido:给新所有者‘Mandy’。”

通常,我们会为dog类型定义许多操作,如sit、stay、come和speak。然后可以调用这些:

(- >狗:坐)

(->fido:停留)

(- >狗:来)

( - > Fido:说话)

我要描述的第二个设施是关于代码可重用性.在一定程度上,上面描述的数据抽象工具有助于简化代码模块的重用,因为实现是封装的,并且外部接口是良好定义的。

更直接适用于这个问题是概念继承.可以定义从其他类型继承的新类型的对象。所有操作类型和由类型维护的数据的操作都被继承。一个新的类型定义,有选择地覆盖它所继承的类型的特定特征。因此,要定义与某些现有类型稍有不同的新类型,可以简单地让新类型继承现有类型并覆盖新类型中不同的那些方面。例如,要定义一种新的狗,金毛猎犬

(定义型金猎犬

(:继承的狗)

(中:var数的-网球球-检索)

)

这表示我们想要定义一个新类型金毛猎犬,它从类型继承数据和操作.除了继承的属性,我们定义金色猎犬是保持数的网球,球,检索到的属性。需要注意的是使用一个对象时,一个无法观察是否该对象的类型,用继承定义。

我们创建了一个新类型的黄金寻回犬的实例:

(setf mac (make-instance ' golden-retriever:name " mac "))

对于这种新型的狗,我们有我们自己实施的:说话操作,一个是产生比继承的版本更深的树皮。我们还定义了一些额外的操作,这些操作只与类型金色猎犬的物品适当。

例如,我们有额外的操作获取,这当然是所有索道的属性,但不是所有的狗,以及新的操作:煮咖啡(Mac是一只非常聪明的狗)。

然后可以调用这些:

(- > mac:说话)

(- > mac:获取)

(-> MAC:make-coffee:时间0700)

需要注意的是,我们可以通过先定义一个类型作出进一步使用继承寻回犬从类型继承的,然后定义新类型金毛猎犬拉布拉多猎犬从类型检索继承。

面向对象的Lisp提供的另一个功能是支持一种功能强大的泛型操作,称为多态性

当一个人在一个对象上执行操作时,他并不关心它是什么类型的对象,而是关心在对象上定义了一个具有指定名称和预期行为的操作。这种能力在Pascal这样的语言中是缺乏的,因为在Pascal语言中,每个过程只能接受过程头文件中声明的精确类型的参数。

举一个通用操作价值的例子,假设有一天我们试图用一个机器人来取代人类最好的朋友,一个被驯化到和狗一样程度的机器人。我们可以实现新的类型机器人如下:

(定义类型的机器人

(:var name)

(: var模型)

(中:var所有者)

)

要创建一个robot类型的实例:

(SETF罗比(化妆例如,机器人:名字“罗比”))

假设我们有一个现有的应用程序库,它在各种任务中指示gold - retriver类型的对象。如果我们要为类型机器人实现由gold - retriver类型的对象执行的相同功能操作,那么我们所有的应用程序代码将不变地工作:

(- >罗比:坐)

(- >罗比:保持)

( - > Roby:来)

( - > roby:fetch)

(- >罗比:说话)

(-> roby:make-coffee:时间0700)

注意,尽管这些操作的实施方式不同,功能说明书和外部协议机器人与交易类型的对象金毛猎犬机器人的定义是相同的,因此我们的应用程序工作不变,我们也节省了狗粮。

这里描述的面向对象编程工具可以在提高程序可维护性、程序可扩展性和代码可重用性方面发挥很大作用。

面向对象编程已经被用于实现操作系统、窗口管理器、市场模拟、文字处理器、程序编辑器、仪器控制器和游戏,这只是其中的一些应用程序。它的范例已被证明是有效的、强大的、易于学习和使用的。

基于规则的编程

人工智能工作站提供的第二个替代范例是惠普表示语言(HP- rl),惠普实验性的基于规则的编程语言。

HP-RL旨在支持基于知识的软件系统的开发。基于知识的软件系统,包括专家系统,是搜索信息知识库,并尝试使用逻辑推理规则进行推理和得出结论的系统。知识库是体现人类专家知识和解决问题策略的数据库。

在专家系统,很少有预先定义为解决问题的过程描述。该系统必须在知识库中搜索,并通过使用由开发人员定义的规则和策略进行推断。当前以知识为基础的软件系统包括应用,如医疗会诊系统,集成电路诊断系统,税务顾问,和自然语言理解系统。在代表有组织和管理结构的大量知识的关键知识为基础的系统的谎言。如果没有这样的组织,问题很快变得棘手。一个棘手的问题是不能在计算合理时间内得到解决。HP-RL提供的数据结构和控制结构专为知识表示,知识组织和推理的知识。HP-RL允许知识被表示为框架

帧是一个数据结构,它基团一起的信息的任意的量被语义相关。典型地,一帧被用于存储特定信息,或约,特定实体。HP-RL允许知识被组织到相关信息的帧。像面向对象编程,HP-RL提供了帧来自其他帧继承信息的能力。

例如,描述一个特定实体(如人,Jane)的框架可能从相关实体(如scientist和female)继承特征。因此,实体简自动继承了女性和科学家的所有属性。然后可以指定简的特定属性,以区别于其他女科学家。

框架可以分成知识领域。这种划分降低了问题的复杂性,还可以通过帮助程序避免搜索不相关的知识来提高通过知识库搜索的效率。在知识库中搜索是一个由HP-RL推理引擎执行的复杂过程。推理引擎是扫描知识库以满足规则的工具。HP-RL中的规则是由一组前提和结论组成的框架,类似于传统语言中的if-then构造。HP-RL同时提供了前向链接和后向链接规则。推理引擎应用前向链接或数据驱动规则来推断给定的验证前提的结论。推理引擎应用反向链接或目标驱动的规则,在给定预期结论的情况下查找可验证的前提。

作为一个例子,考虑一个规则说:如果狗是金毛猎犬,那么狗就喜欢网球。

如果我们将规则定义为前进链接规则,那么当推理引擎正在搜索知识库时,如果当前数据支持狗是金毛猎犬的断言,那么我们可以推断狗喜欢网球。

如果我们定义规则是一个反向链接规则,当搜索知识库推理引擎,如果所需的目标是找到一种狗,喜欢网球,然后推理引擎将检查当前数据是否支持断言狗是金毛猎犬。

基于规则的方法和传统编程之间的主要区别之一是,在基于规则的程序中,程序的控制流在程序中是不显式的。决定下一步做什么的过程被有意识地与数据组织和管理分开。程序员可以使用启发式来帮助直接搜索。启发式是指导我们在知识库中导航和搜索的规则。通过知识库管理搜索是一个主要的研究课题,因为知识库的智能和选择性搜索可以区分可用的系统和不可用的系统。

在使用基于知识的系统时,搜索知识库是花费大部分计算资源的地方。为了帮助解决这个问题,HP-RL提供了关于处理其他启发式的启发式方法,这些方法可用于管理程序的策略,从而更智能地进行搜索。HP-RL目前包含许多正在研究和测试的实验设施,以发现执行捕获和使用知识这一艰巨任务的更有效机制。

环境

使用Lisp编程和使用其他语言编程之间的主要区别之一是为程序员提供的环境。人工智能工作站通过集成环境提供对所有数据和执行的访问。用户环境非常灵活和强大。它包含大量强大的文本操作函数和数据结构,这些函数和数据结构在构建用户界面、文本和图形编辑器以及浏览器时非常有用。下面几节探讨AI工作站用户环境的这些不同组件。

编辑

AI工作站环境包含EMACS的一个版本,这是由麻省理工学院的Richard Stallman最初开发的编辑器。惠普的面向对象的Lisp EMACS实现,就像最初的MIT EMACS一样,是一个可定制的,可伸缩,自文档,面向屏幕,显示编辑器。

可定制意味着用户可以以微妙的方式将AI工作站EMAC用于适应个人风格或编辑任务。存在许多用户级命令以允许用户动态更改环境的行为。定制不限于程序员;任何人都可以轻松自定义环境。

可扩展的意味着用户可以对AI工作站EMACS进行重大修改和扩展。在用户进行编辑时,可以添加或更改新的编辑命令,以满足特定的编辑需要。用户手头有一个完整的文本操作函数库,用于创建新的编辑函数。这种扩展性使EMACS编辑器比大多数其他编辑器更灵活。用户不受AI工作站EMACS实施者决策的约束。如果用户需要一个新函数,或者有理由修改现有函数的行为,那么用户可以快速、轻松地进行修改。

自我记录意味着AI工作站EMACS提供了强大的交互式自文档工具,以便用户能够有效和高效地使用丰富的功能。

Screen-oriented意味着在两个维度用户编辑,所以在屏幕上的页面,就像是一本书,一个页面,用户必须在将通过本书向前或向后滚动的能力。当用户编辑页面,屏幕会立即更新,以反映所做的更改。就像在桌子上了很多书可以是开放的,在使用一次,与AI工作站EMACS,多屏可以是可见和活动同时进行。事实上,惠普的扩展麻省理工学院的EMACS之一,不仅有一个单一的物理显示器上活跃的多屏幕,而且还拥有多个物理显示多个画面的能力。(这里描述的基于的Emacs编辑环境是惠普开发环境Common Lisp的产品的一部分。)

浏览

AI工作站用户环境的另一个特性是一个被称为浏览器的大型工具库。浏览器不仅仅是用户环境的一个组成部分;它们是使用环境的隐喻。浏览器是一种简单的工具,用于方便地阅读和操作一组特定的项目。

AI Workstation环境中的实验浏览器包括文档浏览器、文件浏览器、邮件浏览器、源代码浏览器和应用程序浏览器。这些浏览器从简单到非常复杂。用户可以列出由特定的人发送的关于特定主题的所有邮件消息,或者可以立即检索特定Lisp函数的定义。

用户可以对文档进行自动搜索,也可以浏览和操作复杂数据结构的内容。浏览器提供了一个简单、直观、集成的界面,对于处理各种各样的问题非常有用。该环境提供了一个浏览器构造工具和函数库,允许用户为自己的特定应用程序和需求创建自己的浏览器。

编程

在AI开发计算机,用户环境的很大一部分被调谐以支持编程任务,这包括诸如节目编辑,调试,测试,版本和配置管理,和文档。

AI工作站支持Lisp、C、Pascal和Fortran语言的开发。此外,还提供了一个工具包,允许用户为其他语言定制环境。人工智能工作站提供了一个集成的、统一的多语言软件开发模型。AI工作站用户环境的一个主要特性是底层Lisp系统的接口。Lisp程序员不需要离开环境就可以直接访问Lisp编译器和解释器。这意味着在开发程序的过程中,可以对程序进行增量的、交互式的编辑、测试、调试和文档化。编辑工作由理解Lisp语法的编辑器协助完成。Lisp接口命令帮助测试,这些命令将文本从程序编辑器传递到底层Lisp系统,并将结果返回到环境中。调试由可直接从环境获得的交互式调试器、函数步进器和数据检查器辅助。程序文档由为程序员设计的文档工具辅助,这些工具自动生成许多格式细节。

使用前面描述的AI工作站的外部函数调用工具,非lisp程序员也可以享受交互式增量开发的许多好处。例如,AI工作站包含完整的二维和三维矢量和光栅图形操作。(本文所述的图形工具是在HP- ux操作系统下运行的HP 9000系列300上提供的。)虽然这些操作是C例程,但都可以从Lisp环境中直接访问。

通常,C程序员在开发图形应用程序时必须迭代编辑/编译/链接/测试周期。相比之下,使用AI工作站,C程序员可以一步一步地开发他们的图形应用程序,只需观察屏幕上的结果,就能立即得到反馈。一旦程序的功能正确,程序员就可以将语句转换成正式的C程序,并用标准的C编译器编译它。

管理

人工智能工作站用户环境中含有多种可选的服务应用,支持程序员在处理办公和管理功能。这种技术研制试验应用包括电子邮件,项目管理,文件准备,幻灯片编辑,日历,电子表格,信息管理,和电话服务。这些应用中,一旦用户选择包含它,成为环境的一个组成部分。因为所有这些应用都使用AI工作站环境设施写的,他们是定制的,可扩展的,并且从环境中的任何地方访问。

例如,用户可以从创建幻灯片,到读取邮件消息,到测试Lisp代码,再回到创建幻灯片。

接口

AI Workstation的用户环境包含大大简化了新输入和输出设备(如平板电脑,触摸屏或语音合成器)的工具。除了支持标准键盘和鼠标输入外,AI工作站环境的实验版本还支持操纵杆,平板电脑,触摸屏,VideoDisc,语音输入和输出,以及触摸音电话输入。用户环境还支持许多用户界面模型,并提供环境库函数,以帮助用户定义自己的用户界面模型。现有的用户界面模型包括弹出菜单,软键,英语命令和控制元密钥序列。

AI工作站不会将特定的接口模型强加给用户。存在默认界面,但用户可以自由修改或添加所需的任何用户界面。为在AI Workstation环境下运行而编写的交付应用程序可以选择使用一个或多个提供的用户界面,或者设计者可以定义一个新的界面。

应用程序

本节将介绍AI工作站技术用于开发和运行的一些主要应用程序类型。请注意,除非另有说明,这些应用程序是试验性的,不能购买。

诊断系统

诊断系统是专家系统应用的一个很好的例子。诊断系统从仪器和/或用户那里获取尽可能多的数据,并试图确定问题的原因和/或补救措施。诊断系统应用包括医疗诊断系统、仪器诊断系统和智能计算机辅助教学应用。

在惠普实验室,我们正在与1C光刻诊断系统实验。这个系统,称为光刻顾问,是用于诊断的负面光刻失败抵抗IC制造阶段的专家系统。

在惠普的计算机支持机构中,使用了许多诊断专家系统。Schooner专家系统诊断和纠正终端与HP 3000之间的数据通信问题。AIDA专家系统为HP 3000核心转储文件的分析提供了一个有效的工具。交互式外围疑难解答系统诊断磁盘驱动器故障。

仪器控制

越来越多的专家系统涉及智能控制,监控和测试,以及这些仪器收集的数据的解释。仪器控制和解释应用包括网络分析,工厂地板监控,过程控制和许多机器人应用。

在Hewlett-Packard,一个实验应用有助于质谱仪收集的数据的解释和分类。另一个应用程序分析来自患者监测系统的数据。在AI行业内,正在开发许多智能仪器和过程控制应用,例如监控炼油厂运营的系统。

模拟

许多复杂的软件系统都属于仿真和建模的范畴。模拟几乎在业务的每个方面都扮演着重要的角色。前面讨论的面向对象编程工具使工程师能够快速地编写模拟程序。仿真应用包括计量建模、飞行仿真、化学交互建模和电路仿真。

例如,在HP实验室,我们实现了VLSI逻辑模拟器,使工程师能够在产生任何实际制造费用之前设计、调试、测试和评估电路设计。

惠普飞行计划/飞行模拟器是由惠普实验室旨在说明一个数的AI工作站技术的重要特征的应用程序:即,多语言应用程序是可取的,开发简单,那复杂的应用程序可以迅速发展起来,那Lisp的应用可以设计成无垃圾回收的中断运行,并Lisp的应用程序可以在非常高的性能在传统的硬件和操作系统上运行。

航班计划模块是一个用于计划航班的约束驱动的专家系统。该系统展示了从旧金山延伸到洛杉矶的加州舒展的详细地图。要求飞行员始发的机场,最终目的地和所需的任何中间停止。然后允许飞行员指定特定的限制,例如“避免海洋和山脉”,“确保在停止之间不超过3小时,”或“在圣巴巴拉计划午餐停止”。

该系统的知识库包括机场,地形和CESSNA 172飞机的规格和功能的数据。随着规定的限制,飞行计划试图找到一个可行的飞行计划,满足由驾驶员指定的约束,以及受地形和飞机的限制隐含的约束。

一旦生成了飞行计划,飞行计划器将飞行计划传递给飞行模拟器模块,然后该模块将按照指定的方式执行该计划。飞行计划指定了每段飞行的目的地、路线和巡航高度。飞行模拟器的自动驾驶仪模块,利用这些方向以及来自知识库的特定机场和飞机数据,执行起飞,使用地面导航帮助飞行飞机,并执行仪表着陆。

除了通过自动驾驶飞行预定飞行计划,飞行模拟器可以手动驾驶。飞行员使用在HP-HIL操纵杆,9-旋钮盒,和一个32按钮盒作为对照。该飞行计划使用的是HP-RL实现。

飞行模拟器中的Common Lisp和面向对象扩展到Common Lisp的实现。图形转换通过从Lisp的访问C例程执行,使用HP-UX操作系统的3D图形设施。飞行,自动驾驶仪组件,以及现场管理模型都使用面向对象扩展到Common Lisp的写入。飞行模拟器需要两个月的时间两个人来开发,而飞行计划所需的每月三个人。

自然语言

随着人工智能工作站等系统的计算和推理能力,计算语言学家正在艰难的自然语言理解领域取得进展。在惠普实验室,计算语言学家一直在使用人工智能工作站开发一个实验性的、独立于领域的自然语言理解系统。HP的自然语言系统使用了一个层次结构的词典,一组词汇规则来创建派生的词汇项,以及一小组上下文无关的短语结构规则作为解析英语句子和问题的数据结构。这些句子的解释是由单个单词的含义以及与十几个左右的短语结构规则相关联的语义规则的结果。

自然语言系统产生的是一阶逻辑中一组无歧义的应用独立表达式,每个表达式对应于原句的一种可能解释。在测试应用程序中,这些表达式被转换为数据库查询或消息到对象,利用每个应用程序中特定领域的知识来精确地确定那些在句子本身中未指定的关系或代词绑定。

软件工程

虽然AI工作站等环境可以显着提高软件生产力,但我们刚刚开始获得应用AI对软件开发过程本身的好处。

在整个行业中,有许多项目都在这个领域工作。在HP实验室,我们致力于开发智能编程环境,帮助用户评估潜在修改的影响,确定可能导致特定bug的场景,系统地测试应用程序,协调程序员团队之间的开发,并以统一的方式支持多语言开发。

其他重要的软件工程应用包括自动编程,语法定向编辑器,自动程序测试和基于智能语言的帮助设施。将AI应用于软件开发过程是一个主要的研究主题。提高程序员的生产力,产生的代码的质量以及维护和增强应用的能力存在巨大的潜力。HP的第一个项目是这样的显微镜,一个帮助软件工程师理解复杂软件系统的结构和行为的工具。

结论

我们从软件市场,底层技术,用户环境和基于AI的应用程序的角度讨论了AI工作站。研究了从这些视角中的每一个研究了AI工作站,我们希望读者将其吸收到HP AI工作站技术的连贯性和准确的观点中。

在未来几年,惠普工程师和我们的合作伙伴大学将使用AI工作站作为探索越来越聪明和强大的应用和技术的平台。

致谢

由于人工智能工作站的定义是惠普在人工智能领域的研究的总和,在美国各地的惠普部门和大学超过100人的努力被代表。主要贡献来自Martin Griss和他的软件技术实验室、知识技术实验室、接口技术实验室,以及惠普实验室的分布式计算中心主任Ira Goldstein。

柯林斯堡系统事业部,由罗杰ISON和约翰·奈恩带领团队,提供了一个存在性证明计算机工业的高性能,在传统的硬件质量实现的Common Lisp的。

计算机语言实验室开发了用于传统语言的人工智能工作站的扩展。犹他大学的教师和学生,尤其是罗伯特·凯斯勒教授,对人工智能工作站的基本能力做出了巨大贡献。来自斯坦福大学、犹他大学、兰德公司和加州大学圣克鲁兹分校的许多顾问继续帮助我们改进技术。

本文得益于惠普实验室的拉尔夫·海弗、塞思·费雷、马丁·格里斯和艾伦·斯奈德以及柯林斯堡的迈克·巴科和比尔·福利斯的见解。作者还感谢辛西娅·米勒长时间的编辑。

作者

Marty Cagan对编程环境,软件开发方法和计算机辅助教学感兴趣,是HP实验室软件技术实验室的项目领导者。加入惠普于1981年,他为HP 3000计算机的业务应用程序致力于普通LISP产品的惠普开发环境的业务应用。他在Santa Cruz的加利福尼亚大学举行了1981年颁发的计算机科学和经济学学士学位。ACM,Aaai和IEEE计算机协会的成员是加利福尼亚州洛斯阿尔托斯居民。

参考

  1. M.L.Griss,E. Benson和G.Q.Maquire,“PSL:便携式LISP系统,1982年的Lisp和功能规划,1982年8月的ACM研讨会。
  2. G.L. Steele,Common Lisp:语言,数字印刷机,1984年。
  3. J.S. Birnbaum,“朝向微电子学的本土化”,ACM通讯,1985年11月。
  4. M. Stefik和D.G. Bobrow,“面向对象编程:主题和变化”,AI杂志,1986年1月。
  5. A. Snyder,面向对象的通用Lisp编程,HP实验室技术报告,ATC-85-1, 1985。
  6. S. Rosenberg,“HP-RL:一种构建专家系统的语言”,第八届国际人工智能联合会议论文集,1983年8月。
  7. R. Fikes和T. Kehler,“基于框架的表示在推理中的作用”,ACM通信,1985年9月。
  8. R M。斯托曼,“Emacs的扩展,可定制,自我记录显示编辑器”,在巴斯托,Shrobe和Sandewall,交互式编程环境,麦格劳 - 希尔,1984年。
  9. A. 251,“计算机软件”,《科学美国人》,第251卷,第2期。1984年9月3日。
  10. T. Cline, W. Fong和S. Rosenberg,“光刻技术的专家顾问”,第九届国际人工智能联合会议论刊,1985年8月。
  11. R.L. Moore, L.B. Hawkinson, C.G. Knickerbocker, L.M. Churchman,“过程控制的实时专家系统”,1984年人工智能应用会议论文集,1984年12月。
  12. C.J. Pollard和L.G.Creary,“用于自然语言的计算语义”,1985年7月的计算语言学协会的程序。
  13. D.Proudian和C.Pollard,“解析头部驱动短语结构语法”,《计算语言学协会学报》,1985年7月。
  14. D. Flickenger,C. Pollard和T. Wisow,“词汇代表中的结构共享”,计算语言学协会1985年7月的诉讼程序。
  15. M.L.Griss和T.C.Miller,UPE:统一编程环境,惠普实验室技术报告STL-85-071985年12月。
  16. D.R.巴斯托阁下。Shrobe,“从互动到智能编程环境,”巴斯托,Shrobe和Sandewall,交互式编程环境,麦格劳 - 希尔,1984年。

分享这