Smalltalk的早期历史

2020-08-30 16:50:16

允许免费复制全部或部分本材料,前提是复制不是为了直接商业利益而制作或分发,ACM版权声明和出版物的标题及其日期出现,并且通知复制是经过计算机械协会的许可的,则可以免费复制所有或部分材料,只要复制不是为了直接商业利益而制作或分发,ACM版权声明和出版物的标题及其日期都会出现,并通知复制是经过计算机械协会的许可。要以其他方式复制或重新发布,需要付费和/或特定许可。HOPL-II/4/93/MA,美国©1993ACM 0-89791-571-2/93/0004/0069...$1.5。

大多数想法都来自以前的想法。六十年代,特别是在ARPA社区,通过交互式分时计算机、图形屏幕和定点设备,引发了一系列关于人机共生的概念。先进的计算机语言被发明来模拟复杂的系统,如炼油厂和半智能行为。现代个人计算、重叠的窗口界面和面向对象设计的范式转变,来自于将60年代的工作视为比更好的旧东西更好的东西。这不仅仅是一种更好的方式:进行大型机计算;让最终用户调用功能;使数据结构更加抽象。取而代之的是,计算量/美元/容量呈指数级增长的前景要求将60年代视为几乎是一种新事物,并找出真正的新事物可能是什么。例如,人们可以用手持的Dynabok;以一种在共享大型机上不可能实现的方式进行计算;数百万潜在用户意味着用户界面将不得不成为蒙台梭利和布鲁纳那样的学习环境;对于大范围、降低复杂性和终端用户识字的需求,将需要取消数据和控制结构,转而采用更生物学的方案,即受保护的通用细胞只通过可以模拟任何所需行为的消息进行交互。

早期的Smalltalk是这些新观点的第一个完全实现,因为它的许多前辈在硬件、语言和用户界面设计方面都是这样做的。它成为新计算的典范,部分原因是我们实际上是在尝试信仰结构的质的转变-一种与印刷机发明相同精神的新库恩范式-因此采取了非常极端的立场,几乎迫使这些新风格被发明出来。

-SketchPad、Joss、LISP和SIMULA,60年代的4个伟大的编程概念。

我是在35000英尺高空的飞机上写这篇介绍的。我腿上放着一台重达5磅的笔记本电脑--1992年的临时迪纳博克电脑,到年底它的售价还不到700美元。它有一个扁平、清晰、高分辨率的位图屏幕,重叠的窗口,图标,一个定点设备,相当大的存储和计算能力,它最好的软件是面向对象的。它内置了先进的联网功能,并且已经有了无线联网的选项。Smalltalk在这个系统上运行,是我目前与儿童一起工作时使用的主要系统之一。在某些方面,这超过了Dynabok(从数量上),而在某些方面,(从质量上)还不是很到位。总而言之,基本上就是60年代末的想法。

Smalltalk是对ARPA的更大追求的一部分,后来又对施乐帕洛阿尔托研究所(Xerox Parc)进行了追求,我称之为个人计算机。每个阶段都有太多来自研究界的人参与,因此为想法准确分配学分是一件非常困难的事情。相反,正如鲍勃·巴顿喜欢引用歌德的话那样,我们应该分享发现的兴奋,而不是徒劳地试图要求优先权。

我将试图展示大多数影响来自哪里,以及它们是如何在由新的个人计算隐喻形成的磁场中转变的。正是先驱们的态度和伟大的想法帮助了Smalltalk的发明。当时我最钦佩的许多人,如伊万·萨瑟兰、马文·明斯基、西摩·帕普特、戈登·摩尔、鲍勃·巴顿、戴夫·埃文斯、巴特勒·兰普森、杰罗姆·布鲁纳和其他人,似乎都有一种绝妙的感觉,他们的作品虽然按相对标准衡量很棒,但还没有接近必须跨越的绝对门槛。狭小的头脑试图形成宗教,伟大的头脑只是想要更好的上山路线。牛顿说,他站在巨人的肩膀上看得更远,而计算机科学家经常站在彼此的脚趾上。近视仍然是一个问题,因为有巨人的肩膀可以站在上面--远视比洞察更好--但如果戴上对美学和批评高度敏感的眼镜,近视的问题就可以降到最低。

