为什么面向对象的范例要花这么长时间才能成为主流?


12

我读了这个问题,这让我开始思考另一件事。面向对象的语言。我不确定第一个是何时创建的,但是为什么要花这么长时间才成为主流?

  • C变得非常流行,但是多年之后(数十年?)才没有成为面向对象的C ++。
  • 90年代以前没有主流语言是面向对象的
  • 面向对象确实似乎在Java和C ++的同时流行

现在,我的问题是,为什么要花这么长时间?为什么C最初不被认为是一种面向对象的语言?只使用一小部分C ++不会对核心语言产生很大的影响,所以为什么这个想法直到90年代才流行起来?


1
哈!我确定有人最终会问这个问题;)但是,您需要做一些更多的研究,Smalltalk可能还没有广受欢迎,但我认为它已成为主流,至少从70年代初的术语定义来看(并让我们别忘了Simula)。另外,您是否在专门谈论基于类的面向对象?
yannis 2012年

6
有趣的问题。我最近发现Simula 67具有虚拟方法(已经在60年代了!)。看起来,CS中许多最重要的概念是在其历史的前两,三十年(1950-1970年)发现的。我们今天看到的许多新事物实际上是非常古老的概念的混合。
Giorgio 2012年

3
@Giorgio:我认为这一发现是一种通过仪式,标志着您从对最新和最伟大的事物着迷,成长为成为经验丰富的开发人员,可以看到时尚并区分出真正有用的东西。
Michael Borgwardt 2012年

@Michael Borgwardt:我完全同意您的观点(对最新技术,我并不容易着迷:-))。我认为经验丰富的开发人员应该通过技术可以有效解决其问题的方式来判断技术。新手可能会对新事物印象深刻,并仅仅因为它是新的(炒作)而对它有更好的考虑。关于OOP:我知道这些概念是经过多年开发的,但是当我看一下Simula并发现它们已经发明了许多我们今天常用的概念时,我真的感到很惊讶。
乔治

Answers:


25

首先,让我们尝试建立一个时间表:

  • 1963年-伊万·萨瑟兰(Ivan Sutherland)的Sketchpad被认为是面向对象和GUI领域的开创性作品。
  • 1967年,Simula出现了,是否应该将它或Smalltak视为第一种面向对象的语言仍是一个争论的问题。
  • 1969年-丹尼斯里奇开始开发Ç
  • 1972年- 受到Simula极大影响的语言Smalltalk出现了。这是Alan Kay的创意,他通常被认为是“面向对象”一词的发明者(Alan Kay也启发了Tron中的同名人物)。
  • 1979年-Bjarne Stroustrup开始使用C的前身Classes进行C语言工作
  • 1983年- 目标C出现了,本质上是为了将Smalltalk的面向对象风格添加到C中。
  • 1985年-Object Pascal出现,几乎立即由Turbo Pascal 5.5 普及。
  • 1986年-开始进行CLOS的工作,这是将对象定向引入Common Lisp的工作。
  • 1991年-Visual Basic发布。
  • 1995年-Java发布。
  • 1995年-Delphi发布。

Ritchie的主要影响力是BCPLALGOL(两者都是命令式语言),而C是在Simula和Smalltalk的面向对象方法尚未广为人知的时候创建的。它于1972年左右完成,并且仅在7年后出现了C with Classes,Dennis Ritchie和Brian Kernighan都参与了它的创立

当时,我认为C是目前最好的系统编程语言。那时(1979年)并没有那么明显,但后来我得到了诸如丹尼斯·里奇(Dennis Ritchie),史蒂夫·约翰逊(Steve Johnson),桑迪·弗雷泽(Sandy Fraser),格雷格·切森(Greg Chesson),道格·麦克罗伊(Doug McIlroy)和布莱恩·科尼根(Brian Kernighan)等专家的帮助,我可以从中学习并获得反馈。没有他们的帮助和建议,也没有C,C ++将会胎死腹中。

与一再的谣言相反,我从未被告知必须使用C。从来没有告诉过我不要使用C。实际上,第一本C ++手册源于Dennis给我的C手册的troff来源。贝尔实验室设计了许多新语言。至少在“研究”中,没有强制执行语言偏执的规则。

目标C出现在11年后,它与C ++都是将对象定向带入C的主要且成功的尝试。现在的差距可能似乎很长,但我认为当时的差距并不特别长,请记住我们正在谈论关于万维网之前的时代。1993年,第一个浏览器Mosaic出现了,这是该行业的转折点。几年后发布的Java和Delphi,在其流行度方面,比其前身具有巨大优势。Web也是Sun 兑现WORA承诺的目标平台之一,也许在当时更重要,而Java作为当时刚诞生的平台语言被大量销售。

另一个关键因素是,1980年代末和1990年代初是GUI开始流行的时代,尤其是在家庭计算领域,而与此同时,硬件越来越便宜。通常,在开发GUI和面向图形的应用程序时,面向对象是一种极为方便的范例,而Turbo Pascal,Delphi,Visual Basic和Java(可能在较小程度上的扩展)因其为GUI开发带来的简便性而受到称赞(当时)。

Sun积极的Java营销显然也发挥了作用,但是由于我仍然清楚地记得我第一次与Java进行交互,所以我肯定没有留下深刻的印象。我对Java的第一个反应是“嗯,无非是一个资源匮乏的解释性C ++,我会坚持使用Turbo Pascal,非常感谢”(嘿,当时我才17岁;)。我不知道当时其他人对Java的反应如何,但是对我而言,这只是一时的流行,所以我很快转到了Delphi(叹息着Visual Basic),几年后才在大学里开始使用Java。 ,并且因为这是一门必修课。

的确,Java及其面向对象的风格迅速流行开来,但我真的不认为该范式在1990年代中期之前还不是很流行,但是Web的引入改变了我们对流行性的定义。无论如何,在1990年代中期,软件开发总体上受到欢迎,而网络,GUI的普及以及更便宜的硬件是关键因素。Java只是在正确的时间正确的位置。

进一步阅读:

相关问题:


最近的发现:ALGOL的历史68-尽管它与面向对象没有太大关系,但对于编程历史爱好者而言,这是一本引人入胜的文章。
yannis 2012年


2
我知道@gerrit,而且在90年代初和中期我还故意跳过了其他几种语言(例如Perl,PHP,Ruby,JavaScript),或者是因为它们最初并不流行,或者是因为它们从一开始就不真正支持面向对象。在最初的几年里,Python并不是一种真正的有影响力的语言……
yannis,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.