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

惠普杂志- 1986年3月

Hewlett-Packard的AI工作站技术介绍

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

由Martin R. Cagan

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

惠普AI工作站代表了惠普主要的符号编程软件开发工作的总和。(以前,这项研究工作在内部被称为棱镜程序。)

术语AI工作站是指在Al的公司范围内的内部研究和开发计划,而不是特定产品。除了许多惠普划分的努力贡献了关键系统组件,许多重要概念是基于来自伯克利大学加利福尼亚大学的马萨诸塞理工学院(麻省理工学院)的研究,以及施乐帕洛阿尔托研究中心(PARC)。特别是犹他大学,特别是贡献了重大贡献。

目前,惠普的AI工作站正在积极使用超过二百人在不同的HP部门,以及由学生和教授在美国各地主要的研究型大学。惠普最近宣布的硬件和软件的5000万$赠款将提供惠普工作站AI选定主要计算机科学大学。

AI工作站技术既是便携式且可扩展的,也可以在各种处理器和操作系统上运行,包括HP-UX操作系统下的新型HP 9000系列300工作站系列。

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

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

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

市场

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

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

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

软件开发者看到AI工作站作为软件系统的快速开发定制的环境。提供的语言是面向高生产率。环境允许多个程序,写在多国语言,要创建,测试和记录的同时。口译和编译器允许增量和交互开发的系统。软件开发人员可以使用AI工作站以知识为基础的系统的开发,或者干脆作为产生用常规的语言传统软件的更高效的手段。在一般情况下,那么,两个原因促使使用AI工作站作为软件开发的机器。无论是AI工作站技术需要开发一个特定的AI应用程序或用户有必要更高效地开发传统语言中常规应用。

基于AI工作站的应用程序的最终用户将AI Workstation视为高度交互,智能和可自定义的应用程序的执行环境。最终用户从总系统中获益,具有高分辨率图形,彩色显示器,局域网,多个窗口和专用输入设备。AI工作站是模块化的和可缩放,使特定应用程序可以使用最少的资源运行,因此保持递送车尽可能低的成本。这是许多希望使用AI工作站开发和分发应用程序的许多AI工作站用户的主要功能。对于这些用户来说,提供低成本的交付车辆是一个主要问题。

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

关于软件开发的生产力和质量改进的大量潜力已经是一项很大的优惠,并鉴于软件开发成本上升,对这种改进有很大的需求。传统上,AI研究人员从他们的环境中要求更加富有成效和强大的软件工程工具。这是管理软件系统的范围和复杂性所必需的。现在,个人工作站具有成本效益,目前仅适用于昂贵的大型机或专用硬件的各种软件工程工具,现在可用于软件系统的设计,开发,测试和维护。

这项技术

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 Workstation提供Lisp编译器和LISP解释器。对于开发,解释器允许增强调试和快速增量设计。一旦程序准备就可投入使用,可以编译它以提高其性能并降低其代码大小。然而,在开发过程中,程序员通常需要使用编译和解释代码的混合来运行。AI Workstation的LISP具有允许编译和解释代码的任意组合的功能。程序员在运行时重新定义编译功能以检查和探索应用程序的行为并不罕见。

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

- Lisp是易于扩展。由程序员定义的函数都在相同的方式系统定义的函数处理。当实现复杂的系统,它常常是有用的开发功能的特定词汇在特定问题领域交谈。和Lisp,这些具体的,面向问题的语言,可以轻松快速地发展。

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

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

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

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

没有必要丢弃现有的代码和数据库以享受LISP的好处。例如,可以在LISP中写入访问Fortran代码库的智能前端。(常见函数调用的常见LISP的扩展是惠斯普特普通LISP产品的惠普开发环境的一部分。)

基于人工智能工作站的应用程序通常是Lisp和传统语言组件的混合。

面向对象编程

AI Workstation提供了两种更高级别的语言,在Lisp中实现了两种,支持软件开发的替代范式。这些语言扩展中的第一个支持面向对象的编程,而第二个支持基于规则的编程。惠普提供了一种基于LISP的面向对象的编程语言。(面向对象编程的常见LISP的扩展是惠普特 - Packard开发环境的一部分,用于普通LISP产品。)

大多数AI工作站的环境本身就是使用这种技术编写的。面向对象的编程在整个行业中都有很大的兴起,并且有充分的理由。面向对象的编程为程序员带来了一种用于软件开发的生产和强大的范式。它是一种通过采用继承,数据抽象,封装和通用操作等强大的技术来解决代码可重用性和软件可维护性的警告的范式。

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

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

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

面向对象的编程风格的一个优点是它封装在对象的实现中,了解对象的表示。对象的行为由其外部接口确定,它是在对象上定义的一组操作。如果设计者更改对象的表示,并且操作的外部可见行为不变,则无需更改使用对象的源代码。

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

