托尼·霍尔生日快乐

工程 | Rod Johnson | 2008 年 1 月 14 日 | ...

上周五是托尼·霍尔 (C.A.R.) 的生日。谁是 C. A. R. Hoare?如果你是一名程序员,你可能对 快速排序 (Quicksort) 很熟悉——这是一种优雅且出奇简单的排序算法,在大多数情况下速度极快。如果你学过计算机科学,你几乎肯定用多种语言实现过快速排序,并且会认出这个页面上的动画。霍尔在 1960 年发明了快速排序,它现在是最广泛使用的排序算法。快速排序演示

除了其他贡献之外,霍尔还发明了通信顺序进程 (CSP) 语言,用于规范并发进程之间的交互。他是一位聪明的人,为计算机科学的发展做出了杰出的贡献。

1980 年,霍尔因“对程序语言的定义和设计做出的根本性贡献”而获得图灵奖。他的获奖感言,题为 《皇帝的新装》,不仅应是计算机科学家,也应是 IT 经理和应用程序开发人员的必读之作。

让我引用几句精辟的话

程序员总是被复杂性包围;我们无法避免它。我们的应用程序之所以复杂,是因为我们雄心勃勃地希望以越来越复杂的方式使用计算机。编程之所以复杂,是因为我们每个编程项目都有大量相互冲突的目标。如果我们使用的基本工具,即我们设计和编写程序的语言也很复杂,那么语言本身就会成为问题的一部分,而不是解决方案的一部分。
这不仅适用于语言,也适用于平台和框架。在实现业务应用程序时,平台和框架对成功和失败的影响越来越大,甚至超过了语言本身——这是我在 去年 11 月在 QCon 旧金山参加的一个关于 Java 语言未来的小组讨论 中提出的观点。基本的真理是,基础设施(无论是语言还是平台)的作用是简化开发人员的工作,让他们能够专注于实现业务价值的真正任务。

关于语言——以及早已过时的技术——的观点,如今仍有共鸣

对于分时或个人计算机系统的用户来说,输入程序(或修改)到开始运行该程序之间的时间间隔是完全低效的。
现代的解读——代码到测试的周期必须尽可能短,这使得敏捷测试对提高生产力至关重要。

在描述一个过度复杂的语言项目时,霍尔评论道:

起初我希望这样一个技术上不健全的项目会垮掉,但我很快意识到它注定会成功。只要有足够的决心,软件中的几乎任何东西都可以实现、销售甚至使用。一个普通的科学家所说的话,无法抵挡数亿美元的洪流。但有一种品质是无法这样获得的——那就是可靠性。可靠性的代价是追求极致的简洁。这是一个富人最难付出的代价。
大约五六年前,在我第一次读到这篇演讲稿时,正值“旧 J2EE”的黑暗时期,我感觉托尼·霍尔仿佛在直接对我说话。托尼·霍尔在 1980 年就预言了 J2EE 的问题。那时,就像大多数更关心取得成果而非提升简历的 J2EE 架构师一样,我正面临霍尔在 PL/1 项目中遇到的同样情况——看着一场灾难缓慢发生,却无力阻止。我在 2004 年出版的 《抛弃 EJB 的 J2EE》 一书中写到了“复杂性产业”,它以巨大的金钱、时间和彻底的失败为代价,制造出过度复杂的解决方案。复杂性产业在应用程序开发团队、内部架构小组以及基础设施领域都蓬勃发展。复杂性产业难以克服,因为太多人对其存在有着既得利益——有时是经济利益;有时是专业利益(当它允许他们建立自己的“帝国”时);更多时候仅仅是为了提升简历。那些为其辩护的人总是争辩说,批评者根本不理解他们批评的内容——这使得像霍尔这样毋庸置疑的杰出人物发声变得更加重要。

那是本世纪初的事情了——也是上世纪概念的遗留。今天,情况不同了——至少在企业 Java 领域是如此。Tomcat 流行度的显著增长 可能是开发人员现在拥有强制推行简洁性的最大证明。Ruby on Rails 对 Java 的(健康的)压力(我认为最终会增强 Java)也指向了同一件事。甚至有证据表明,一些传统的应用服务器供应商理解这种变化以及它如何能惠及他们的客户。BEA 通过 拥抱 Spring 和其他简化客户体验的技术,可以说开创了先河。即使是 Sun——凭借 Java EE 6 Profile 概念——似乎也在与时俱进,承认许多客户不再需要传统的、单体式的应用服务器这一现实。

每次有人选择不使用 EJB;每次有人选择在 Tomcat 而不是 WebSphere 上部署 Web 应用程序;每次有人选择采用简单的远程调用策略而非精心设计的基于 SOAP 的方法时,他们都在做出简洁的选择。正如霍尔所评论的,通过更简单的方法,他们远非是在构建“非企业级”解决方案,而实际上是在可靠性等关键的企业级特性上获得了显著提升。

可靠性的代价是追求极致的简洁。这是一个富人最难付出的代价。

自从最近一次去悉尼拜访了一位现在是学者的老大学朋友后,我一直在思考计算机科学。因此,我重温了霍尔的演讲。但除了霍尔在商业界和学术界经历中显而易见的教训外,在企业 Java 应用程序开发的背景下思考计算机科学是令人沮丧的。我们离做一些巧妙的事情还很远。我们已经被太多的复杂性困扰,以至于我们专注于让事情运转起来。正如霍尔强调的,无论你想做什么,从程序员的角度来看拥有一个简单的模型是取得最大成功的先决条件。(基础设施通常需要巧妙才能实现这种简洁性。)

过去几年主要是关于让企业 Java 模型在实践中发挥作用并击败复杂性产业。这基本上已经完成。如今,企业 Java 项目的结果相当可预测且良好。我相信未来几年将是关于解决明显问题之外的问题,并构建更智能、对其运行的代码有更深入了解的基础设施。我很自豪地相信我们公司能够帮助实现这一现实。随着我们在许多领域持续创新,SpringSource 将站在解决构建下一代技术(如 用于 OSGi 服务平台的 Spring Dynamic Modules 和 AspectJ)的前沿,而不仅仅是清理昨天的烂摊子。无论如何发展,对于应用程序开发人员——以及那些想要可预测、成本效益高的结果的经理们来说——未来看起来一片光明。

新年快乐!

获取 Spring 新闻邮件

订阅 Spring 新闻邮件,保持联系

订阅

保持领先

VMware 提供培训和认证,助力您快速进步。

了解更多

获取支持

Tanzu Spring 通过一个简单的订阅,为 OpenJDK™、Spring 和 Apache Tomcat® 提供支持和二进制文件。

了解更多

即将到来的活动

查看 Spring 社区的所有即将到来的活动。

查看全部