面向对象之父Alan Kay:预测未来,创造未来

原创
开发 架构
更多时候,Alan Kay是以面向对象程序设计和Smalltalk创世人的身份被我们记住,以软件大师和计算机界泰斗的高度被我们仰视;但你是否知道,他还是个发明家。

【51CTO独家特稿】在开始正文之前让我们先回答一个问题,你使用过Alan Kay的某项发明吗?如果你是个程序员,你会使用C、C++或Java进行程序开发,那你应该用过Alan Kay的发明,因为这些编程语言都或多或少从SmallTalk语言中汲取养分,或者,在大学课程里,你一定学习过Alan Kay提出的面向对象编程的基本理论。

51CTO开发频道年终巨献:架构师最怕程序员知道的十件事

如果你不是程序员,那么你用过(见过)笔记本电脑,恭喜你,笔记本电脑这个概念最初也是由Alan Kay提出的;如果你觉得笔记本太奢侈,OK,你应该在使用Windows或者Mac,无论是哪种操作系统,图形用户界面的概念是Alan Kay告诉乔布斯的。如果你还不承认,那么平板显示器、无线网络、以太网工作站、客户机服务器模式和激光打印机的实现原理中,我们都能找到Alan Kay的影子。

[[7678]] 
面向对象之父Alan Kay

更多时候,Alan Kay是以面向对象程序设计和Smalltalk创世人的身份被我们记住,以软件大师和计算机界泰斗的高度被我们仰视。

1940年,Alan出生在美国马塞诸塞州。1岁时,Alan随父亲居家迁往澳大利亚。3岁就可以阅读Alan在存有6000本书和大量的绘画的大房间里度过童年。二战开始后,Alan全家又迁回美国。大量的阅读和独立的观点使Alan对自己的童年感到骄傲:“到我上学时,我已经读过几百本书。那时我已经有了许多自己的观点,我知道一年级所教的许多东西都很幼稚和虚假,老师在撒谎。但学校只能有一种观点――那就是老师的观点或者课本的观点。他们不喜欢与他们相左的观点,因此那就象是一场战争。当然我已经可以用五岁的声音维护自己的观点”。对少儿教育的责任心伴随Alan一生,他后期的许多大师级的创意最初的理念都是出于对儿童的关爱。

OOP萌芽

1960年,Alan进入Bethany大学,仅一年之后他就因抗议学校犹太人限额问题,而被Bethany大学驱逐。沮丧的Alan加入志愿兵服务对,在此,他发现了自己的又一项天赋;在军队的一次计算机的能力倾向测验中,Alan表现出众,随后即被美国空军派遣到IBM K101工作,在那里,Alan不但验证了计算机能力倾向测试的准确度,还学习到大量计算机知识。

退伍后的Alan被科罗拉多大学录取,学习数学和分子生物学。毕业后,他又一次面对择业问题,他说:“我考虑过从医,但我觉得自己责任心不够。直到现在我仍这样认为。”他还考虑过哲学,但也放弃了。最后他还是进入了犹他大学学习电气工程。

海拔4000英尺以上的犹他大学,设有一个博士点。在那里,他开始使用由1988年图灵奖获得者Ivan Sutherland开发的Sketchpad程序,并用Simua仿真语言编写程序。当时的计算机是个稀罕玩意,能深入接触计算机控制编程的人更是少之又少。新生Alan在那里使用UNIVAC108机,任务是办公桌上的一堆磁带和一张纸条:“这是UNIVAC108机的Algol语言,如果它不能运行,把它弄好。”

那个时代的程序员更像是“风语者”,使用一堆别人看不懂的字符工作,因为更高级的语言还没有被开发或推广;但还是那个大师频出的时代,Alan开始深入思考计算机和编程。受这些程序思想的启发,再加上自己生物学的背景,他提出了“生物学类比”理论。Alan Kay假定理想的计算机将象生物体一样工作,为完成某个任务,每个“细胞”都要与其它“细胞”协同完成,而每个“细胞”又有自己的功能。为了解决另外的难题或试验另外的功能,“细胞”们可以实现重组。这一理论成为面向对象程序设计的萌芽。也是在那时,Alan开始为Flex机设计界面,但由于过于复杂而没有成功,之后他开始研究图标编程。

超级纸张

1968年秋,Alan在MIT人工智能实验室第一次见到Logo语言的创始人Seymour Papert;他观看了Papert和他的同事教孩子们如何用Logo时,Alan有关计算机社会作用的整套观念受到极大冲击。“我看到了第一个真正的手写体识别系统。这是一套今人难以置信的系统。它对我产生了巨大影响,因为我有种心有灵犀的感觉。当我将这些观念综合起来,计算机的概念就象是一种超级媒体,一种超级纸张。”

那时的计算机是一个庞然大物,有独立的房间存放,由专门的机构拥有和维护;将其想象成孩子的教学玩具、媒体或一张纸不仅需要极大的想象力,还有勇气。

这里需要提及Alan Kay的一句在IT界广为流传的名言“The best way to predict the future is to invent it”,预测未来的最好办法,就是把它创造出来。

Smalltalk和OOP