(定义类型的狗

(:var name)

(:var年龄)

(:var所有者)

这说我们定义了一种新的对象,内部表示由名称,年龄和所有者组成。例如:

(SETF菲(化妆实例“狗:名为‘菲’))

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

通过指定类型和操作,操作的任何参数以及操作的实现,我们定义了型狗的操作。例如,要定义将让我们更改狗所有者的操作:

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

(setf老板新所有者)

请注意,该操作的实现是引用狗型内部的唯一位置。此封装的值是,如果我们决定更改类型的DOG的实现,那么它只是类型定义和在需要修改的那种类型上定义的操作。

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

( - > Fido:给新所有者的“mandy”)

此语句读取,“将邮件发送给Fido:给新所有者的Mandy'。”

通常,我们将为类型狗定义许多操作,例如SIT,STAY,COVEL和STALM。然后,这些可以被调用:

( - > Fido:坐)

( - > Fido:留)

( - > Fido:来)

(- >狗:说话)

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

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

(定义类型的金毛寻回犬

(:继承的狗)

(:val数 - 网球 - 检索)

这说我们想定义一种新型金猎犬,其继承的类型的数据,并操作.除了继承的属性之外,我们还定义了金色检索器,以维护属性网球检索。请注意,使用对象时,人们无法观察到是否使用继承定义了对象的类型。

我们创建新类型金猎犬的实例:

(setf mac(make-manage'golden-hetrivever:name“mac”))

对于这种新型的狗,我们将拥有自己的实施:说话操作,一个生产更深的吠叫而不是继承的版本。我们还将有一些额外的操作,该操作仅适用于Golden-Retriever类型的对象。

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

然后,这些可以被调用:

( - > Mac:说话)

(- > mac:获取)

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

请注意,我们可以通过首先定义类型进一步使用继承寻回犬从类型继承,然后定义新类型金猎犬拉布拉多 - 猎犬它从类型的RERGEVER继承。

由面向对象的LISP提供的另一个设施是支持强大的通用操作形式的支持多态性

当一个人对对象执行操作时,一个不关心它是什么样的对象,而是在具有指定名称和预期行为的对象上定义操作。这种能力缺乏帕斯卡等语言,其中每个过程只能接受过程标题中声明的确切类型的参数。

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

(定义类型的机器人

(:var name)

(:var模型)

(:var所有者)

要创建型机器人的一个实例:

(setf Roby(make-manage,机器人:名称'roby“))

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

( - > roby:sit)

( - > roby:留)

(- >罗比:来)

(- >罗比:获取)

( - > Roby:说话)

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

注意,虽然这些操作的实现不同,但功能规范和处理类型对象的外部协议机器人金猎犬机器人被定义为相同的,所以我们的应用程序工作不变,我们也挽救了狗粮。

这里介绍面向对象编程的设备可以大大有助于提高程序的可维护性,可扩展的程序和代码重用很长的路要走。

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

基于规则的程序设计

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

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

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

帧是一种数据结构,其将任意数量的语义组合在一起。通常,帧用于存储特定于或约,特定实体的信息。HP-RL允许将知识组织成相关信息的帧。与面向对象的编程一样,HP-RL提供了帧来从其他帧继承信息的能力。

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

帧可以分组为知识域。这种分区可降低问题复杂性,并且还可以通过帮助程序避免搜索无关的知识来提高搜索效率。通过知识库搜索是由HP-RL推理引擎执行的复杂过程。推理引擎是扫描试图满足规则的知识库的设施。HP-RL中的规则是由一组房屋和结论组成的帧,类似于以常规语言的IF-DEL构建。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提供了强大的交互式自文档工具,以便用户能够有效和高效地使用丰富的功能。

面向屏幕意味着用户在两个维度中编辑,因此屏幕上的页面就像书中的页面,并且用户可以通过本书向前或向后滚动。当用户编辑页面时,屏幕立即更新以反映所做的更改。就像桌面上的书籍一样,可以立即打开和使用,使用AI工作站Emacs,许多屏幕可以同时可见和活动。实际上,HP的扩展到麻省理工学院的EMAC之一是不仅能够在单个物理显示器上具有多个屏幕的能力,而且还有多个物理显示器上具有多个屏幕。(这里描述的基于EMACS的编辑环境是常见LISP产品的Hewlett-Packard开发环境的一部分。)

浏览

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

AI工作站环境中的实验浏览器包括文档浏览器,文件浏览器,邮件浏览器,源代码浏览器和应用程序浏览器。这些浏览器的范围从简单到非常复杂。用户可以列出特定人员对特定主题发送的所有邮件消息,或者可以立即检索特定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 Workstation用户环境包含各种可选的服务应用程序,以支持程序员处理Office和管理功能。使用本技术开发的实验应用包括电子邮件,项目管理,文档准备,幻灯片编辑,日历,电子表格,信息管理和电话服务。一旦用户选择包含它,每一个应用程序都成为环境的组成部分。由于所有这些应用程序都是使用AI工作站环境设施编写的,因此它们是可定制的,可扩展的,可从环境中的任何位置访问的。

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

界面

AI工作站的用户环境包含一些工具,这些工具大大简化了新的输入和输出设备(如平板电脑、触摸屏或语音合成器)的整合。除了支持标准的键盘和鼠标输入,AI工作站环境的实验版本还支持操纵杆、平板电脑、触摸屏、视频光盘、声音输入和输出,以及触摸式语音电话输入。用户环境还支持许多用户界面模型,并提供一个环境函数库来帮助用户定义自己的用户界面模型。现有的用户界面模型包括弹出菜单、软键、英文命令和CONTROL-META键序列。

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

应用程序

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

诊断系统

诊断系统是专家系统应用的好示例。诊断系统可以从仪器和/或用户检索尽可能多的数据,并尝试确定问题和/或补救措施的原因。诊断系统应用包括医疗诊断系统,仪器诊断系统和智能计算机辅助指令应用程序。

在HP实验室,我们正在尝试使用1C光刻诊断系统。该系统称为光刻顾问,是用于诊断IC制造的负光刻抗蚀剂级中的故障的专家系统。

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

仪器控制

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

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

模拟

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

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

HP Flight Planner / Flight Simulator是由HP实验室设计的应用程序,以说明AI工作站技术的许多重要功能:即,多语言应用是理想的,简单地发展,可以快速开发复杂的应用程序,即LISP应用程序可以设计用于在没有垃圾收集中断的情况下运行,并且LISP应用可以在常规硬件和操作系统上以非常高的性能运行。

飞行计划器模块是一个约束驱动的飞行规划专家系统。该系统展示了一幅从旧金山到洛杉矶的加州详细地图。要求飞行员提供始发机场、最终目的地和所需的任何中间站点。然后,飞行员可以指定具体的限制条件,如“避开海洋和山脉”、“确保两站之间的间隔不超过3小时”或“计划在圣巴巴拉吃午餐”。

该系统的知识库包括有关机场、地形、塞斯纳172飞机的规格和性能的数据。根据指定的约束条件,飞行计划器试图找到一个可行的飞行计划,满足飞行员指定的约束条件,以及地形和飞机限制所隐含的约束条件。

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

除了通过自动驾驶仪飞行预定的飞行计划之外,飞行模拟器可以手动飞行。飞行员使用HP-HIL操纵杆,9-旋钮盒和32键式框作为控件。飞行计划使用HP-RL实现。

飞行模拟器以常见的LISP实现和面向对象的扩展到常见的LISP。使用HP-UX操作系统的3D图形设施从LISP访问的C例程执行图形转换。飞行模型,自动驾驶仪组件和场景管理都是使用面向对象的扩展来编写的常见LISP。飞行模拟器需要两个月两个月,而两个月的开发,而飞行计划是三个人的一个月。

自然语言

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

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

软件工程

虽然人工智能工作站等环境可以显著提高软件生产率,但我们才刚刚开始收获将人工智能应用于软件开发过程本身的好处。

在这一领域工作的整个行业都有许多项目。在HP Laboratories,我们正在研究智能编程环境,帮助用户评估潜在修改的影响,确定哪些方案可能导致特定的错误,系统地测试程序,协调程序员团队之间的开发,以及支持多语言开发均匀的方式。

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

结论

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

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

致谢

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

堡垒柯林斯系统部门,由Roger Ison和John Nairn领导的团队为计算机行业提供了一种高性能,质量实施的常规硬件的高性能,优质实施。

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

本文从Ralph Hyver,Seth Fearey,Martin Friss和HP实验室的Alan Snyder和迈克·奶酪和堡垒Fort Collins的Bill Follis的见解中受益。作者还要感谢辛西娅米勒的长时间编辑。

作者

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和函数式编程ACM研讨会,1982年8月。
  2. G.L. Steele,Common Lisp:语言,数字印刷机,1984年。
  3. J.S.Birnbaum,“朝来驯化微电子,”1985年11月ACM的通信。
  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.凯勒,“基于帧的表示方法在推理中的作用”的ACM,1985年9月的通信。
  8. R M。Stallman,“EMACS:在Barstow,Shrobe和Sandewall,Interactive编程环境,McGraw-Hill,1984年,麦克风编程环境中的可扩展,可定制,自我记录显示编辑器”可扩展,可定制的,自我记录显示编辑器“。
  9. 答:251,“计算机软件,”科学美国人,卷。251,没有。3,1984年9月。
  10. T. Cline, W. Fong和S. Rosenberg,“光刻技术的专家顾问”,第九届国际人工智能联合会议论刊,1985年8月。
  11. R.L.摩尔,L.B.Hawkinson,C.G.尼克博克和L.M.教士,“一个实时专家系统的过程控制,”人工智能应用,1984年12月1984年学术会议论文集。
  12. C.J. Pollard和L.G.Creary,“用于自然语言的计算语义”,1985年7月的计算语言学协会的程序。
  13. D. Housian和C. Pollard,“解析头驱动短语结构语法”,1985年7月的计算语言学协会的程序。
  14. D. Flickenger, C. Pollard和T. Wasow,“词汇表征中的结构共享”,《计算语言学协会学报》,1985年7月。
  15. M.L.怜悯和t.C.米勒,UPE:统一的编程环境,HP实验室技术报告STL-85-07,1985年12月。
  16. D.R.barstow和h.e.Barstow,Shrobe和Sandewall,互动编程环境,McGraw-Hill,1984年,拍摄,“从互动编程环境中,”拍摄“从互动编程环境中,”。

分享这个