走在前沿
VMware 提供培训和认证,以加速您的进步。
了解更多上周五是托尼(C.A.R.)·霍尔的生日。谁是C. A. R. 霍尔?如果您是一位程序员,您可能熟悉快速排序——一种优雅且令人惊讶地简单的排序算法,在大多数情况下速度极快。如果您学习过计算机科学,您几乎肯定用多种语言实现过快速排序,并且会识别此页面上的动画。霍尔于 1960 年发明了快速排序,它现在是最广泛使用的排序算法。
除了其他贡献之外,霍尔还发明了通信顺序进程(CSP)语言,用于指定并发进程的交互。一位聪明的人,对计算机科学的发展做出了杰出的贡献。
1980 年,霍尔因“对编程语言的定义和设计做出的基础性贡献”而获得图灵奖。他的获奖演讲,名为皇帝的新装,不仅应该成为计算机科学家的必读书籍,也应该成为 IT 管理人员和应用程序开发人员的必读书籍。
让我引用一些珍宝
程序员总是被复杂性包围着;我们无法避免它。我们的应用程序之所以复杂,是因为我们雄心勃勃地想要以越来越复杂的方式使用我们的计算机。编程之所以复杂,是因为我们每个编程项目都有大量相互冲突的目标。如果我们最基本的工具,即我们设计和编写程序的语言,也很复杂,那么语言本身就变成了问题的一部分,而不是解决方案的一部分。这不仅适用于语言;它也适用于平台和框架。这些平台和框架对实现业务应用程序的成功和失败的影响越来越大,甚至超过了语言本身——这一点在我 11 月份在旧金山 QCon 上关于 Java 语言未来的小组讨论中有所提及。最根本的真理是,基础设施(无论是语言还是平台)的作用是简化开发人员的生活,并让他们专注于交付业务价值的真正任务。
与语言相关的观点——以及早已过时的技术——至今仍具有共鸣
对于分时或个人计算机系统的用户来说,在输入程序(或修改)和开始运行该程序之间的间隔完全没有生产力。现代翻译——代码到测试的周期必须尽可能短,使敏捷测试对生产力至关重要。
在描述一个过于复杂的语言项目时,霍尔评论道
起初我曾希望这样一个技术上不合理的项目会崩溃,但我很快意识到它注定会成功。在软件领域,几乎任何东西只要有足够的决心,都可以实现、出售,甚至使用。没有一个科学家能够说的话能够抵挡住一亿美元的洪流。但有一种品质是无法通过这种方式购买的——那就是可靠性。可靠性的代价是追求极致的简单性。这是一个非常富有的人最难付出的代价。5 或 6 年前,当我第一次遇到这篇演讲的文字时,在“旧 J2EE”的黑暗时代,我感觉托尼·霍尔是在直接对我说话。托尼·霍尔在 1980 年预测了 J2EE 的问题。那时,像大多数更感兴趣于取得成果而不是简历增强的 J2EE 架构师一样,我和霍尔在 PL/1 中处于同样的境地——眼看着一场灾难在缓慢发生,却无力阻止。在 2004 年的没有 EJB 的 J2EE中,我写了关于“复杂性产业”的文章,该产业以巨大的金钱、时间和纯粹的失败为代价,产生了过于复杂的解决方案。复杂性产业在应用程序开发团队和内部架构组中蓬勃发展,在基础设施中也同样如此。复杂性产业难以克服,因为很多人对其存在有着既得利益——有时是经济上的;有时是职业上的(当它允许他们建立帝国时);而且很多时候仅仅是为了提升简历。那些为它辩护的人总是可以争辩说,批评者只是不明白他们在批评什么——当像霍尔这样无可置疑的杰出人物发声时,这使得它变得更加重要。
那是本世纪初——并且是上个世纪概念的遗产。如今,情况有所不同——至少在企业 Java 领域是这样。 Tomcat 流行程度的显著增长也许是证明开发人员现在有能力强制执行简单性的最大证据。Ruby on Rails 对 Java 的(健康)压力(我认为这最终将增强 Java)也指向了相同的事情。甚至有证据表明,一些传统的应用服务器供应商也理解了这种变化以及它如何使他们的客户受益。BEA 通过拥抱 Spring和其他简化客户体验的技术,可以说已经走在了前面。即使是 Sun——凭借Java EE 6 Profile 概念——似乎也与时俱进,并承认许多客户不再希望使用传统的单体应用服务器这一现实。
每次有人选择不使用 EJB;每次有人选择将 Web 应用程序部署到 Tomcat 而不是 WebSphere;每次有人选择使用简单的远程策略而不是复杂的基于 SOAP 的方法时,他们都在做出这种简单性的选择。正如霍尔所说,通过更简单的方法,他们远非放弃构建“非企业级”解决方案,实际上他们在可靠性等关键企业级特性方面获得了显著的提升。
可靠性的代价是追求极致的简单性。这是一个非常富有的人最难付出的代价。
在最近一次去悉尼的旅行中,我遇到了一个大学时代的老朋友,他现在是一位学者,从那以后我一直在更多地思考计算机科学。因此我重新审视了霍尔的讲座。但除了从霍尔在商业和学术界的经验中吸取的明显教训之外,在企业 Java 应用程序开发的背景下思考计算机科学令人沮丧。我们离做聪明的事情还很远。我们遭受了太多的复杂性,以至于我们专注于让事情运转。正如霍尔所强调的,无论你想要做什么,从程序员的角度来看,拥有一个简单的模型都是最成功地完成它的先决条件。(通常基础设施需要很聪明才能实现这种简单性。)
过去几年一直致力于让企业 Java 模型在实践中发挥作用,并战胜复杂性产业。这在很大程度上已经完成了。如今,企业 Java 项目的结果是相当可预测和良好的。我相信未来几年将致力于解决显而易见的问题之外的问题,并构建更智能的基础设施,并且对它所运行的代码有更深入的了解。我为我们公司能够帮助实现这一现实感到自豪。随着我们继续在许多领域带来创新,SpringSource 将走在解决构建下一代技术的最前沿,例如用于 OSGi 服务平台的 Spring 动态模块和 AspectJ,而不仅仅是清理昨天的烂摊子。无论事情如何发展,应用程序开发人员的未来——以及希望获得可预测且经济高效成果的管理人员的未来——都一片光明。
新年快乐!