Alan Kay的毕业论文是关于图形面向对象方面的研究,他由此凯获得犹他大学的博士学位。接着在斯坦福人工智能实验室担任教学工作。这两年工作期间,他开始构想一本象书本大小的计算机,用户(尤其是儿童)可以用它来代替纸张。他将这个项目称之为 “Kiddie Komp”。这期间,他也开始着手Smalltalk语言的研发。Smalltalk基于Alan的博士论文为理论支持,应用自己之前的单独个体(即“细胞”)生物学模型来设计的,个体之间可通过“信息”相互交流;另外,Smalltalk使用“鼠标驱动”的“多窗口环境”,这是图形界面操作系统的雏形。

Smalltalk是第一门纯面向对象的程序设计语言,OPP的思想使Smalltalk的语言结构方面有许多与其他语言不同的特点,例如在Smalltalk语言中没有条件语句,取而代之的是一些发送给对象true或者false的消息,因此它们不属于语言部分,而属于Smalltalk的类库;也没有循环重复语句(C语言中的for while),Smalltalk用向数字对象或块对象发送消息来实现重复执行。

1971年,Alan来到施乐的PARC小组,虽然当时的位图显示器十分昂贵,但是Alan依然说服了PARC让他使用这些位图显示器,这使得Kay和他的小组能够实现不同大小和字体的文字,使用多窗口环境,以及一些对图像处理的高端支持;这实现了Alan设计Smalltalk的初衷,为儿童教学的而开发的语言。

[[7679]]

1975年,Alan的小组认识到应当对Smalltalk的执行效率和规模进行优化。于是他们在许多重要方面重新设计了Smalltalk系统,在语言上:引入了继承和子类的概念并确定了语言的语法,这使得编译器能够产生高效、可执行、精炼的二进制代码。这些概念的引入使Smalltalk成为面向对象语言鼻祖。

#T#Smalltalk在编程语言发展史上的地位毋庸置疑。它不仅引入了面向对象程序设计的基本理念和实现方法,还为现在编程语言的进化提供了必要的基因,C、C++以及后来的Java、Python、PHP等都借鉴了Smalltalk的部分底层实现方法和语法要素;即使是30年之后,我们依然可以从编程语言排行榜中看到Smalltalk的活力。

发明家Alan

也许你还对开始的那个问题和答案念念不忘,让我们来简单的回忆一下Alan Kay的其他贡献。

在施乐PARC研究小组期间,Alan制作了一个名为Pynabook的概念产品——微型电脑,业界认为这是笔记本电脑的模型。当时个人计算机技术尚处于襁褓期,但Alan的设计中却已包含了许多未来的技术,比如平板显示器和无线通讯系统。1993年, Dynabook理念终于成为现实,化为了苹果公司的Newton。

1979年,在Alan的邀请下,乔布斯、Teff Raskin以及其它苹果公司的元老们来到PARC参观。他们被Alan Kay的视窗图形用户界面理念所吸引,认为这就是未来的电脑;对Smalltalk语言的灵活性也大为惊奇。Alan在PARC的工作就是苹果Macintosh的种子,甚至今天的Windows操作系统也是Alan的理念延伸。

Macintosh拥有图像化的GUI 

Macintosh应用了Alan的视窗图形用户界面理念

1984年,Alan加盟苹果,这使Alan有足够的时间和金钱开始研究他那长期以来的梦想。同一年,一台以图形界面为中心并为市场广泛接受的计算机——Macintosh诞生。接下来的时间,Alan在世界各地四处奔波讲学的同时在麻省理工大学担任教学工作,也间或为苹果工作。但大多数时间Alan Kay则在加州西好莱坞的自办的学校中教学,教孩子们使用计算机。

[[7681]] 
Alan Kay在 图灵奖颁奖典礼上

2003年4月19日,计算机学会(ACM)宣布,2003年度有“计算机界诺贝尔奖”之称的ACM 图灵奖授予第一个完全面向对象的动态计算机程序设计语言Smalltalk的发明者Alan Kay。

责任编辑:佚名 来源: 51CTO.com
相关推荐

2017-12-19 08:48:06

企业储存预测

2021-05-26 09:13:35

Linux之父未来科技

2009-12-04 09:41:22

Linux桌面Linux

2018-08-06 14:29:07

甲骨文性能安全性

2021-07-16 11:35:08

存储技术趋势

2009-02-20 09:02:42

谷歌互联网温顿·瑟夫

2013-01-29 09:43:33

JavaJVMJava社区

2015-06-15 15:54:37

无线通讯NFC

2023-12-04 16:22:38

2011-03-31 11:10:20

2012-12-12 16:18:32

互联网思科IPv6

2014-10-18 00:40:57

2014-10-20 09:42:02

2013-10-12 16:42:28

SAP

2021-12-13 10:31:54

网络安全网络攻击网络威胁

2023-09-13 15:43:59

边缘计算

2009-12-22 01:54:50

C++之父Bjarne Stro

2010-10-11 10:21:49

Flipboard移动开发

2022-08-24 16:29:10

物联网

2013-05-21 10:26:47

存储网络以太网虚拟化
点赞
收藏

51CTO技术栈公众号