Alan Kay,OOP 的创建者,关于开发、Lisp 和 OOP

Alan Kay,OOP 的创建者,关于开发、Lisp 和 OOP

如果您从未听说过艾伦·凯,您至少听说过他的名言。 例如,1971 年的这句话:

预测未来的最好方法是发明它。
预测未来的最好方法就是创造未来。

艾伦在计算机科学领域的职业生涯非常丰富多彩。 他收到了 京都奖 и 图灵奖 表彰他在面向对象编程范式方面的工作。 他是个人计算机和图形界面领域的先驱之一,他开发了 短暂聊天 是有史以来最早最有影响力的编程语言之一。

在我们的 六角形, 特别是在 聊天室,“什么是 OOP”和“Alan Kay 的真正含义是什么”的问题不断被提出。 这篇文章包含 Alan 关于现代开发状况、OOP 和 Lisp 语言的有趣引述。

关于软件开发

艾伦·凯认为计算机革命尚未到来(真正的计算机革命尚未发生),而软件开发的发展与摩尔定律成反比:硬件逐年进步,但软件却变得不必要的臃肿:

问题在于薄弱、可扩展性差的想法和工具、懒惰、缺乏知识等。

很好地描述了这种情况 短笑话:

安迪给予的,比尔拿走的
安迪给予,比尔索取

英特尔首席执行官安迪·格罗夫和微软时任首席执行官比尔·盖茨。

改善当前的发展状况是该研究项目的目标 重塑编程的步骤 (pdf)。 目标是通过“将所需代码量减少 100、1000、10000 倍或更多”来实现表现力的“摩尔定律”。

在他令人大开眼界的报告中 编程和扩展(视频) 本主题将进行更详细的讨论。 艾伦表示,软件工程已经停滞不前,正在成为一门被遗忘的科学,无法跟上硬件和其他科学和工程学科的步伐。 大型项目已经成为代码转储,并且已经达到了这样的地步: 没有 无法理解 100 亿行 MS Vista 或 MS Word 代码。 但实际上,此类项目中的代码应该少一个数量级。

Alan 考虑了互联网、TCP/IP 协议、LISP 解释器、 Nile(用于矢量图形的数学 DSL)和 OMeta (OO PEG) (PDF) 具有最少代码的优雅软件示例。

他称互联网(TCP/IP)是为数不多的正确设计的大型软件项目之一,其复杂程度与复杂程度保持平衡(复杂性与复杂性)。 该项目代码不到 20 行,是一个活跃的动态系统,能够支持数十亿个节点,并且自 1969 年 XNUMX 月首次启动以来从未离线过。 我们只是不再将互联网视为人们创建的普通软件项目:

互联网如此发达,以至于许多人将其视为一种自然资源,就像太平洋一样,而不是人类劳动的产物。 我们最后一次看到如此稳定、清晰、无错误的技术是什么时候? 相比之下,网络就是无稽之谈。 网络是由业余爱好者创建的。

关于面向对象编程

首先让我感兴趣的是他 初始 面向对象的愿景。 他在微生物学方面的经验发挥了重要作用:

我认为物体就像生物细胞和/或网络上的单个计算机,只能通过消息进行通信。

和数学经验:

我的数学经验使我意识到每个对象可以有多个代数,它们可以组合成族,这非常有用。

LISPa 后期绑定和强大元功能的想法:

第二阶段是理解 LISPa 并利用这种理解来创建更简单、更小、更强大的结构以及随后的绑定。

很快艾伦开始支持动态语言的观点 软件开发的未来 (pdf)。 特别是,易于更改对他来说很重要:

后期绑定允许将开发过程中后期出现的想法以更少的努力合并到项目中(与早期绑定系统(如 C、C++、Java 等相比))

以及动态更改和更快迭代的潜力:

关键想法之一是系统应该在测试期间继续运行,尤其是在进行更改时。 即使是重大的改变也应该是渐进的,并且不要超过一瞬间。

这是缺少的 静态类型语言:

如果您像大多数人一样使用早期绑定语言,那么您就会将自己锁定在已经编写的内容中。 将不再可能轻易地重新制定它。

令人惊讶的是,他对 OOP 的想法仅限于此:

对我来说,OOP 是消息、本地保留和保护、状态隐藏以及所有内容的后期绑定。 这可以在 Smalltalk 和 LISP 中完成。

也没有任何关于继承的事情。 这不是面向对象编程 我们今天知道:

我希望我很久以前就在这个主题中使用了“对象”这个术语,因为它导致许多人关注较小的想法。

现代静态类型 OO 语言所缺乏的大思想:

最重要的想法是“消息”

他相信应该关注消息、松散耦合和模块交互,而不是对象的内部:

创建良好的可扩展系统的关键是确定模块之间的通信机制,而不是确定其内部属性和行为。

静态类型语言对他来说似乎 有缺陷的:

我并不反对类型,但我不知道有哪个类型系统不会引起痛苦。 所以我还是喜欢动态打字。

如今一些流行的语言使用了 Smalltalk 的消息传递思想、后期绑定和 不明白前向调用 в Objective-C的方法缺失 в 红宝石 и 没有这种方法 在谷歌 .

摧毁一切并创造更好的东西

艾伦对计算机科学的发展有一个有趣的理论:

在我看来,计算机科学只有一种类型,而科学就像建造桥梁。 有人搭建桥梁,有人摧毁桥梁并创造新的理论。 我们需要继续搭建桥梁。

关于 LISP

艾伦·凯相信 Lisp

有史以来最好的编程语言

每个计算机科学专业的毕业生都应该学习它:

大多数攻读计算机科学学位的人并不了解 Lisp 的重要性。 Lisp 是计算机科学中最重要的思想。

关于正确的氛围和背景

他常常回忆起那里独特的氛围。 施乐PARC и ARPA,其中“愿景比目标更重要”和“资助人员,而不是项目”。

观点值 80 IQ 分。

艾伦·凯 说:

ARPA/PARC 的故事展示了愿景、适度的资金、正确的环境和流程的结合如何神奇地催生新技术,这些技术不仅影响文明,而且为社会创造巨大价值。

这是事实。 看看 PARC 令人印象深刻的发明清单,其中许多对我们世界的发展发挥了非常重要的作用。 例如:

  • 激光打印机
  • 面向对象编程/Smalltalk
  • 个人电脑
  • 以太网/分布式计算
  • GUI / 电脑鼠标 / 所见即所得

而在 ARPA 已创建 ARPANET,成为互联网的鼻祖。

PS 艾伦·凯回答黑客新闻社区的问题.

来源: habr.com

添加评论