Linus Torvalds 先生是一个低调的,不喜欢在公共场合抛头露面的人,平时很难看到 Linus先生在某个会议上跟大家侃侃而谈。不过由于 Linus 先生所处的特殊位置,不时有媒体对Linus 进行采访,以使公众了解 Linus 对某些事情的看法,而 Linus 也从不吝啬或隐藏自己的观点,并且 Linus 的回答总是明确,有趣,充满了机智,从不令人失望。 今年以来,如果我的记忆没错的话,Linus 一共接受了 3 次比较长的采访/问答。最近的一次是在刚刚结束的 LinuxCon Japan 大会上,作为 Linux Foundation 庆祝 Linux 20 周年的一个活动,Linus 参加了其中的一个问答环节。本着八卦有理,娱乐无罪的精神,本人整理了 Linus 在这三次采访中被问到的比较有趣的 10 个问题,以及 Linus 的回答(非原话,可能有出入),一并奉上。
[1] 是否尝试过教孩子编程,如果有,是什么语言?
Linus 表示他的孩子们到目前还没有表示出对编程有足够的兴趣,如果有的话,他也许会教他们 Python,不过谁知道呢。当然,最好是由其他人来教,Linus 表示自己并不是一个好的教师。
[2] 是否会帮家庭或朋友修电脑,尤其是他们的电脑运行的不是 Linux?
Linus 表示他通常不会提供这种电脑维修支持,至于他自己家里的电脑,装的都是 Linux,所以这不是个问题。
[3] 是否会阅读其它操作系统实现的源代码,来了解某个功能是怎么实现的,或者纯粹是为了娱乐或学习的目的?
Linus 表示他从不认为阅读别人的代码是了解某个想法的一种有用的方法,所以他从不会为了了解某个功能是如何实现的去阅读代码。他阅读代码通常是为了了解某个功能 为什么不工作,这些代码通常也不是别的操作系统的代码。比如他阅读 zlib 的代码,是因为他想知道为什么 git 在运行某些库函数时耗了那么长时间。
通常他会通过阅读某些书籍来了解某些知识。比如他通过阅读 <The Design of the Unix Operating System> 来了解 Unix 是如何工作的,以及人人都知道的 <Operating Systems: Design and Implementation>。
当然现在,Linus 表示他已经不再阅读任何操作系统书籍,甚至计算机相关的书籍也很少了。
[4] 是否经常收到采访的请求,Linux Foundation 是否会请求你去代表他们出席某个场合?
Linus 表示他通常是通过 email 完成某些采访,但也不是经常性的。他认为这是他的工作的一部分,他也通常不会介意,只要提问的问题不是太弱智的话。
至于他与 Linux Foundation 的合同,则明确写明了 LF 不能强迫他去参加某些公共活动,甚至不能影响他的技术上的决定。当然,有些 LF 的活动他也会去参加,比如每年的 LinuxCon Australia 会议,因为那个地方有他最喜欢的潜水。
[5] 在 Kernel 的整个开发过程中,添加的哪个功能让你最愉悦,哪个功能又是你不喜欢,但不得不加进去的?
因为开发 Kernel 的时间太长了,Linus 表示有太多伟大或憋八的功能。可以列举的其中一个令他非常开心的功能是 filename lookup caching (the so-called dentry layer),这是因为该功能最初来自于一个学生提交的用来实现另外一个功能的 patch,该 patch 是一个典型的学术研究项目,通常并不有用,但 Linus 把其中的想法借鉴了过来,用在了另外一个功能上,并且工作的相当不错。
至于糟糕的功能,通常都与某些极其糟糕的硬件设计相关。最令 Linus 痛恨的是在 32 bit 的机器上支持超过 4GB 的内存(PAE),对他来说,这是个内存管理的噩梦。
[6] 是否还能完全掌握 Kernel 的所有部分,或者说必需要某些可信任的维护者的帮助?
Linus 表示他从来没宣称完全掌握 Kernel 的所有部分,虽然他比大多数 Kernel 开发人员掌握的要宽的多。有些子系统,他需要完全依赖维护者来帮助他做决定,因为他真的不了解(或者说不关心)该子系统,毕竟每个人都有自己的喜好与长短。
[7] 对于类似 OpenBSD 这样将重点放在安全上的操作系统有什么看法?对微内核有什么看法?
Linus 表示任何为了某个单一目的而设计的操作系统都是失败的,不管这个目的是安全还是其它。至于微内核,Linus 继续坚持他的观点,即仍然是失败的,因为在现实中,操作系统的难点在于模块之间的交互,而不是模块本身。微内核尽量使得各模块之间保持中立,这样只会令模 块之间的交互更加复杂。
[8] 面临的最困难的技术挑战?
Linus 表示他所面临的挑战大部分都是非技术的。任何技术问题,最终都会解决。而那些挑战或者说最困难的问题,通常来自于调度成千上万个开发人员以及公司的不同的进度。
[9] 20 年工作在一个项目上真的是很长,是否考虑过在 Kernel 上继续工作 20 年?
Linus 说到那时他真的是太老了,总会在某一天,某个充满精力的年轻人来到我们跟前,向我们展示他真的能够胜任这个工作。这是 Linus 关于他离开的暗示,那就是有更好的人出现时。
[10] Linux 3.0?
在被问到关于最近的 Kernel 版本号跳号的问题时,Linus 表示这只是一个版本号的变动,没有任何其它意义。现在的 Kernel 版本号有三个数字,其中前两个数字 2.6 已经失去了曾经的意义,而第三个数字到了 39,实在是太大了,所以就跳号了。
最后的这个问题来自于 LinuxCon Japan,主持提问的是 Greg K.H,他也兑现了他在 LKML 上对 Linus 的承诺,一瓶 17 年日本三得利威士忌(品牌叫“响”),以示对 Linus 的感谢。
消息来源:cnBeta