约书亚·布洛赫

约书亚·布洛赫:Java平台的良心

“Java编程语言在5.0版本引入的变更中已经耗尽了其复杂性预算。”这是一句令人震惊的话,尤其是考虑到说出这句话的人。约书亚·布洛赫曾在Sun Microsystems工作多年,负责设计这些新增功能,而他参与塑造的JDK 5.0版本是该语言历史上最雄心勃勃的扩展。随后,他告诉世界,这已经足够了。那种本能——去监管一个他亲自扩大的系统,并以预算而非功能来思考——就是他整个人在一行文字中的缩影。

南安普顿、哥伦比亚、匹兹堡

布洛赫于1961年8月28日出生在纽约州南安普顿。他在哥伦比亚大学工程与应用科学学院获得了计算机科学学士学位,随后前往卡内基梅隆大学攻读博士学位,并于1990年完成。他的论文《抽象数据对象复制的实用方法》获得了ACM杰出博士论文奖提名。

这个标题值得读两遍。即使作为一名研究生,布洛赫工作中的关键词也是“实用”。他并不是将复制作为分布式系统中的理论问题来攻击;他追求的是一种工程师可以真正针对抽象数据对象进行部署的版本。他的余下职业生涯都花在了那个狭窄且不时髦的缝隙中,即在可证明的正确性与工作程序员可以放心使用的工具之间。

Sun与集合框架

在Transarc担任高级系统设计师一段时间后,布洛赫加入了Sun Microsystems,在那里他成为了杰出工程师,并领导了使Java成为Java的几个部分的架构设计和实现。Java集合框架是其中最大的部分:即列表、集合、映射以及操作它们的算法——自那以后每个Java程序都是建立在这些基础之上的。他还领导了java.math包和语言的断言机制,并推动了JDK 5.0中的重大改进。

这是一种独特的作者身份。集合库不是一个应用程序;它是一种词汇。数百万从未听说过布洛赫名字的程序员在他们选择的名词和动词中度过职业生涯,他们的思维方式受到他接口形状的约束。如果他做错了,那产生的不会是一个糟糕的程序;而是一个用于编写程序的糟糕语言,且是永久性的。

免费测试
你的是多少?

二十道题、八分钟计时,以及与所有参与者对比得出的百分位。无需注册。

开始智商测试 →

Effective Java

2001年,他出版了《Effective Java》,它做到了编程语言书籍很少做到的事情:成为了一个社区的道德权威。它被结构化为一系列编号的独立条目,每个条目陈述一条规则,然后根据真实的失败模式进行论证,并在2001年赢得了Jolt奖。2008年的第二版从57个条目增加到78个,且没有变得更难阅读;第三版于2017年推出。

他与合作者又写了两本书。2005年与尼尔·加夫特(Neal Gafter)合著的《Java Puzzlers》是该语言陷阱的选集——代码在规范上表现正确,但在直觉上却表现疯狂——作为诊断练习呈现。2006年的《Java Concurrency in Practice》与包括道格·利(Doug Lea)在内的五位合作者共同编写,成为了该平台要求用户处理的最困难任务的标准参考书。

Google与API设计

布洛赫从2004年6月到2012年8月担任Google的首席Java架构师。正是在那里,他的核心关注点结晶为一个公开的论点。他2006年的会议论文《如何设计一个好的API及其重要性》将接口设计视为一门有风险的学科,而不是口味问题,理由是API是一份无法重新协商的合同。他具体描述了这种挫败感:在Google,他无法为某些类提供替代实现,因为它们被声明为具体类型而不是接口——这是多年前由其他人做出的决定,正如他所说,这是“普通开发人员每天都能感受到的”限制。

他的建议有一种一贯的味道:对自己的判断保持谦逊。不要重复自己;寻找一个成熟的库,特别是对于并发性,而不是编写自己的库。怀疑那种认为关于过早优化的普遍警告不适用于其他人的感觉——“很容易觉得关于过早优化的普遍警告不适用于你,因为你只是知道哪些代码是时间关键的。”并且阅读《风格要素》(The Elements of Style),因为“好的编程和好的写作都关乎表达的清晰和经济。”

为什么约书亚被称为天才

所讨论的能力不是原始的发明,而是一种更罕见的东西:从必须使用它的陌生人的角度看待软件的能力,并为那个陌生人可能犯的错误而不是为自己的能力进行设计。在布洛赫的框架中,API是一种强加给从未同意且无法修改它的人的语言,这使得设计API成为一种提前几十年预测大规模滥用的练习。集合框架就是证据:一种被绝大多数工作程序员使用的词汇,正确到在很大程度上保持不变地存活了下来。第二部分是编纂:《Effective Java》将以前仅存在于少数平台工程师头脑中的隐性专业知识,变成了可转移、可争论的规则。

反面案例也值得陈述。布洛赫没有产生新的计算机科学。他的论文获得了杰出论文奖提名,但没有获奖;他最著名的作品是一本最佳实践书,这是策展和判断,而不是发现。记录在案的荣誉是一个商业出版奖和一个杂志名单,而不是该领域的主要研究奖项,且此处咨询的任何来源都没有记录有人称他为天才。集合框架是他领导的一项大型团队工作,而不是个人创作。公平的结论是,布洛赫是工程判断力的最高实践者和教师——这是一门在软件中比新颖性更重要,但受到的赞誉却少得多的学科。

遗产

他在离开Sun后继续塑造该语言,共同提出了自动资源管理块和简洁实例创建表达式作为闭包的方法;ARM块进入了JDK 7。2004年12月,《Java开发者杂志》将他列为全球最重要的四十位软件人物之一。此后他回到了卡内基梅隆大学,担任软件与社会系统系的一名实践教授——这个头衔读起来就像他职业生涯的总结,因为实践一直是重点。

这项工作的衡量标准在于其影响是无名的。今天在某个地方,一个从未读过布洛赫一行文字的程序员会伸手去拿一个接口而不是一个具体类,或者拒绝手动编写并发原语,因为一位同事曾经告诉他们不要这样做,而那位同事是在书中的一个编号条目中读到的。

与伟人比较

Adam Smith vs MichelangeloAristotle vs Variste GaloisCarl Friedrich Gauss vs Vincent Van GoghHenri Poincar vs Leonhard Euler
查看排行 →所有对比 →

神童

Shakuntala DeviShakuntala DeviMultiplied two 13-digit numbers in her head in 28 secondsJeremy ShulerCornell University at 12 — Reading at 21 Months, Top-Decile SAT…Akiane KramarikSelf-Taught Painter from Age 4 — Paintings Sold for Up to…Marko ČalasanWorld's Youngest Microsoft Certified Systems Engineer — Age 8…
神童 →

玩一玩,明天再来

每日天才挑战 · Brain teaser
A farmer has 17 sheep. All but 9 run away. How many are left?
点选你的答案 ↓
你是哪位天才? 免费智商测试