CSDN|为什么要发明面向对象编程?
【CSDN|为什么要发明面向对象编程?】怎样的思维过程导致人们发明了面向对象编程?
本文插图
作者 | Alan Kay 译者 | 弯月 , 责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 1992年 , ACM邀请我为他们举办的第二届“编程语言历史”大会撰写一篇有关我的工作经历的文章 。 如今 , 这段历史有多个版本 , 其中Bret Victor网站上的“Smalltalk的早期历史”(地址:http://worrydream.com/EarlyHistoryOfSmalltalk/)记载了很多细节 , 有兴趣的人可以去看看 。我需要申明两点:(a)在1966年的工作中 , 我确实用到了“面向对象的程序设计”这个词;但是 , (b)我当时使用这个词的本意是 , 对我在多个工作经历中的想法的“轮换”和概括 , 这些工作经历包括:
- 一开始我是一名生物学家
- 从1961年开始担任美国空军程序员 , 当时的工作是编写“语义文件系统”
- 后来投身B5000计算机的硬件
- 很长一段时间都在从事“多程序”和“分时”操作系统的工作
- 最令人惊讶的是从事过Ivan Sutherland的Sketchpad程序
- 在Simula中度过了一段平淡无奇的时光
- 最终从事网络计算机(投身研究社区的ARPAnet)
抛开实际的困难不谈(实际上我是一个非常懒惰的数学家 , 所以我与务实勤奋的程序员八杆子打不着) , 这个想法非常诱人 , 因为与传统的过程式和以数据结构为组件的思想相比 , 面向对象编程的扩展性更好 。而且更干净 , 更适合整个系统设计 。而且 , 这个想法甚至可以从“设计和编程模拟”的角度来思考 。 有一次在一周内我看到了两个系统:Sketchpad和第一版Simula , 这两个系统的目的都是模拟包含许多相互关联的进程的复杂实体 , 因而产生了这个想法 。认为一切都由“经由消息互相通信的语义软件计算机”构成 , 这种思想的另一项非常诱人的特性是 , “数据”的某些丑陋的属性不仅可以修正 , 甚至可以完全消除 。 例如 , 标准的硬件和紧密映射到硬件上的编程语言可以引出简单数组的概念 , 但无法产生“数据结构”的概念 , 因为数据结构更为复杂 , 如系数矩阵、堆栈、队列等 。 如果将其视为“进程” , 然后内部决定“赋值箭头”的含义 , 就会更容易一些 。这样就可以引出比“数据”更漂亮的概念 , 这些概念依然有状态 , 但没有竞争条件 。 例如 , 在对象内部 , 对象可以在需要时确定历史的版本 , 可以做“原子事务” , 可以在所有关系都是一致的情况下仅允许查看 。 还有更多特性 。 这种新的概念远胜于“数据”的概念 , 它可以让对象随着时间流逝而发展 , 并“学习”新的东西 , 但会更安全 。然后还有模拟想法本身 , 这里“数据”和“状态”的概念开始让位于“有能力的对象” , 这些对象可以互相操作 , 就像生物的细胞或者人类社会那样 。所以 , 引出这个想法的思维过程基本上就是“系统思维过程” , 可以很容易地将定义进程组成的系统 , 即任何进程构成的任何系统 。这个概念与绝大多数读者熟知的OOP(如C++、Java等语言中的OOP)并不一样 。主要的区别在于视角上 。 C++和Java语言主要利用对象来定义类似于数据结构的新物体 , 编程语言本身也是基于数据结构的(如“setter”将任何实体变回一个任何人都可以操作的数据结构) 。 理论上 , 这实际上就是“抽象数据结构” , 尽管对象的概念也能实现这一点 , 但这并不是对象的原本目的 。通过我上面的描述 , 一个优秀的系统设计师就能够设计并实现出优秀的系统 , 甚至是非常大型的系统也没问题 。 显然 , 如果不是经验丰富的设计师 , 就无法体现出其中的许多好处 。还有一点很重要 , 这个范式定义的强大和通用性 , 是与编程风格无关的(这正是“系统的模拟”含义的核心) 。一个对象可以完美地模拟一个函数、过程、数据结构等 , 所以一切已有的东西都可以完美支持 , 但对象还可以模拟非常智能的物体 , 来提供更强大的功能 。然而 , 问题在于 , 计算领域内很少有人下功夫理解“进程的广泛使用、可扩展的系统”的含义 , 大多数人在扩展程序规模时 , 依然无法摆脱陈旧、腐朽的方式 。在Parc项目中 , 我们构思了大量的概念 , 而编写的代码行数非常少 , 因为我们尽可能使用这种新的方式来组织并实现复杂的系统 。 (如今 , 这一思想已有了更深入的理解 , 但即使是在当年 , 我们也常常被其强大之处所折服) 。原文:https://www.quora.com/What-thought-process-would-lead-one-to-invent-object-oriented-programming/answer/Alan-Kay-11你点的每个“在看” , 我都认真当成了喜欢
推荐阅读
- 中年|明年起禁用不可降解塑料购物袋、吸管!塑料袋发明者本来是为拯救地球
- 情感|华为今天如此成功,看一下任正非的岳父是谁,你就知道为什么
- 华为手机|泪奔!等等党的心酸,为什么有些手机它偏不降价?
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- 36氪|为什么说远程办公也许会毁了硅谷?
- 硅谷|为什么说远程办公也许会毁了硅谷?
- 科技造就未来|Apple为什么要使用ARM?为什么不从头开始?
- |为什么我店铺流量狂掉?淘宝竞争这么激烈还能不能做?
- 科学,探月|嫦娥五号年内升空 我们为什么要去月亮上“挖土”?
- 科学|嫦娥五号年内升空 我们为什么要去月亮上“挖土”?
