微信扫描登录
或者
请输入您的邮件地址来登录或者创建帐号
提 交取 消
GITBOOK.CN需要您的浏览器打开cookies设置以支持登录功能

程序员访谈录:9位优秀程序员的Q&A(下)

接上篇,这篇访谈源自2006年,最先发布在波兰程序员 Jaroslaw 的博客上。原作者提出了10个问题,都是有关于他认为读者会感兴趣的或尊敬的各位优秀程序员所创造的各种事物。整整十年过去了,看看当初他们在想什么,比如他们推荐的编程书是什么?

Q4:你认为计算机编程领域的下一个大事件是什么?X-oriented编程、Y语言、并行计算还是什么?

回复:可能是web应用、大规模分布式进程、CG,大部分人认为不会有特别巨大的变化,可能随着硬件的提高编程能够变得更简单。

Steve Yegge:我认为Web编程会逐渐变成最最重要的客户端编程。而对于原来传统的客端端编程都会被废弃,如: GTK, Java Swing/SWT, Qt, 当然,所有的和平台有关的东西,例如 Cocoa 和 Win32/MFC/等。

当然,这不会一晚上就发生了。这会在第一个十年内缓慢地发生,而在第二个十年内,Web Apps最终会胜利。工具,语言,协议,和浏览器技术都会进步得非常快,并会完全超出你今天能干的事。每一年都会向前进一步,而从今天开始,我会最终决定把我所有的应用开发全部切换到基于浏览器的应用。

微软和苹果最终不愿意这个事发生,所以,触发这个事的第一步会是一个开源的浏览器(如:Firefox)开始到了支配市场的地位,然后会出现某种Firefox的杀手级应用(这种杀手级应用可能会像iTunes一样,所有的人都会用它,只需要下载Firefox)。

Linus Torvalds:我并不认为我们会看到一个“大的跳跃”。我们只会看到很多的工作帮助我们把那些沉闷辛苦的工作变得更简单——会有一个更高级别的语言,也许把简单的数据库集成到语言中来会是其中最主要一个。

例如,我个人相信“Visual Basic”在编程方面比“面向对象”做得更多。当然,人们都在取笑VB是一个很烂的编程语言,并且人们在谈论OO语言都十多年了。但我还觉得不是这样的,Visual Basic 不是一个好的语言,但是我觉得VB那简单的数据库接口比OO更重要。

所以,我认为会语言有很多的改进,并且,硬件的改进会让编程更容易,但我并不期望会有巨大的生产力或是革命性的改进。

至少,你不会开始搞真正的AI的东西,我也不认为真的AI会变成某种你不需要编程的东西。

David Heinemeier Hansson:我从不试图预测未来。我也不相信命运一说。最好预测未来的方式就是去实现未来。

Peter Norvig:大规模的分布式处理。

Dave Thomas:下一个最牛的事会被再下一个最牛的事所掩盖,然后再被再再下一个所掩盖,再再再下一个所掩盖……。这是一件没完没了的事,所以,我并不会试图去找最牛的事,因为这会让人们忘了那些最真实的问题:把基本的东西做对。我们要让用户更满意,专注于交付有价值的东西,自豪于我们做的事。一个程序员可以使用很多工具把这些事做得更好,而不是去追逐时尚和流行。

Guido Van Rossum:对不起,我没有那么多水晶球。我CGI被发明了5年后预测过它 :-)

James Gosling:有两个事是我现在最关心的,那就是要对付并行和复杂。

Bjarne Stroustrup:我不知道,我也不愿猜。

Tim Bray:不知道。

Q5:如果你有三个月的时间去学习一个相对较新的技术,你会选择什么?

回复:Dojo、FPGA、Cocoa、Javascript、flash、3D渲染、安全、加密、数字签名等。

