面向对象技术最早是在编程语言Simula中提出的,其作者是挪威科学家奥利·约翰·达尔(Ole-Johan Dahl)和克利斯登×奈加特(Kristen Nygaard)。Simula语言是Simula I和Simula 67(1967年发布的)两个语言的统称。Simula 67语言是被公认的最早的面向对象语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承,但它的实现不是很完整。Simula虽然最早提出对象的概念,但因为其自身复杂,比较难学,而没有大规模流行。但Simula提出的面向对象的概念对程序语言后继的发展产生了巨大和深远的影响。为了表彰Ole-Johan Dahl和Kristen Nygaard(图1)在面向对象编程语言方面的基础性构想,2001年,他们被授予ACM图灵奖。
图1. Simula语言发明者Ole-Johan Dahl和Kristen Nygaard
Smalltalk是公认为历史上第二个面向对象的程序语言,而且是第一个完整实现了面向对象技术的语言。最早的Smalltalk原型是由艾伦.凯(Alan Kay)于上世纪70年代提出的,类(来自Simula 67)、海龟绘图(来自MIT的LOGO)以及图形界面等概念的有机组合,构成了Smalltalk的最初的蓝图。Alan Kay 出生于美国马塞诸塞,1969年,获得美国犹他州立大学计算机博士学位。在1971年到1975年之间,Alan Kay在Xerox PARC的小组设计并实现了第一个真正的Smalltalk语言系统,因此,他被称为“面向对象之父”。Smalltalk引领了面向对象的设计思想的思潮,对其它众多的程序设计语言的产生起到了极大的推动作用。C++、C#、Object-C、Actor、Java和Ruby等,无一不受到Smalltalk的影响,这些程序语言中随处可见Smalltalk的影子。为了表彰Alan Kay在面向对象语言方面的杰出贡献,2003年4月19日,计算机学会(ACM)宣布,2003年度ACM 图灵奖授予第一个完全面向对象的动态计算机程序设计语言Smalltalk的发明者Alan Kay(图2)。
图2. 面向对象之父Alan Kay
面向对象程序设计在20世纪80年代成为一种主导思想,这在很大程度上得益于C++的流行。与Simula、Smalltalk不同的是,C++到目前为止还是非常流行的编程语言,并没有湮没在历史的洪流中。1982年,贝尔实验室(美国AT&T公司)的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在C语言的基础上引入并扩充了面向对象的概念,发明了C++语言。之所以被命名为C++,是为了表达该语言与C语言的渊源关系。Bjarne Stroustrup博士被称为C++之父(图3)。
图3. C++之父Bjarne Stroustrup
目前使用最为流行的面向对象程序设计语言是Java。1990年,詹姆斯·高斯林(James Gosling)在Sun公司主导“Green项目”,领导开发了Oak,后来被更名为Java,因此,他也被称为“Java之父”(图4)。James Gosling于1955年5月19日出生于加拿大,1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位。2009年Sun公司被Oracle公司收购后,James Gosling从Oracle公司离职。2011年初,James Gosling加入Google公司。2011年8月30日,James Gosling在其博客上宣布离开Google公司,加入开展海洋探测业务的机器人制造公司Liquid Robotics,任首席软件架构师,负责传感器软件开发和自主导航设计,数据中心海量数据处理。2017年5月,James Gosling加盟Amazon公司,从事云计算方面的研究工作。
图4. Java之父James Gosling