面向对象的分裂
伊利亚·苏兹达尼茨基(Ilya Suzdalnitski)最近发表了“面向对象的程序设计 – 万亿美元的灾难”。这种冗长的结论很大程度上指出了OOP的缺点。虽然我不一定同意他所说的一切,但我同意一件事:
OOP,如C ++,Java和C#等语言所教授和实践,一直是一场灾难。
这些语言将OOP视为应用抽象数据类型的一种方式,而不是Alan Kay所支持的基于消息的概念。
还有另一种方式来看待OOP:从Smalltalk的角度来看,这是在20世纪80年代和90年代推广OOP的第一种语言。 (Simula是第一种介绍OOP概念的语言。)
要了解Smalltalk哲学的精髓,请观看Alan Kay向Ted Nelson致敬的视频片段(从2:17开始):
https://medium.com/media/cbda8c7512200e900518c7f2a3d2d839/href
更多见解来自Alan Kay的“The Small History of Smalltalk”(©1993 ACM):
Smalltalk是计算机本身概念的递归。而不是将“计算机内容”划分为每个都不如整体的东西 – 如数据结构,过程和函数,这些是编程语言的常用设备 – 每个Smalltalk对象都是对计算机整个可能性的递归。因此,它的语义有点像成千上万的计算机都被一个非常快速的网络连接在一起。
和
Smalltalk的贡献是一种新的设计范式 – 我称之为面向对象 – 用于攻击专业程序员的大问题,并为新手用户提供小问题。面向对象的设计是一种成功的尝试,可以定性地提高对硅爆炸所带来的更复杂的动态系统和用户关系进行建模的效率。
最重要的是:您所听到的关于面向对象编程和继承以及可伸缩性问题的所有抱怨都来自于使用C ++,Java,C#等。抽象数据类型理念对大规模软件开发是不利的。
Alan Kay著名说:
实际上,我编写了“面向对象”这个术语,我可以告诉你我没有考虑到C ++。
https://medium.com/media/f17fe1a63c537c21a8c157350f80d9b0/href
(从10:00开始。)
艾伦凯说:“互联网做得很好,以至于大多数人都认为它是像太平洋这样的自然资源,而不是人为的东西。什么是最后一次像这样的规模的技术是如此没有错误?
艾伦凯将他面向对象的文献比作互联网是如何建立的,或者是如何构建由数十亿个细胞构成的生物有机体。 Smalltalk非常适合真正可扩展的解决方案。
就像Suzdalnitski先生钦佩Erlang一样,在Alantalk的意义上,它不是一种面向对象的语言,就像Alan Kay所预期的那样。我认为Smalltalk是历史上唯一真正的,纯粹的面向对象编程语言。它甚至没有用于条件和迭代执行的内置语法,这两者都是程序元素
面向对象的分裂最初发布在HackerNoon.com on Medium上,人们通过突出和回应这个故事来继续对话。