Steve Yegge:我的确有3个月的业余时间,我准备学一下 Dojo (http://dojotoolkit.org) 和高级 AJAX 及 DHTML。我会通过开发一个相当牛的Web应用来学习他们。Dojo 真的酷,并且我确信它会越来越好。

Linus Torvalds:嗯,我真的很爱做 FPGA(可编程芯片),但我部是太忙了而不是坐来来开始学习。我喜爱和硬件打交道:很明显这个原因是因为我最终在做操作系统,因为操作系统(除了编译器)基本上都是在和硬件打交道,但我没有真正地自己去设计和做一个硬件。

David Heinemeier Hansson:Mac 的 Cocoa 编程。

Peter Norvig:我想把 Javascript 学得更好。

Dave Thomas:如果“新”是对于我来说,那么我会去学钢琴课。如果“新”是说技术,我猜 我会选择学习某种和为残疾人服务的有关的技术。

Guido Van Rossum:单板滑雪。

James Gosling:搞点有乐趣的东西,我会学习最新的3D渲染技术。我可能会写一个光子映射渲染器。

Bjarne Stroustrup:3个月只有很少的东西你可以学,我觉得你只能参加某个成熟领域的培训。

Tim Bray:安全,加密,数字签名,身份标识,等等。对我来说,从没学过这些东西对我来说是个很大的问题。

Q6:你认为让某些程序员的效率10倍甚至100倍于其他人的原因是什么?

Steve Yegge:我想你应该考虑一下为什么不是让所有的程序员都一样牛。托马斯爱迪生有一句关于天才的名言也许会给你一些启示。

Linus Torvalds:我真的不知道,我想,一些人之所以更牛是因为他们可以专注于那些重要的事,而更多的只不过是在应付。那些我所知道的真的很牛的程序员从很年轻的时候就在做事了。

David Heinemeier Hansson:把难题变简单的能力。

Peter Norvig:把整体问题一次性放入大脑的能力。

Dave Thomas:他们关心他们做的事。

Guido Van Rossum:大脑结构基因不同。

James Gosling:他们知道他们要做什么,他们不并不急于仓促行事。他们有他们要做的事的整个蓝图。

Bjarne Stroustrup:首先,缺少足够的职业培训,或基础不够。其次,这些人要即聪明(那种可以把事情想清楚,直达核心的能力),又有经验,并有使用工具的知识。编程需要把理论和实践结合起来 – 并不是使用没有实际业务的知识。

Tim Bray:令人惊讶的思维改变。

Q7:你最喜欢的工具(操作系统,编程/脚本语言,文本编辑器,版本控制系统,shell,数据库引擎,其他你无法离开的工具)是什么?为什么更喜欢这个工具?

Steve Yegge:操作系统: Unix! 我用Linux,cygwin,和 darwin。你无法打败那些高效的工具。每一个程序员都应该学习使用/bin和/usr/bin下的所有命令。

脚本语言:Ruby。我几乎对所有的重要的脚本语言都很熟悉: Perl, Python, Tcl, Lua, Awk, Bash, 和一些我忘了的。但是我太懒了,而Ruby是目前所有脚本语言中最简单的,它应该是天堂制造的。

编程语言:没有一个我喜欢的,我觉得所有的编程语言都很扯。我倾向于Java,因为它很强,可跨平台,有多不错的工具和类库。但是Java未来会进化或是灭亡,Java还没有好到可以永远保持其领先地位。

文本编辑器:Emacs,因为这是迄今最好的编辑器。

版本管理:SVN,Perforce更好一些,但是也很贵。

Shell脚本: Bash, 因为我太懒了去学一个更好的。

数据库: 当然是MySQL,没有之一。

其它:我发现GIMP是无价的,但也是令人恼炎火的。我用这个东西好几年了,但什么也没干,但是我没它活不了。很讽刺吧。Firefox 越来越是我最重要的工具。如果让我去用IE和Safari,我会有严重的窒息感。

注:所有的这些工具 (Unix, Emacs, Firefox, GIMP, MySQL, Bash, SVN, Perforce) 都有一个共同点:他们是可扩展的。例如:他们都有可编程的API。伟大的程序员知道怎么编写他们的工具,而不只是去使用。

Linus Torvalds:实际上,我最终也没有用过几个工具,而我却花了一些时间让这些工具为我工作。最大的事是我自己写了个操作系统,我也自己写了个版本管理系统(git),我用的文本编辑器是 micro-emacs – 最终我也定制和扩展了它。

除了上面三个,其它的东西,我深度关心我的邮件阅读软件,我使用“pine”,并不是因为它是史上最好的邮件阅读软件,因为我习惯了,用它我会有最低限度的大惊小怪。

David Heinemeier Hansson:OS X, TextMate, Ruby, Subversion, MySQL. 这些组合让我很快乐。我希望那些有好的品味的专注于重要的事的工具。

Peter Norvig:我不喜欢那三大操作系统 – Windows, Mac, Linux。我喜欢 Python 和 Lisp. Emacs。

Dave Thomas:在使用Linux10年后我转到Mac平台有两年多了。Mac并不见得有多好,但是它不需要很牛的技术,也不需要经常维护,这让我可以让我更专心得使用它。

我并不是一个单一工具的信仰者,我喜欢换来换去的,这样可以让我有更多的经历。现在,我使用 OSX, Emacs, TextMate, Rails, Ruby, SVN, CVS, Rake, make, xsltproc, TeX, MySQL, Postgres, 还有一堆高效的小工具。没人知道我明年会用什么。

Guido Van Rossum:Unix/Linux, Python, vi+emacs, Firefox。

James Gosling:这些天,我在用 NetBeans. 用它可以干我想干的所有的事,清洁,简单和高效。这是最好的我永远要生活在其中的环境了。

Bjarne Stroustrup:Unix, sam (一个非常简单的文本编辑器), 当然,一个好的C++编译器。

Tim Bray:我喜欢 Unix-like 的操作系统,像 Python 和 Ruby 的动态语言,像Java的静态语言(具体说来是Java API) Emacs, 还有, bash, whatever, NetBeans。

Q8:你最喜欢的计算机编程相关的书是什么?

Steve Yegge:大哥,这个问题太难了。也许是”Gödel, Escher, Bach: an Eternal Golden Braid” (作者Hofstadter)?虽然这不是严格意义上的编程的书,如果你要明确意义上的编程书,那么可能是 SICP 计算机程序的构造和解释。

Linus Torvalds:嗨。这两天我在读一些小说,或是非计算机读物(老的但是有用的 “The Selfish Gene” 作者 Richard Dawkins)。

如果要问我编程的书,我脑子里只出现了唯 一一本真正的经典的编程的书 Kernighan & Ritchie 的 “The C Programming Language”,因为这本书太牛了,可读性强并且很短。考虚虑一下你想学到这世上一门最重要编程语言,并且它很要很薄,而且还有可读性,这真是一个奇迹。

也就是说,其它我很喜欢的书并不是编程的,而是关于计算机结构和硬件的。那显然是 Patterson & Hennessy 的计算机结构的书,但是我个人也许更喜欢 Crawford & Gelsinger 的 “Programming the 80386?,这是我在开始写Linux时用的书。

相似的原因,我还喜欢 Andrew Tanenbaum 的 “Operating Systems: Design and Implementation”。

David Heinemeier Hansson:我喜欢 Extreme Programming Explained 其摒弃了一般的编程实践,我还喜欢 Patterns of Enterprise Application Architecture 其出众地说明了抽象和具现的平衡。

Peter Norvig:Structure and Interpretation of Computer Programs。

Dave Thomas:这关系到你所谓的“最喜欢”,也许我最喜欢的是IBM的 “IBM/360 Principles of Operation”。

Guido Van Rossum:Neil Stephenson的 Quicksilver。

James Gosling:Programming Pearls 作者Jon Bentley。

Bjarne Stroustrup:K&R。

Tim Bray:Bentley的 Programming Pearls。

Q9:你最喜欢的与计算机编程无关的书是什么?

Steve Yegge:只能是一本吗?这不可能。有太多太多我喜欢的书了。我这个月读过最喜欢的书是 “Stardust” (作者尼尔·盖曼是一名移居美国的著名英国作家, 一度被誉为是罗琳之后最成功的作家)和 “The Mind’s I” (Hofstadter/Dennet)。我最喜欢的作者是 Kurt Vonnegut, Jr. 和 Jack Vance。

Linus Torvalds:我在前面说过 Dawkins的 Selfish Gene。在小说方面,有很多很多我enjoy的,但是几乎没有我特别喜欢的一本。我一般不会重读一本书,我的选择总是会变。我可能更喜欢科幻小说,如:”Stranger in a Strange Land” 作者 Heinlein,这是我青少年时期最喜欢的书,但现在并不是我喜欢的了。

David Heinemeier Hansson:1984, George Orwell。乔治·奥威尔(1903年6月25日-1950年1月21日),英国著名小说家、记者和社会评论家。他的代表作《动物庄园》和《1984》是反极权主义的经典名著。

Guido Van Rossum:Neil Stephenson 的 Quicksilver。

James Gosling:Guns, Germs & Steel 作者 Jared Diamond。

Bjarne Stroustrup:我没有固定喜欢的书。目前是 O’Brian 的 Aubrey/Maturin 系列。

Tim Bray:One Day in the Life of Ivan Denisovich。

Q10:你最喜欢的乐队或表演者或作曲家是谁?

Steve Yegge:

喜欢的风格:古典音乐,动漫原声音乐,电脑游戏音乐

喜欢的作曲家:Rachmaninoff, Chopin, Bach

喜欢的演奏者:David Russell (古典吉它), Sviatoslav Richter (钢琴)

喜欢的动漫音乐: Last Exile, Haibane Renmei

Linus Torvalds:实际上我并不太喜欢音乐,但是当我听音乐的时候,我一般听经典摇滚乐,如: Pink Floyd ,Beatles ,Queen 和 The Who 乐队。

David Heinemeier Hansson:我喜欢很多风格。 Beth Orton, Aimee Mann, Jewel, Lauryn Hill. Actually, 所有的这些都可以归到 Girls with Guitars )。

Guido Van Rossum:Philip Glass。美国作曲家。创作融合了摇滚乐、非洲与印度音乐、西方古典音乐的元素,作品经常重复简短的旋律和节奏模式,同时加以缓慢渐进的变奏,被称为简约音乐。

James Gosling:我喜欢听民歌:Christine Lavin, Woody Guthrie, Pete Seeger…

Bjarne Stroustrup:乐队 The Dixie Chicks(南方小鸡是一个美国女子乡村三人组合),作曲家Beethoven。

Tim Bray:看我的博客吧。

本篇参考了酷壳coolshell博主陈皓对《九个超级程序员的采访》一文的翻译和解读。