我一直倾向于将C的普及归咎于对通用汇编语言的需求。它在机器级别的特殊性,标准化和极高的可移植性的结合使C可以充当事实上的通用汇编语言,因此我怀疑C的作用将无限期地继续下去。
我应该提到,当OOP作为一种“最终模型”出现在编程课程中时,我总是感到有些惊讶,这是良好编程的唯一可能终点。像编程的许多其他方面一样,OOP的价值是许多竞争因素之间的折衷,包括人脑如何组织信息,社会团体如何长期支持软件,以及在面向对象编程的情况下,某些深层方面宇宙本身是如何工作的。
最后一点值得一提。如果您对物理级的探索感兴趣,请继续阅读,以了解某些编程风格为何存在,它们如何协同工作以及随着我们对此类概念的进一步扩展,世界未来的发展方向...
物理学中的物体是随时间保持可识别的连贯性的任何事物。这样一来,像我们这样的简单生物就可以只用少量的碎片就可以代表物体,而又不会严重危害我们的生存。但是,从广义上讲,要使这种简化变得容易和普遍,您必须要做的事情很多。作为人类,我们不会考虑太多,因为坦率地说,如果事实并非如此,我们就不会在这里。
听起来太抽象了?真的不是。例如,试想一下,如果您遇到的不是快速行驶的等离子场,而是瞬间移动的物质以大范围的速度运动,那么试图在通往朋友家的道路上行驶。这样的情况可能会相当深入地挖掘社交机会,是吗?我们需要对象,我们是对象,对象的存在为我们提供了极大且至关重要的简化周围环境的水平。
因此,让我们将所有这些都带回软件中。在编程方面,现实世界中的对象必须对对象说些什么?
嗯,一方面,这意味着在软件中定义“好”对象的真正应该是您正在处理的数据类型是否随时间支持可识别的持久性的想法。
根据定义,最简单的OOP形式很容易识别。它们只是通过使用已经由某些“真实的,真实的物理对象(例如人,房子或汽车)”“附加”或定义的数据来解决问题的对象。即使在今天,这仍然经常是人们在软件课程中获得的对象的唯一定义。这太糟糕了,因为即使是琐碎的面向对象程序也需要比这更广泛的定义。
第二个也是更有趣的对象类别包括永生化的现实世界事件。所谓“永生”,是指至少短暂地存在于现实世界中的一个定义明确的实体或集合中,然后又分散并不再作为具有物理意义的集合而存在的事物。座谈会就是一个很好的例子:座谈会作为一个定义明确的场所和人物集合存在了很短时间。但是,a,即使是最好的会议也必须结束,并且组成这些会议的各个部分都转到了其他活动上。
但是,通过使用计算机和网络,我们可以通过捕获和维护作为软件对象的内存来使这样的短暂研讨会看起来像一个长期对象。我们使用计算机和数据库进行的许多操作都可以使这种瞬态事件永生化,在这种情况下,我们实际上试图通过捕获和扩展物理上不可能存在的方式来丰富我们的真实宇宙。例如,您最近看过真正的Pandora吗?对现实世界作品的这种捕获和扩展有助于以非凡的方式丰富和扩展我们自己的生活,经济和选择。对我来说,这是面向对象编程的中心地带,它曾经并且一直在产生着最显着的影响。
OOP的最后一个类别由与外部事件没有密切联系的对象组成,而是基础结构需要使用来自现实世界的永生物体来支持我们对现实的不断扩展。在这里,您可以一路下降到计算机的(半)金属,创建持久的现实碎片,就像现实世界中的化学元素一样,可以快速有趣地组合起来以构建新的内部世界。移动计算帮助促进了这种高度重组的方法的发展,这种方法在许多方面再次模仿了物理世界的重组特征。这也很困难:随着时间的流逝,看起来似乎不错的选择可能证明是一个出乎意料的坏选择,通常是因为它最终阻碍了多样性和扩展而不是支持它。
这最后一类也指出使用编程只是一个模型的风险,因为就像现实世界中,编程世界也需要一个过程不与相对不变的对象很好地对应。地球充满了物体,但是太阳充满了高度动态的能量流,最终需要这些能量流来“驱动”低能量地球上的物体和活动。同样,在创建计算世界时,有些情况下您必须处理流程和转换以及快速变化的上下文,尽管它们本身并不是很像对象,但是对于启用更高级别使用的更简单,更人性化的对象绝对至关重要。并非偶然的是,在内核级别完成的许多编程都不明显是对象式的,或者它往往严重依赖于像C这样的面向处理的语言。这些是更深层次的领域,可以补充我们在计算机生成的世界中看到的引人入胜的多样性。
OOP可能会出错的另一个领域是过于关注旧对象概念。
现实世界中的物体,尤其是生命物体,具有以惊人和复杂的方式与环境互动的绝对惊人的能力。相互看待,进行兼容性和完整性检查的可组合窗口小部件,甚至可能发现一些新的交互方式比我们倾向于的简单框架和简单继承方案更接近现实世界中对象的生物学概念。在代码级别专注于(通常是必要的!)。这是网络世界中对象增长的领域之一,更像是“类似代理”的方法,即使在编程本身内,对环境的反应也是正常的。
对于我对OOP的“批评”,还有很多!不过,尽管如此,我希望我已经指出了为什么创建一个更加丰富的网络世界意味着包含各种编程风格,而不是假设只需要一个。我的感觉是,无论我们现在做什么工作多么平凡,真正有趣的东西还没有出现!