分类: LINUX
2012-10-06 23:39:13
我没有在学校里学过编程,我在主要是读我自己想读的书,或是就直接去编程 (一开始在 学编程, 然后是 上编程)。
当然,我觉得上大学非常有用。我没有去一个工科大学,我上了赫尔辛基大学,这是一个比较偏理论的大学,所以,那里的教育并没有那么多的编程的东西(编程只是很少一部分),这里大多数的课程都倾向于教一些基础概念的东西,如:复杂性分析。看上去很无聊,甚至有点浪费时间,但是我还是觉得这些课有用,我对大多数课都还比较enjoy。所以,我觉得我可能在这些方面是一个比较好的程序员。
Q 2: 你们觉得对程序员最重要的事是什么?
It’s a thing I call “taste”. 有一件事,我把它叫做“品味”。
我倾向于不从熟练程度来评判那些和我工作过的人。这些人能非常艰苦地写出很多代码,但是我想从他们对别人的代码的反应做出评判,这样我们就可以明白他们自己写的代码怎么样,知道他们使用的方法怎么样。他们对别人的评判还告诉我,他们是不是有好的“品味”。是这样的,如果一个人没有“好的品味”,那么他一般不会很好的评判他人的代码,他自己写的代码通常也不会很好。
哦,这并不只是唯一的事。还有一件事,尤其在开源项目里,那是他是否有能力能和别人进行简单的沟通,告诉别人他要干什么,怎么干。这个能力可以告诉别人为什么你干的事是非常重要的,并不是所有的人都有这个能力。
也就是说,有一些人可以写出很不错的代码,但他们并不一定能解释这些代码,他们也并不一定有好的品味,但是代码可以运行得不错。有时,你需要另一个人(有那种不错的品味的人)把他的代码转成更好的形式。也就是说,任何一个程序员都需要那种可以用清晰的代码来解决复杂问题的基础能力。
Q 3: 你是否认为数学和/或物理是一种很重要的编程技能?为什么?
我个人认为有很强的数学背景是一件好事。但我不确信物理是不是这样的,但是我深信懂数学的人会让你成为一个更好的程序员。这些智力模型都是相通的。
Q 4: 关于编程,你们认为接下来的大事是什么?X-Oriented编程,Y语言,量子电脑 ?
我并不认为我们会看到一个“大的跳跃”。我们只会看到很多的工作帮助我们把那些沉闷辛苦的工作变得更简单——会有一个更高级别的语言,也许把简单的数据库集成到语言中来会是其中最主要一个。
例如,我个人相信“Visual Basic”在编程方面比“面向对象”做得更多。当然,人们都在取笑VB是一个很烂的编程语言,并且人们在谈论OO语言都十多年了。但我还觉得不是这样的,Visual Basic 不是一个好的语言,但是我觉得VB那简单的数据库接口比OO更重要。
所以,我认为会语言有很多的改进,并且,硬件的改进会让编程更容易,但我并不期望会有巨大的生产力或是革命性的改进。
至少,你不会开始搞真正的AI的东西,我也不认为真的AI会变成某种你不需要编程的东西。
Q 5: 如果你有3个月学一个相对较新的技术,你会学什么?
嗯,我真的很爱做 FPGA(可编程芯片),但我部是太忙了而不是坐来来开始学习。我喜爱和硬件打交道:很明显这个原因是因为我最终在做操作系统,因为操作系统(除了编译器)基本上都是在和硬件打交道,但我没有真正地自己去设计和做一个硬件。
Q 6: 你们觉得如何让一些程序员可能有超过其它程序员10倍或100倍的生产力?
我真的不知道,我想,一些人之所以更牛是因为他们可以专注于那些重要的事,而更多的只不过是在应付。那些我所知道的真的很牛的程序员从很年轻的时候就在做事了。
Q 7: 什么工具是你的最爱(操作系统,编程/脚本语言,文本编辑器,版本管理,shell,数据库,或其它没它你活不了的工具),为什么不是别的?
实际上,我最终也没有用过几个工具,而我却花了一些时间让这些工具为我工作。最大的事是我自己写了个操作系统,我也自己写了个版本管理系统(git),我用的文本编辑器是 micro-emacs – 最终我也定制和扩展了它。
除了上面三个,其它的东西,我深度关心我的邮件阅读软件,我使用“pine”,并不是因为它是史上最好的邮件阅读软件,因为我习惯了,用它我会有最低限度的大惊小怪。
Q 8: 你最喜欢的编程书是什么?
嗨。这两天我在读一些小说,或是非计算机读物(老的但是有用的 “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”.
Q 9: 你最喜欢的和编程无关的一本书是什么?
我在前面说过 Dawkins的 Selfish Gene。在小说方面,有很多很多我enjoy的,但是几乎没有我特别喜欢的一本。我一般不会重读一本书,我的选择总是会变。我可能更喜欢科幻小说,如:”Stranger in a Strange Land” 作者 Heinlein,这是我青少年时期最喜欢的书,但现在并不是我喜欢的了。
Q 10: 你最喜欢的乐队/演奏家/作曲家?
实际上我并不太喜欢音乐,但是当我听音乐的时候,我一般听经典摇滚乐,如: Pink Floyd ,Beatles ,Queen 和 The Who 乐队。
zz from coolshell