编程语言可以按多种方式分类:命令式语言、应用型语言、基于逻辑的语言、面向问题的语言等等。但它们似乎都是功能的集合体或功能的集合体。

SmallTalk的设计--以及它的存在--是因为我们深刻地认识到,我们所能描述的一切都可以由一种行为构建块的递归组合来表示,这种行为构建块将状态和流程的组合隐藏在其内部,并且只能通过消息交换来处理。从哲学上讲,Smalltalk的对象与莱布尼茨的单子以及20世纪物理和生物学的概念有许多相似之处。它制造物品的方式相当柏拉图式的,因为其中一些物品是概念的理想化--思想--可以从这些理想化的概念中创造出各种表现形式。如果认为观念本身就是(观念-观念)的表现,而观念-观念是一种--表现--观念--这是--一种--本身,那么这个系统就完全是自我描述的--这会被柏拉图理解为一个极端的恶作剧(柏拉图)。

在计算机术语中,Smalltalk是对计算机本身概念的递归。每个Smalltalk对象都是对计算机所有可能性的递归,而不是将计算机内容分成比整体更弱的东西-比如编程语言中常见的数据结构、过程和函数。因此,它的语义有点像将成千上万台计算机通过一个非常快的网络连接在一起。因此,具体表示的问题几乎可以无限期地推迟,因为我们主要关心的是计算机的行为是否恰当,只有在结果关闭或返回太慢的情况下,我们才对特定的策略感兴趣。

虽然Smalltalk确实有高贵的祖先,但它的贡献是一种新的设计范式-我称之为面向对象-解决了专业程序员的大问题,并使新手用户有可能解决小问题。面向对象的设计是一种成功的尝试,它定性地提高了对硅爆炸导致的越来越复杂的动态系统和用户关系建模的效率。

在这段历史中,我将努力忠实于汉明的要求,因为这是由霍布斯的观察所缓和的。我之前试图写关于Smalltalk的文章时遇到过困难,因为我的情感投入一直集中在将个人计算机作为人类触角的放大器,而不是编程系统设计上,而我们还没有做到这一点。虽然我是Smalltalk的发起人和最初的设计者,但它更多地属于那些让它发挥作用并将其推出的人,特别是丹·英戈尔斯和阿黛尔·戈德堡。每一个LRGER都以深刻和非凡的方式为这个项目做出了贡献,我希望有足够的空间来公平地对待他们。但我想我们都会同意,在Smalltalk的大部分开发过程中,Dan是核心人物。从本质上讲,编程是一门实用的艺术,真正的东西是在其中构建的,因此必须存在真正的实现。事实上,今天使用的语言即使不是大多数,也有很多,不是因为它们有任何真正的优点,而是因为它们存在于一台或多台机器上,它们可以被引导,等等。但是Dan不仅仅是一个伟大的实现者,随着Smalltalk进入实际世界,他也成为了越来越多的设计者,不仅是语言的设计者,也是用户界面的设计者。

在这里,我将集中关注导致Smalltalk-72的事件,以及它向现代形式Smalltalk-76的过渡。大多数想法都是在这里产生的,而许多OOP的早期阶段在几乎不可能找到的参考文献中记录得很少。

这段历史太长了,但令我惊讶的是,有这么多有影响力的人和制度只出现在阴影中,或者根本没有。很抱歉我不能说更多关于鲍勃·巴尔泽、鲍勃·巴顿、丹尼·鲍勃罗、史蒂夫·卡尔、韦斯·克拉克、芭芭拉·多伊奇、彼得·多伊奇、比尔·杜瓦尔、鲍勃·弗莱格、劳拉·古尔德、布鲁斯·霍恩、巴特勒·兰普森、戴夫·利德尔、威廉·纽曼、比尔·帕克斯顿、特里格夫·雷斯考格、戴夫·罗布森、道格·罗斯、保罗·罗夫纳、鲍勃·斯普罗尔、丹·斯温哈尔更糟糕的是,我忽略了许多我讨厌其设计的系统,但这产生了相当有用的想法和态度。换句话说,不应该非常认真地相信历史,而应该认为这是演员在离开舞台很久之后才做出的软弱的手势。

