acm-header
登录

ACM通信

ACM通信

示例编程(简介)


当我第一次开始学习编程的时候,那是很久以前的事了,我认为编程应该像教别人如何执行一项任务。毕竟,编程的目标不就是让计算机学习,然后实际执行一些新的行为吗?还有什么比以身作则更好的教育方式呢?

所以我想象你要做的就是向计算机展示一个你想让它做的事情的例子,一步一步地进行,让计算机记住所有的步骤,然后让它尝试在一些新的例子中应用你展示给它的东西。我猜你必须学习一些特殊的指令,告诉它在不同的例子中什么会改变,什么会保持不变。但基本上,我想象它是通过记住你展示的例子和回放记住的过程来工作的。

想象一下,当我发现大多数计算机程序员是如何工作的时候,我有多震惊。有一种叫做“编程语言”的东西和你实际在做的事情没有太大关系。你必须事先写出程序的所有指令,而不能看到任何指令的作用。你怎么知道他们做的是不是你想要的?如果语法不完全正确(谁能做到呢?),就没有任何工作。即使你有了这个程序,尝试了它,有些地方出了问题,你也看不出程序中发生了什么。你怎么知道哪部分是错的?等一下,我想,这种编程方法不可能奏效。

我还在试着修理它。

多年来,有一小群专注的研究人员和我有同样的想法,他们最终开发了一种截然不同的编程方法,称为“实例编程”(PBE)。它有时也被称为“演示编程”,因为用户向计算机演示所需行为的示例。软件代理记录用户与传统的“直接操作”界面之间的交互,并根据用户的操作编写相应的程序。然后,代理可以推广程序,使其在其他类似于(但不一定完全相同)教它的例子的情况下也能工作。

这种能力使PBE像类固醇上的宏。传统的宏只能精确地回放所记录的步骤,这使得它们很脆弱,因为即使是最微小的上下文细节发生变化,宏也会停止工作。泛化也是PBE的中心问题,它的解决方案应该能使PBE实际上取代所有传统的编程。

儿童可能代表PBE系统的第一个真正的商业市场。他们不受传统编程思想的影响;对他们来说,可用性和即时性是最重要的。这就是为什么在考虑到儿童的情况下,本特别部分探讨了两种著名的PBE系统,它们最近被推向市场,受到了最初用户的热烈欢迎,其中许多是儿童。David Canfield Smith和Allen Cypher的Stagecast Creator(在Smith等人的文章中描述过)是从Apple Computer的Cocoa和KidSim发展而来的,它将基于规则的PBE引入到图形网格世界中。Ken Kahn的ToonTalk(在Kahn的文章中描述过)是一种编程系统,同时也是一款电子游戏,它使用了完全不同的编程模型,以及完全不同的用户界面。ToonTalk通过删除细节,以一种简单、几乎明显的方式解决了泛化示例的问题。该程序不太专门化,因此更适用于更广泛的情况。


PBE是为数不多的有可能打破一直将程序员与用户隔开的柏林墙的技术之一。


我们还分析了PBE的用户需求、功能PBE系统的例子以及PBE未来的发展方向,希望所有这些都能证明这种创新技术的力量和潜力。

PBE不同于传统软件的一个方面是它如何应用人工智能和机器学习的新技术。合并这些技术为PBE提供了巨大的机会,但也带来了系统将做出不必要的泛化的风险。Myers等人从他们在PBE系统中构建智能的广泛经验中处理了PBE系统应该具有多少智能这一棘手问题。

除非我们至少提供一些PBE如何在特定应用领域使用的好例子,否则我们无法说服人们PBE的固有价值。例如,Bauer等人将PBE和Webeverybody今天最喜欢的应用领域结合起来。Web是PBE的重点,因为它可以访问大量的知识,并且迫切需要帮助用户组织、检索和浏览这些知识。智能代理的最新发展可能会有所帮助,但前提是用户能够将他们的需求传达给他们的代理并控制其行为。PBE是理想的。PBE还可以用于自动化许多其他常见但平凡的任务,这些任务在传统情况下会消耗大量程序员和用户的时间。

所以,你可能会问,如果PBE这么好,为什么不是每个人都在使用它呢?PBE代表了对我们现在所知的编程的彻底背离;尽管已经有许多系统证明了它在改进各个领域应用程序方面的可行性和价值,但它在普及之前还是需要一段时间。编程社区的保守性是PBE广泛使用的最大障碍。

Repenning和Perrone展示了如何通过使用类比这一重要的直觉认知机制使PBE更像人类的学习。我们经常通过与已知事物的类比来解释新的例子,这允许我们转移和重用旧知识。它们展示了我们如何使用类比机制来编辑PBE程序,以及如何从零开始创建这样的程序。

最后,St. Amant等人探索了一种乍一看似乎很疯狂的方法。我们(我是作者之一)让计算机在解释屏幕上的图像时模拟用户的视觉系统,而不是访问底层数据。尽管它看起来效率很低,但这种方法巧妙地避开了PBE与传统应用程序存在的最棘手的问题之一。它实现了我们所说的“视觉泛化”,即泛化应用程序的内容如何在屏幕上显示给用户,以及数据的属性。

PBE是为数不多的有可能打破一直将程序员与用户隔开的柏林墙的技术之一。它允许用户在保持熟悉的用户界面的同时利用编程的过程通用性。今天的用户通常受软件供应商的摆布,软件供应商提供包装紧凑、一刀切、不可修改的应用程序。有了PBE,他们可以为独一无二的问题创建个性化的解决方案,修改现有的程序并创建新的程序,而不必经历传统编程的神秘巫毒。

回到顶部

作者

亨利·利伯曼(lieber@media.mit.edu)是马萨诸塞州剑桥市麻省理工学院媒体实验室的研究科学家。


©2000 acm 0002-0782/00/0300 $5.00

允许为个人或课堂使用本作品的全部或部分制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。

数字图书馆是由计算机协会出版的。版权所有©2000 ACM, Inc。


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
文章内容:
Baidu
map