一些关于 Smalltalk 的历史

历史和动机
Smalltalk 的根源可回溯到七十年代早期,那时在 Xerox Palo Alto 研究中心 (Parc) 的 Dynabook 计划的环境下探索出的许多想法被结合到 Smalltalk/ObjectWorks 编程系统中。这个 “Dynabook” 基于一个梦想:成人和儿童拥有便宜的笔记本大小的个人计算机,有能力处理他们所有的与信息有关的需求。在加入 Xerox Parc 之前, 这个想法的主要倡导者 Alan Kay 工作在 Utah 大学,他在那里是开发 Flex 编程系统小组的成员,这个系统是针对灵活的面向模拟和图形的个人计算机的一个新颖的设计,有从 Simula 和 Sketchpad 演化来得许多想法。这时 Kay 向 Parc 的主管层建议扩充这个研究,他的设计完全超越了当时的计算机硬件和软件技术的接受能力。 Dynabook 基于的假定是有充足的内存和处理能力,还有可以感知手指触摸的一个平坦的屏幕显示器。为了声音再现而插入了一个立体声系统,为了访问大的共享数据库而设有到电话线的一个连接。Kay 坚信 Dynabook 会象 Gutenberg 发明印刷机之后个人可负担起的图书替代中世纪的手工文稿一样有革命性。他想象了在各种领域中使用这种设备的一个复合体,如绘制图片(比如给学前儿童),信息存储(比如给博士),音乐演奏 (比如给作曲家),模型的动态模拟和图形动画(比如给教师),在三维空间中物体的表示法(比如给建筑师),或在一个公司内的库存和资金流通计算 (比如给商人)。为了完全开拓新媒介提供的潜在的交互,需要用户有一定程度的编程技巧。但是现存的编程语言是为专家设计的并在很大程度上只适合数值任务;在 Kay 看来严格的这种应用对希望使用 Dynabook 的工作方式是相对的无关紧要的。尽管 Lisp 家族中的语言提供了必要的符号处理能力,但仍然缺乏数据封装构造,并且不迎合由非专家用户来做容易的扩展。

所以开发一门新语言获得了优先权。与此同时 S. Papert 和一组其他研究人员也在制作叫做 Logo 的一个交互性的和高度图形化的基于计算机的学习环境,他们想用它来教儿童编程。Logo 基于 J. Piaget’s 在发展心理学上的工作,而 Kay 吸收了许多它的中心观念。在过程式语言中编程经常要求过程的精密组合,并且使这种构造工作的复杂性随程序的长度而呈指数增长。因为“动态”个人计算媒介的整体想法极度依赖的特征是让非专家做轻易的概念扩展,Kay 选择分层设计的积木方法,围绕封装和继承来建造。 Smalltalk 是最终形成的编程语言。它是完全基于对象和消息概念的第一个计算机语言。

Dynabook 计划从未成功完成,而许多今天的笔记本计算机已经达到和超过了它的最初目标。在这项计划存在那些年 Xerox Parc 做了许多研究,对计算机的很多领域有巨大影响。第一个实验实现运行在所谓的 Alto 工作站上,它是改装的 Data General Nova 小型机。后来被 Dorado 所替代,它是订制的和非常快的个人计算机。在开发的时候它们都是最新技术的计算机。在 Xerox Parc 的研究首创了在白色图形上的内存映射黑色输出 (替代了在黑色 CRT 显示器上的传统的绿色输出) 和局域网的以太网体系。在软件方面,用多于一个多年的周期率先实验了在基于窗口的、鼠标和菜单驱动的用户界面上的许多革新想法。

Smalltalk 作为 Dynabook 的编程工具,最初被构想为适合被儿童使用而无需预先的计算机知识的一门简单语言。名字的选择反映了这个意图。最初的 Smalltalk 系统是一千行的 Basic 程序,它在1972年10月成功的计算了 3+4 。两个月之后随后的一个汇编实现被称为 Smalltalk-72 系统。D. Ingalls 是这些系统的主要实现者。在 1974 年 Smalltalk 被移植到 Alto 计算机并进行许多建造图形用户界面的实验。应用程序包括海龟图形、一个鼠标驱动的程序编辑器,一个结构化图形编辑器,一个动画系统和一个音乐系统。Smalltalk-72 还作为向高中生教面向对象编程的实验程序的基础。Smalltalk-74 为位图映射图形 (类 BitBlt)和虚拟内存增加了更好的设施。这个改进的系统被用来实现一个信息检索系统和一个基于窗口的用户界面。Smalltalk-74 发展成了 Smalltalk-76,它基于一个更加清晰的设计。Smalltalk-76 还增加了继承的想法,它缺少两个早期的系统。计划了作为可移植实现的基础的“字节码”,而这个设计的一个宏代码模拟器导致了改进的性能。 Smalltalk-76 被多于 20 个人作为日常基本工具使用了 4 年。一个更干净的实现(Smalltalk-78) 最终导致了 Smalltalk-80,它是在 Xerox Parc 外部可获得的第一个系统。

在 Smalltalk 早期开发的 8 年间,“学习研究组”的成员偶尔的出版物和访问学者的报告引起了相当可观的兴趣。获取更详细的信息的尝试通常受挫。在 1979 和 1980 年 Xerox 最终允许 Smalltalk-80 公开发行。这个过程被计划为三个阶段: 一系列介绍文章,带有详细系统定义的一本书,和带有可移植实现的磁带。介绍文章以 Byte 的一个专刊出版。详细系统规定的计划被修订为四本的丛书。第一本 (叫作“蓝皮书”)描述语言和它的实现。第二本(叫作“橙皮书” )提供对 Smalltalk 的用户界面的详细讨论。第三本打算描述如何使用 Smalltalk 作为图形和交互应用的工具,第四本(叫作“绿皮书” ) 意图辅助实现者。不幸的是第三本从未出版 ,这在如何使用系统的文档中留下了长时间的空白。