感谢众多评审员忍受了他们不得不评论的许多草稿。特别感谢迈克·马奥尼如此温和地帮助我,让我很好地听取了他的建议,以至于他们极大地改进了这篇文章-以及让·萨米特(Jean Sammet),一位老朋友,他确实吓坏了我,让我完成了这篇文章-我不想知道如果我迟到了会发生什么。雪莉·麦克洛林和金·罗斯在收集所有材料方面帮了大忙。

虽然面向对象

无论是内部还是外部,新想法都要经历接受阶段。在内部,这个序列从几乎看不到一个模式几次,然后注意到它,但没有意识到它的宇宙意义,然后在几个领域操作地使用它,然后是一个大旋转,在这个大旋转中,这个模式成为了一种新的思维方式的中心,最后,它变成了它最初脱离的那种僵硬的宗教。正如叔本华指出的那样,从外面看,这个新想法首先被谴责为精神错乱的作品,几年后它被认为是显而易见的和平凡的,最后最初的批评者将声称它是发明的。

一如既往,大约在1961年,当我在空军当程序员时,我几乎看不到这个想法。第一个是在Burroughs220上,其形式是将文件从一个航空训练司令部设施传送到另一个空军训练司令部设施。当时还没有标准的操作系统或文件格式,所以一些(至今不为人知的)设计师决定巧妙地解决这个问题,将每个文件分成三个部分。第三部分是任意大小和格式的所有实际数据记录。第二部分包含知道如何获取记录和字段以复制和更新第三部分的B220过程。第一部分是指向第二部分中过程入口点的数组或相对指针(初始指针以标准顺序表示标准含义)。不用说,这是一个伟大的想法,并在后来的许多系统中使用,直到强制使用COBOL将其赶尽杀绝。

第二次几乎看不到这个想法发生在稍晚一点的时候,ATC决定用B5000取代220。我当时并没有真正欣赏它,但我确实注意到了它的分段存储系统、HLL编译和字节编码执行的效率、子例程调用和多进程切换的自动机制、共享的纯代码、它的保护机制等等。而且,我看到对它的Program Reference Table的访问与为模块提供过程接口的220文件系统方案相对应。然而,我在这台机器上最大的成功不是OOP的想法,而是对HLL翻译和评估的一些见解。[Barton,1961][Burroughs,1961]。

从空军毕业后,我在大学的其余部分一直在为国家大气研究中心编写大量天气数据的检索系统。我对总体上的模拟很感兴趣,特别是一台机器对另一台机器的模拟,但除了在CDC 6600上做一维版本的位场块传输(Bitblt)来模拟各种机器的字长之外,我的大部分注意力都被学校分散了注意力,或者我应该说是学校的剧院。在奇佩瓦瀑布帮助调试6600时,我读到了戈登·摩尔(Gordon Moore)的一篇文章,文章预测,芯片上集成的硅将在未来许多年内在密度和成本方面呈指数级提高[摩尔65]。1965年的时候,站在房间大小的氟利昂冷却的10MIP6600旁边,他令人震惊的预测几乎没有投射到我的视野中。

经过一系列的侥幸,我最终在1966年秋天就读于犹他大学(University Of Utah)的研究生院,对此一无所知。也就是说,我从未听说过ARPA或其项目,也从未听说过犹他州在这个社区的主要目标是解决3D图形中的隐藏线问题,直到我真正走进戴夫·埃文斯(Dave Evans)的办公室寻找工作和办公桌。戴夫的桌子上放着一叠一英尺高的棕色封面文件,他递给我其中一份:拿着这个看一看。

