链接:https://www.zhihu.com/question/34018003/answer/132740170
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
从概念上讲,面向对象的萌芽其实来自于Abstract data type,而 ADT 的概念最初应该是由 David Parnas 在 1972 发表的《On the Criteria to Be Used in Decomposing Systems into Modules》论文中提出来的。
1973年,Simula 67 发表,Simula 67 通常意义上被称为第一个面向对象语言。
1975年,是面向对象语言里程碑的一年,这一年 Barbara Liskov 发明了CLU 语言,面向对象编程的基石之一的里氏替换原则(Liskov substitution principle)就是她提出来的,说里氏是OO之母丝毫不为过(因为自此之后 OO 可以生子)。里氏之后可以说面向对象的很多理论都基本成型。
1983年,Smalltalk 发表,被认为是第二个面向对象语言,Smalltalk 由 Actor model 中受到启示,使用了消息传递式的设计,这可以说是现代面向对象语言中 this/self 的原型;另外像 public/private 这样的概念也在 Smalltalk 中有了基本的雏形。
80年代后期及90年代初期,面向对象范式成为了一时风潮,涌现了许多面向对象语言,其中一些至今仍然坚挺如 C++,当时甚至连 FP 的鼻祖 Lisp 都赶了把 OO 的时髦。
最终,到了1996年,Java 发表,可以说是现代面向对象范式成熟的一个里程碑。