Rock Star Josh Bloch

Rock Star Josh Bloch(译)
Rock Star Josh Bloch
这是一篇前不久在 JavaOne 2007期间 (5月初)SDN(Sun Developer Network)对Joshua Bloch的访谈。我看了多遍,受益良多,就翻译在了此处。由于本人英文水平有限,文中部分语句暂时无法得到准确的翻译,故英文原文一并给出,请大家斟酌。(2007.06.12最后更新)

Bio: Joshua Bloch, Google's chief Java architect and a former Distinguished Engineer at Sun Microsystems, won the prestigious Jolt Award from Software Development Magazine for his book, Effective Java Programming Language Guide. At Sun, he led the design and implementation of numerous Java platform features, including JDK 5.0 language enhancements and the award-winning Java Collections Framework. He holds a Ph.D. in computer science from Carnegie-Mellon University and is most recently the co-author, with Neal Gafter, of Java Puzzlers.
简历:Joshua Bloch,Google公司的首席Java架构师,也曾是Sun公司的杰出工程师。由于书籍Effective Java Programming Language Guide,他从Software Development Magazine那儿赢得了极负声名的Jolt大奖。在Sun公司时,他领导设计并实现了众多的Java平台特性,包括JDK 5语言的提升以及获奖的Java集合框架。他从卡纳基-梅隆大学获得了计算机科学博士学位。最近,他与Neal Gafter一起成为Java Puzzlers的合作作者。

Q: I've heard that at your doctoral thesis defense at Carnegie-Mellon, which was open to anyone for questions, you planted a long technical question with your mother that you answered flawlessly after saying, "Awww, Mom!" Is that true?
我听说你了在卡纳基-梅隆大学时谋划的博士论文,这个论文为了寻求问题而被放开给每个人。你在你母亲的帮助下弄出了一个很长的技术问题,在说出来之后,你的回答毫无瑕疵。

A:Yes. The question appeared to tear the work to shreds. My mom had fun with it, and so did I. Thesis defenses can be so dry. I did everything I could to inject a bit of levity into mine. I also answered another -- planted -- question with a rap, complete with recorded rhythm track. I had a boom box concealed under the desk during the talk.
是的。这个问题的出现将工作分成小块。我妈妈喜欢它,我也是的。撰写论文是如此的枯燥。我做每件事情时,都希望能够给我自己的事情加入一点乐趣。我也回答了与RAP有关的另一个问题,使用一个记录节奏跟踪器完成。在谈话的过程中,我将一个Boom Box(译注:一种便携式的音频系统,一般由无线电、磁带或CD播放器组成)藏在桌子下面。
上述一问一答,我确实无法准确翻译。可能涉及到某个典故,并且语言很口语化。希望有朋友能够教我 :-D

Q: You are currently busy revising Effective Java. Can you give us some hints about what will be in the second edition?
目前,你正在修订"Effective Java"。你能否给我们一些关于可能出现在第二版中的内容的一些线索?

A: I'm trying very hard to preserve the tone of the first edition. I'm revising all the existing items in light of the J2SE 5.0 language changes and everything I've learned since 2001. I'm adding a few more items here and there, plus an entire chapter on generics. Also, I'm slanting the threads chapter toward java.util.concurrent.
我正在努力保持第一版的风格。我正修改的所有已经存在的条目都据于J2SE 5.0语言的变化,以及从2001年至今我所学习到的任何东西。我正在各处添加一些更多的条目,为泛型加入了一整章。为了java.util.concurrent包,我也会对多线程这一章进行倾斜。

Q: What are the most interesting or funny reactions you have gotten from readers of Java Puzzlers?
你已经从Java Puzzlers的读者那儿得到的最有趣或最奇特的反应是什么?

A: Well, I got a letter from David Bacon thanking me for the copy I sent him and saying that it was the perfect thickness to raise his monitor up to the correct height. Then he sent me a picture of his intern's monitor with a copy of the book under it. I also thought it was pretty funny when our Japanese translator, Yoshiki Shibata, caught us falling into one of our own traps. It's described here, if you're curious.
我得到了David Bacon的一封信,感谢我送给了他一本该书,并且说那是一个使他的显示器上升达到正确高度的理想厚度。后来他递给我一张他的内部显示器图片,这本书就在显示器的下方。我同样认为我们的日文版译者,Yoshiki Shibata,为赶上我们而落入了我们自己的一件行李中,是一件十分有趣的事情。就描述到这,如果你感兴趣的话。
如果这两件"趣闻"真的如我翻译的那样的话,我可真感到惊讶。关于第一件趣事,如果我是该书的作者,我会认为
David 的行为是对我的一种极大的讽刺--我的书是用来看的,不是用来垫显示器的;关于第二件趣事,我认为就是Josh在"讽刺"(至少是无恶意的吧)那位可怜的日文译者。不过,老外很开放的,也许这只是一些平常的"笑料"罢了。

