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