有哪些经济(和其他历史)因素导致面向对象的编程语言产生影响?我知道Simula是从头开始的,但是由于业务需求的不断增长,采用OOP语言是吗?还是采用该工具是因为OOP语言可以完成新的工作?
编辑 我真的最感兴趣的是,在语言本身之外是否存在一些因素,这些因素使它们得以保持。
有哪些经济(和其他历史)因素导致面向对象的编程语言产生影响?我知道Simula是从头开始的,但是由于业务需求的不断增长,采用OOP语言是吗?还是采用该工具是因为OOP语言可以完成新的工作?
编辑 我真的最感兴趣的是,在语言本身之外是否存在一些因素,这些因素使它们得以保持。
Answers:
简短答案
我认为这是在OO天之前流失的软件项目。OO通过添加至关重要的概念- 对现实世界建模 -的帮助。
第一种面向对象的编程语言是Simula早在1967年。但是,那时,实验室中仍在进行广泛的软件开发,并且大多数范例仍更接近于硬件案例。
在过去的整整十年时间里,用于企业应用程序的软件开发不断增长,其他商业应用程序也在不断增长,整个1970年代,软件开发得到了迅速发展。在那些时代(1980年之前)的今天仍然可以生存的语言是C,Cobol,Fortran和其他类似语言。这些语言大多数都是程序性的。从那一天开始,Lisp也就存在了-但是,我不确定这是否是商业开发的突出通用语言。著名的瀑布模型一词也是在1970年代初期创造的。
在大多数商业环境中,软件开发中最重要的要素是项目管理。迫切需要紧缩的预算(至少是可预测的预算)以及管理冻结的要求,以确保项目能够按时完成。在此期间,这也是1975年的《神秘男人》之一。
我猜到了70年代末,人们已经精疲力尽了,因为程序语言无法兑现这些承诺。自那时以来一直存在的新的面向对象范式使其变得庞大。尽管人们可能会不同意,但我认为C ++有助于熟悉和证明C的经验,而1983年的面向对象的承诺(最初带有类的名称C)是面向对象编程成功的基石。
一些参考资料可提供更多视角-http://journal.thedacs.com/issue/43/88
那为什么要OO呢?
我认为那些日子(如果您从项目成功的角度看)-可以更好地理解的东西将更易于管理,这是有道理的。承诺“ ..生活中的一切都是一个对象”的面向对象方法论,甚至在被证明是有意义的之前,就更像是常识。这个因素的实际成功是在跳枪之前就足以对现实世界和问题进行充分建模的想法-我认为OO提供了一些根本上新的东西,到那时为止还没有其他范式提供。绝对可以肯定的是,这种范例迫使您在编写比程序语言更多的代码之前要三思而行,它在所使用的软件项目上显示出明显的成功,从那时起,它们就流行起来了!
编辑
我还要补充一点,编程语言是与此类基本概念(OO范例,Aspect,虚拟机等)并行发展的,同时每个新概念和新思想只有在掌握了新的编程语言后才出现-仅保持熟悉度,而从核心!同时-这些新概念和新语言只是由于新的业务问题而出现。1980年代-面向大型软件的OO,1990年出现于Internet时代的Java,PHP / ASP以及许多其他的Web应用。编程语言的创新也主要是由不连续的市场需求驱动的。
总而言之,80年代初是大型商业软件兴起的时代-尽管使用过程语言的项目遇到了问题,但是OO显示了更好的亮点,并使项目更加成功。
Customer
类没有类似的方法eatLunch
,goToWork
或者sleep
,虽然这是客户在做现实世界。本Product
类有几种方法,但大多数产品具有完全相同的所有无行为真实的世界。因此,我认为OO模型仅在属性方面(或多或少)与现实世界相对应,而在行为方面则完全不相关。但是您不需要OO具有与实际对象相对应的数据模型。记录类型就是全部。
刚开始时就需要进行命令式编程(如果您可以这样称呼)。简单的指令告诉大型机应该如何计算。这些编程语言使用了无条件跳转和其他“非结构化”指令,其中大多数都符合当今的标准。
然后有人提出了用于编程的结构。我们今天知道的for,while,dos和foreach。这是一项巨大的创新,因为现在可以轻松编写和理解流程相对复杂的应用程序。因此,结构化编程诞生了。
然后是其他一些人,他们说您需要在这里和那里重复很多代码,维护它是一场噩梦,因此应该发明一种重用代码的方法。人们想出了一些程序和函数来界定可重用的代码位。这也催生了封装和单一责任原则。
然后,一些学者说功能应该与正在处理的数据紧密结合。然后,他们增加了代码重用和多态性的继承概念,以匹配现实生活中逻辑分类的工作方式。因此,第三代编程语言和OOP诞生了。