Q: In June 2004, when you became chief Java architect at Google, you were put in charge of spreading and encouraging the use of Java technology there. How has it gone?
在2004年6月,当你成为了Google公司的首席Java架构师,你在那儿就被置于推广和鼓励Java技术应用的位置。后来如何了?

A: Very well indeed. We use the Java platform extensively in many of our products and internal applications. Of course, we use other languages too.
真的非常好。我们在我们的产品和内部应用中广泛地使用Java平台。当然,我们也使用其它的语言。

Q: Some people may not know that you identified a widespread bug affecting both Java and other languages that had gone unnoticed for half a century. Tell us about it.
有些人可能不知道你发起过一个分布广泛地Bug影响,包括Java和其它语言,它已经被忽略达半个世纪之久了。告诉我们一些关于它的事情。

A: It wasn't really half a century. A quarter century maybe. And I didn't really identify it -- I propagated it into the Java platform libraries! Someone reported the bug to Sun. I don't know who it was, but I was shocked -- and amused -- by the bug. At Peter Norvig's urging, I wrote it up for the Google research blog. I guess it caused quite a stir in the blogosphere.
真的不是半个世纪,可能是25年。并且也确实不是我发起它的--我只是将它介绍到了Java平台库中。某个人向Sun报告了这个Bug。我不知道他是谁,但我被这个Bug震惊了--也觉得很有趣。受Peter Norvig的催促,我把它写入了Google的研究Blog。我猜想它在Blog界引起了一阵震动。

Q: How do you feel about the open sourcing of the Java platform?
你怎么看Java平台开源?

A: I think it's a good thing. It goes a long way toward easing the concerns of the open-source and research communities about the legal aspects of working with the platform. In many ways, it's always been a pretty open platform: free access to the source code, heck, even the bug database. But it's nice that Sun has gone all the way.
我认为那很好。在缓解开源和研究社区对工作于这个平台的法律方面的担心已经走过了很长一段路。在许多方面,它始终都是一个十分开放的平台:自由的访问源代码,甚至是Bug数据库。但非常好的是Sun已经完成了所有的工作。

Q: What advice would you give to a programmer new to the Java language?
对于一个新接触Java语言的程序员,你有什么建议?

A: Write lots of code. Have fun with it! Collaborate with people who are more experienced than you and learn from them. Join an open-source project. Code reviews are a great way to learn. Don't be embarrassed when people find problems in your code. Fix them and have fun watching your code and your skills improve. Oh, yeah, and go buy a copy of Effective Java.
写大量的代码,并以它们为乐。与那些比你更有经验的人一起协作,并向他们学习。加入一个开源项目。代码回顾是一个很好的学习方法。当别人发现你的代码中的问题时,不必感到尴尬。修复这些问题,并对于观看你的代码及对你技术的改进而感到高兴。噢,是的,去买一本Effective Java。

Q: What do you think is the most inventive use of Java technology?
你认为对于Java技术最具创造性的应用是什么?

A: That's another tough one. I guess you can't go too far wrong with the Mars Rover. I was blown away by the images that it transmitted.
那是另一个棘手的问题。我猜想你不可能像Mars Rover(译注:美国的火星漫游者飞行器,它的系统软件使用Java编写,这是Java发展历程中的一件大事)那样走得那么远。我为它发射时的画面所倾倒。

Q: What's the biggest misconception about Java technology?
对Java技术的最大误解是什么?

A: What irks me most is that there are still people who think it's slow. That's ancient history. By J2SE 1.4, the platform was not appreciably slower than traditional compiled languages, and it just keeps getting faster. Both of the last two releases were impressive in this regard. You don't have to touch your program. Just download the new release, and your program will run significantly faster.
最让我感到厌倦的是,仍然有人认为Java很慢。那已经很久以前的事了。到J2SE 1.4时,这个平台就一点都不比传统的编译型语言慢了,并且它还在变得更快。最近发布的两个平台在这一点上令人影响深刻。你不用修改你的程序,只要下载最新的版本,你的程序就会明显地运行地更加快。

Q: The Java class that you couldn't live without is...?
你离开就不能活的Java类是...?