可移植实现的软件被分为两个主要部分,虚拟机和虚拟映射。虚拟映射(VI) 是编码 Smalltalk 功能的一系列类。这包括数据结构的定义、图形和文本处理、编译器,反编译器、调试器、视图和用户界面支持。所有定义用 Smalltalk 自身给出,在这个意义上它是机器无关的,而编译器生成的代码是叫作“字节码”的中间代码 。虚拟机(VM) 形成每个实现的机器相关的部分,包括一个字节码解释器、一个存储管理器、和一些“原语”方法。只要能写出正确的虚拟机,Smalltalk 就可以移植到提供位映射图形和一个定点设备的任何平台上。Xerox 保留系统的版权并且禁止任何未经授权的复制。在尝试广泛的发行系统之前为了测试系统的可移植性,向一些计算机公司发出了适当的设备上开发领航实现的邀请是。四个接受邀请的公司最终生成了生产系统:Apple Computer、Digital Equipment、Hewlett Packard 和 Tektronix。这个过程从系统中铲除了一些错误并在 1983 年在更广泛的社区中发行了新版本 (VI2)。自从开始了系统的公开发行,Xerox Parc 开始与 Fairchild 实验室协作 AI 研究,为 Motorola 68000 微处理器的 Smalltalk 实现改进设计。这导致叫做“PS Smalltalk”的一个系统,这形成了 Parc Place 系统当前的 Smalltalk 产品的基础。Smalltalk 计划也在日本和欧洲发起。在一段时间内 Tektronix 保持在语言方面活跃的参与(involvement)并提供完全范围的基于 Smalltalk 的工作站。他们还支援了对系统作出了许多有趣的创新的一组研究者。Apple computers 对 Smalltalk 有强烈的兴趣。在80年代早期一些最初的学习研究组成员(包括 L. Tesler 和 D. Ingalls) 加入了 Apple ,努力设计和实现了强烈的基于来自 Smalltalk 环境的想法的一个新计算机体系。这个计划直接导致了 Lisa 和 Macintosh 微机。不要奇怪 Macintosh 的用户界面中的许多想法看起来非常类似于 Smalltalk。

在 IBM 设备上的那些早期的 Smalltalk 实现中,Digitalk Smalltalk V 是唯一幸存的。Smalltalk V 和后来的 Visual Smalltalk 把自己限制为非常简单的用户界面,很大程度上因为早期 IBM PC 硬件和 Microsoft DOS 操作系统的限制,但售价非常合理。Xerox 自己在 Smalltalk 计划上只获得了稀少的收获。一些早期 Smalltalk 工作站(Xerox 1100 系列)售价过高而只售出很少。Star 机器是基于来自 Smalltalk 界面的想法的一个高级办公计算机,也由于同样的原因而从未流行。在 1987 年 Xerox 决定公司化它的 Smalltalk 利益。建立了叫作 Parc Place systems 的一个独立的公司,负责进一步开发和 Smalltalk 的许可与系统的发行。这个新公司雇用了最初的 Smalltalk 小组的一些成员并在各种计算机系统上发行了一些改进的实现 (VI 2.2 , 2.3, 2.4, 2.5),如 Apple Macintosh、IBM PC 和 Sun 工作站。在 1990 年出品了一个新版本的 Smalltalk,叫做 ObjectWorks 和以后的 VisualWorks,提供了使用了主机的“本地”窗口管理器的有颜色的和可移植的界面。这要求在 Smalltalk 虚拟机和主机的操作系统之间作功能上的重大的重新安排,这导致了一个完全重新设计的语言,用它写成的应用程序在广泛的计算机设备上是高度可移植的。后来 Parc Place system 合并了 Digitalk,并且合并后的公司忙着做一个新的联合实现,代号叫“van Gogh”。 三年之后 IBM 也加入主要的 Smalltalk 厂商的行列。它的 VisualAge Smalltalk 与 VisualWorks 只有很少的区别。

但是上述的商业系统价格昂贵,从 1996 年起已经出现了一些公众域 Smalltalk 派生者如 Smalltalk X、Dorado Smalltalk 和 Squeak 。其中 Squeak 特别有趣,它在一小组研究者活跃的开发下,包括 Smalltalk 的最初建立者 Alan Kay 和 Dan Ingalls。这个计划由 Dan Ingalls 领导,而 Kay 以一个 Disney 成员的角色来支持它。在许多方面上 Squeak 代表了对最初的 Smalltalk 计划的价值的一个回归。它的设计基于 Smalltalk 2.5,扩张了更现代的彩色图形模型和实现技术。由于在继续进一步开发它,它可以迁移到其他的领域,例如它的最新实现包含一个实验的用户界面体系叫做 Morphic (吸纳自 Sun 的已停止了的 Self 计划)。 Squeak 可免费获得当前的实现,存在于 Macintosh 、Windows PC 和 Unix 系统上。还有一个 Squeak 邮件列表让它的用户社区及时了解最新的发展。

Squeak 被选择为 COSC205 的编程工具主要因为 Smalltalk 是有很少语法负担的纯面向对象语言,而 Squeak 提供了这个想法的一个可自由访问和移植的实现。还有它的简洁、效率和趣味 :)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!