http://geek.csdn.net/news/detail/67782
原文:Linux at 25: Q&A With Linus Torvalds
作者: Stephen Cass
译者: 孙薇
责编: 钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件[email protected],另有「CSDN 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。
引言:在本文中,开源操作系统之父Linus Torvalds将畅谈Linux的前世、今生与未来。
早在1991年还在芬兰赫尔辛基大学就读时,Linus Torvalds便创建出了最初的Linux操作系统内核。之后这个小小的内核很快发展成了一个功能全面的操作系统,可以运行在智能手机与服务器上,还有各种各样的小工具上。本文是一篇电子邮件访谈记录,文中Torvalds回顾了过去25年来Linux的影响,并展望了未来25年可能出现的变化。
Stephen Cass(记者,以下简称S):如今在程序开发上,你已经比25年前拥有了更多的经验,有什么想要告诫当年的自己呢?
Linus Torvalds(以下简称L): 实际上我是这样认为的:关于Linux的成功我并不敢居功,有很多事情我当时并不了解,如果一开始我就知道的话,也绝不敢动手编写自己的操作系统:需要一些天真无畏的勇气,才敢以为自己能做得到。我深信这是动手开始一个项目,并最终获得成功所需要的特质。虽然对项目可能的发展范围缺乏概念,但更因此才不会有先入为主的想法,而对项目的发展强加干涉。
我相信,正是因为我不清楚未来能有怎样的发展,也许才会对他人的建议和影响抱着更开放的态度。如果我本来就对想要完成的目标有着奇思妙想,说不定就不会有这么开放的态度了。在我看来,这种坦诚的态度让别人更愿意、也更容易参与到这个项目中来。人们不会为了别人的愿景而买单,却会为了他们自己的愿景而努力。在我看来,正是这种想法激励着很多人在Linux上作出贡献。
S: 在Linux的发展中,是否有某个早期的技术决策是你现在希望改变的?
L: 糟糕的技术决策什么的,都是你随时可以抹消的东西。没错,尽管当时很令人沮丧,也显然完全是浪费时间和精力,但往往到了最后,这些教训都不算真正地浪费时间:采用错误的决策总有些原因,而认识到错误则会让你学到经验。我并不是说错误其实是好事,正确的决策永远比错误的要好——但我不会特别担心选择的问题,我宁愿先做下决策,哪怕以后发现这个决策是错的,也比浪费太多时间来讨论可能的选择要好。
在2001年左右,众所周知我们曾在Linux的虚拟内存子系统支持方面遇到了非常糟糕的状况。当时状况糟透了,大家对于该选择哪个方向产生了剧烈的争议,同时在某些内存的配置上也存在很大的问题。本该到“稳定”阶段了,系统中却有大量的内容消失,导致大家都很沮丧。
现在再来回顾,问题最终还是解决了,虽然那段时间就像地狱一样,所有人都痛苦不堪。如果不用在开发中期执行这类的重大修改肯定会更好一些,但这件事也并未造就灾难性的后果。
S: 随着Linux迅速发展,从单打独斗到成为群体中的一员,对你个人而言有什么变化?
L: 对我来讲实际上有两个明显的改变:其中一个是在很早的时候(1992年)发生的——我开始使用其他开发者所提供的补丁,而不再总是自己重写了。第二个变化发生在后来,当“自行编写所有要使用的补丁”已经成为了巨大的障碍,我必须学着信任所有那些帮忙维护的人员。
第一点要容易得多:由于在编写Linux内核时,大约前半年我完全都是独立开发的,一开始大家给我发送补丁的时候,我还不习惯直接使用。因此我会一一看过,确定作者的意图,然后自己再写一次。有时候跟他们写的差不多,有时候则完全不同。
但很快我无法再继续这样做了。用了没多久,在我开始对某些人产生信任之后,会直接在Linux上应用他们的补丁,而不再基于他们的理念而重新编写了,虽然最终往往还是会作些改动。这些年来,我已经非常擅长阅读与编辑补丁了,连在睡梦里都能做好。而这些年来,这种模式也一直运作良好。
但正是由于“应用别人的补丁”这种模式多年来一直运作良好,已经让我非常习惯,想要改变就更加困难。大约在2000年左右,内核的开发获得了巨大的成长(那时Linux开始显现出商业方面的潜质)。人们开始抱怨我的工作流程对整个开发造成了障碍,并抱怨Linux缺乏可扩展性,但我们缺乏优秀的源码管理工具来解决这些问题。
最终我们采用了BitKeeper作为源代码维护工具。这个名字更让人记忆深刻的是几年后关于授权中止的喧闹纷争,不过它的确很适合这项任务,而且教会了我(以及内核社区的至少一部分人)该如何控制管理源码,以及当我并非唯一的同步点时,如何在更具分布特性的开发模型中执行协作。
当然,我学到的分布式源码控制管理方法造就了2005年出现的Git。虽然Git显然已成为源代码控制方面的成功典范,但当年正是BitKeeper让大家了解到了分布式源码控制的优势。在2000年左右,关于内核的痛苦经历最终给我们好好地上了一课,不过当时确实很痛苦。
S: 还有什么其他项目就像分布式源码控制一样,让你有冲动想要掌握么?
L: 没有,我确实不希望再有这样的项目了。我所有的大项目都来自于这样的经历:“可恶,没人帮我做这个”。如果有人能帮我解决问题,我会更高兴无需再花力气自己解决了。我宁愿坐在沙滩上的遮阳伞下,啜饮着时兴的饮料,而不是自己去解决问题。
好吧,我在撒谎,几天后我感到非常无聊。我真高兴自己还有Linux,因为它确实很有趣,很能激发思考,不过与此同时,创建一个新项目确实是非常令人沮丧的做法。
S: 在你看来,Linux为什么从未在主流台式机上占领重要的席位?
L: 我们还在努力,我认为Chromebook笔记本实际上做得相当不错,即便它只是一个相当有限的桌面环境,并非完全传统式的Linux工作站模式。
至于为什么台式机如此难啃,原因很多,但最大的原因很简单,就是用户的惯性问题。在计算机世界,台式机非常独特,它是非常私人的东西——如果你使用电脑的话,每天都会与其进行相当亲密地交互;同时台式机在很多方面都具有其他计算环境所不具有的复杂性。
看看你的智能手机,这也是一个相当具有亲密度的计算设备,与人们密切相关(而在这一点上,多亏了安卓,让Linux有出色的表现)。台式机在各方面都更为复杂,遗留的负担也更重,所以这个市场很难进入。人们在使用手机时习惯了特定应用和流程,很多人也会尝试更换操作系统,不过安装不同操作系统的人还是比使用预装系统的人要少得多,而这一点在台式机上更加凸显。
同时,我认为这个市场很重要,尽管在某种程度上来说,整个“通用桌面”的市场似乎都正在衰落。更专业的东西就越简单,因此平台承担了很多任务:包括智能手机、平板电脑以及Chrome笔记本都代表着羽翼尚未丰满的通用环境。
S: Linux的什么用途最让你感到惊讶?
L: 最近没有太多,因为我觉得Linux已经成为设计新硬件或服务模型的默认环境了。如果你有些奇怪的专用设备,或者正在创建某些新的互联网基础设施什么的,要想不用Linux的话几乎让人无法理解。
不过那些“奇怪的”使用领域经常会让我感到惊讶,让我觉得Linux似乎还是那个工作站和服务器操作系统。在一些早期的Linux商务会议上,当人们炫耀鼓风机或电冰箱运行Linux时,我都会佩服地五体投体。在第一台TiVo出现时,它能运行Linux还有“可以重播电视的直播节目”都让人非常有兴趣。
S: 目前Linux所面临的最大挑战是什么?
L: 实际上内核运行地很好,人们还在担心太复杂会影响理解或者bug修复,这种担忧可以理解,但与此同时,我们也网罗到了很多聪明人。系统变得越来越大,越来越复杂,又有很多人依赖着它,使得我们必须得设置很多流程。接受巨大而具有侵略性的改变是很有挑战性的,因此我不会认为这是惬意的事情,不过在我看来,内核开发的很不错,很多其他的开源项目都很想要我们这样的资源。
即便如此,我们总能遇到这样的挑战:内核中总有过多的硬件。我们支持很多不同的硬件,几乎可以确定要比其他操作系统支持的都要多,但每天都有新的硬件出现。特别是硬件平台开发时间通常较短的嵌入式领域(在中国只用1、2个月就能转过头来创建一个全新的手机平台),想要尝试在这样的环境中工作非常艰难。好消息是,有很多硬件厂商都在帮忙,过去并非如此。
S: 现在你对什么技术发展趋势有兴趣?有哪些会让你感到失望?
L: 我一直对新的核心硬件很感兴趣,特别是CPU之类的。这也是我一开始做自己操作系统的原因,现在我还是对新的平台很有兴趣。当然,大多数时候只需要在现有的硬件上做些微调,而且我深信这就是技术发展应当朝向的方向。不过在这些事情上,我还是倾向于继续跟进追踪。
从更大的层面来讲,虽然我个人并未介入这个领域,但能够看到人工智能(AI)最终如何实现会很有趣。AI曾经属于那种“还得二十年之后才能实现”的技术,到了现在它还是“需要二十年才能实现”的技术。对于过去人们经常使用的“基于规则的模型”,我没有太深刻的印象。
现在,终于神经网络也开始发展了,我觉得这一点很有趣。虽然这并非是我所致力的领域,也不算是我希望投身的领域,但确实很有吸引力。与那些疯狂的LISP和Prolog语言不同,我们都知道递归神经网络是作用于本质的。对于真正的AI开始出现这件事,我完全不会感到沮丧,有些人会,但我完全不会。
S: 根据你的看法,在50周年时Linux能否依旧保持活跃呢?你所梦想的操作系统是什么样子的?
L: 我不怎么擅长预测,我本人只是一个缺乏想象力、很乏味的工程师罢了,总是尝试着眼于现实基础。关于预测这件事,还是让别人来做好了,无论5年、10年还是25年——我认为,只要我们继续追踪所有小的的日常细节,并尽力而为做到最好就可以了。
如果这个世界发生了巨大的改变,25年之后从根本上全然不同的话,也许会更有意思。不过,如今操作系统的很多根本的问题,与60年前人们刚有真正的操作系统时所存在的问题完全相同。据我猜测,未来计算机所发生的变化说不定还比不上在过去50年中的变化呢,硬件和软件开发人员只是学到了哪些能够运行,哪些不能。
当然,神经网络等等技术会改变世界,但它们有一部分特质就是无需“编程”,他们是自学习的,也是逻辑模糊的。我几乎能够肯定:因为这个原因,它们无法取代传统的计算模型,人们想要更智能的机器,但也需要能完全按照指令工作的机器。因此我们目前的“旧式”风格计算方式不会消失,而只会得到增强。