A: I'm going to have to say LinkedHashMap, even if I did write it. It combines the speed of HashMap with the predictability of a sorted map.
我将不得不说就是LinkedHashMap,即使我写出了它。它使用一个排序的映射预览而结合了HashMap的速度。

Q: What's your favorite Java technology book?
你所喜欢的Java技术书籍是什么?

A: Modesty prevents me from answering this one directly, so I'll plug one of my favorite programming books that isn't specific to the Java language. Anyone who cares at all about bit twiddling should get their hands on Henry S. Warren's Hacker's Delight. It's the Bible of bit twiddling.
谦虚防止我直接地回答这个问题。所以我将指出我所喜欢的编程书籍之一并不特别关于Java语言。任何真正关注位运算的人都应该接触过Henry S. Warren的"Hacker's Delight",它是
位运算 的"圣经"。

Another book that every programmer should read is Jon Bentley's Programming Pearls. It's a great book about "programming in the small," as relevant today as when it was first published in 1986.
另一本每位程序员都应该阅读的书就是Jon Bentley的"Programming Pearls"。这是一本伟大的关于"小型编程"的书,它对今天的价值就如同1986年它第一次出版时一样。

Q: Can you describe the process of writing code?
你能描述一下写代码的过程吗?

A: For me, there are several distinct stages. The hardest part is figuring out what problem I'm really trying to solve. Once I do that, it's usually reasonably straightforward to envision the rough outlines of the solution. Then it's a "simple matter of programming" to make it real, including the tests, of course.
对于我,有几种不同的情况。最困难的部分就是勾画出我真正需要去解决的问题。一旦我做到了,常常就能相当直接地想像出解决方案的粗略轮廓。

Q: What's the next big technology revolution?
下一个大的技术革命是什么?

A: I'm really bad at predicting the future. It's clear that multicore machines will be mainstream in the very near future and that programs will have to change to take full advantage of them. I'm not betting on Software Transactional Memories (STMs) in the near term, but on high-quality multithreaded utilities, such as java.util.concurrent. Oh, yeah, and everything that isn't already on the web will be soon.
在预知未来方面,我真正的很差。清楚地是,在非常近的未来多核机器将成为主流,程序将不得不进行改变以充分利用它们。我不是在为软件事务内存(STM)打赌,而是为高质量的多线程工具类,如java.util.concurrent。噢,是的,还没有在Web上的每一件东西都将很快成真。

Q: What do you see as the most important Java technology API five years from now?
从现在开始的五年中,你将如何看待最重要的Java技术API?

A: The core APIs -- java.lang and java.util -- will still be very important. But java.util.concurrent and its offspring will be equally important.
核心API--java.lang和java.util--仍然将十分的重要。但是java.util.concurrent和它的后续者将变得同样重要。

Q: If you could work on a dream project, what would it be?
如果你能在一个梦想的项目中工作,你希望它是什么?

A: A brand-new Java-like language atop the same virtual machine that is not compatible with the Java programming language. Rather than shoving yet more features into this language, I want a fresh start, but I want to leverage much of the work that has already gone into the platform. That means using the same virtual machine and providing some interoperability story with existing libraries.
一个崭新的、与Java相似的语言,运行在一个相同的但与Java程序设计语言不兼容的虚拟机中。不要把这些特性挤到这个语言中,我想要一个新的开始。我想影响大量的已经进入这个平台的工作。这就意味着,使用相同的虚拟机并为已有的类库提供交互性功能。
关于Joshua对他所理想的项目的描述,我非常的迷惑,这段话仍然需要研究。

Q: What recent changes to the platform have made your life easier?
最近这个平台的什么变化使你的生活变得更容易。

A: I hate to sound like a broken record, but java.util.concurrent. Also java.util.ArrayDeque and NavigableMap. The for-each loop is great, and so are generics, even if they do complicate things somewhat.
我很不喜欢说类似于破记录之类的话,但对于java.util.concurrent要除外。java.util.ArrayDeque和NavigableMap也是的。For-Each循环很好,泛型也是如此,即使它们做了一些稍微复杂的工作。

Q: Where in the process of programming do you have the most fun?
编程中的哪个过程使你最有乐趣?

A: I enjoy many phases, from requirements analysis to debugging. Each of these phases presents me with brainteasers, and solving these brainteasers is what I like best. But nothing makes me feel better than building a reusable component and seeing it get reused.
我享受于许多的阶段,从需求分析到调试。这些阶段中的每一个都会呈现给我难题,而解决这些难题则是我最喜欢的。但没有什么比构建一个可重用的组件并看到它被重用更让我感到高兴了。


你可能感兴趣的:(Rock Star Josh Bloch)