每个新来的人都有一个。书名是“画板:人机图形交流系统”[萨瑟兰出版社,1963]。它能做的事情是相当了不起的,对我所遇到的任何一台计算机的使用都是完全陌生的。最容易理解的三个大概念是:它是现代交互式计算机图形学的发明;通过制作可以生成实例图形的母版图纸来描述事物;控制和动态由同样以图形形式的约束来提供,可以应用于母版以塑造相互关联的部分。(#34;{#34;}{##**$$}}它的数据结构很难理解-唯一模糊熟悉的结构是嵌入指向过程的指针,并使用称为反向索引的过程跳转到例程,如220文件系统[Ross,1961]。它是第一个拥有裁剪和缩放窗口的公司--在约1/3平方英里的虚拟床单上画了一个草图!

我转了转头,找到了我的办公桌。上面有一堆磁带和清单,还有一张字条:这是1108的阿尔戈尔。这不管用。普莱

最后,我和另一名研究生在大厅80英尺的地方展开了列出的项目,然后爬过它,向对方大声喊出了自己的发现。最奇怪的部分是存储分配器,它不遵守ALGOL通常的堆栈规则。几天后,这提供了线索。Simula分配的是非常类似于Sketchpad实例的结构。有一些描述起到了主人的作用,他们可以创建实例,每个实例都是一个独立的实体。Sketchpad所称的主机和实例,Simula称为活动和流程。此外,Simula是一种用于控制类似画板的对象的过程性语言,因此比约束具有相当大的灵活性(尽管在优雅上有一些代价)[Nygaard,1966,Nygaard,1983]。

这是一部轰动一时的电影,从那以后我就不一样了。我认为这部热片之所以有如此大的影响力,是因为我已经以不同的形式看到了足够多的想法,以至于最终的认可是如此笼统,以至于有一种顿悟的性质。我的数学专业集中在抽象代数上,它们的几个运算一般适用于许多结构。我的生物学专业专注于细胞新陈代谢和更大规模的形态发生,它的概念是简单的机制控制复杂的过程,以及一种能够分化为所有需要的积木的积木。220文件系统、B5000、Sketchpad,最后是Simula,都将相同的理念用于不同的目的。B5000的主要设计者、犹他州教授鲍勃·巴顿(Bob Barton)几天前在他的一次演讲中说过:递归设计的基本原则是使部分与整体具有相同的能力。我第一次将整体视为整个计算机,并想知道为什么会有人想要把它分成较弱的东西,称为数据结构和过程。为什么不把它分成几台小电脑呢,因为分时技术开始兴起了。但不是几十个。为什么不是数千个,每个都模拟一个有用的结构呢?

我回想起莱布尼茨的“单调”,柏拉图的“自然分割论”,以及其他解析复杂性的尝试。当然,哲学是关于观点的,工程学是关于行动的,科学是介于两者之间的快乐媒介。可以毫不夸张地说,从那时起,我的大部分想法都植根于西姆拉-但并不是为了改进它。这是一种全新的计算结构方式的承诺,吸引了我的想象力。事实证明,要理解如何使用这些见解并设计出有效的机制来执行它们,需要相当长的时间。

戴夫·埃文斯(Dave Evans)不太相信研究生院是一个机构。与许多ARPA承包商一样,他希望他的学生做的是实实在在的事情,他们应该尽快完成研究生学业,他们的论文应该推动最先进的水平。戴夫经常给他的学生找咨询工作,1967年初,他把我介绍给了埃德·钱德尔(Ed Cheadle),一位友好的硬件天才,在当地一家航空航天公司工作,当时他正在研发一台小型机器。这并不是第一台个人计算机--那是韦斯·克拉克的LINC--但埃德想让非计算机专业人士使用它,特别是他想用一种更高级的语言来编程,比如BASIC。我说,乔斯怎么办?它更好。他说:当然,不管你怎么想,这就是我们称之为FLEX机器的非常愉快的合作的开始。随着设计的深入,我们意识到我们想要动态模拟和扩展,这两种语言Joss(或我所知道的任何现有语言)都不是特别擅长。这台机器对西穆拉来说太小了,所以出了问题。乔斯的美丽之处在于。

.