电子说
著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。托瓦兹利用个人时间及器材创造出了这套当今全球最流行的操作系统(作业系统)内核之一。现受聘于开放源代码开发实验室(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。
人物经历
托瓦兹1969年12月28日出生于芬兰赫尔辛基市。父亲尼尔斯·托瓦兹(Nils Torvalds)是一名活跃的共产主义者及电台记者,曾当选芬兰共产党中央委员会委员。托瓦兹家族属于在芬兰占6%的少数民族芬兰瑞典人。他毕业于赫尔辛基大学计算机系,1997年至2003年在美国加州硅谷任职于全美达公司(Transmeta Corporation),现受聘于开放源代码开发实验(OSDL:Open Source Development Labs, Inc),全力开发Linux内核。与妻子托芙(Tove,芬兰前女子空手道冠军)育有三个女孩。
与很多其他黑客不同,托瓦兹行事低调,一般很少评论商业竞争对手(例如微软)产品的好坏,但坚持开放源代码信念,并对微软等对手的FUD战略大为不满。
例如,在一封回应微软资深副总裁Craig Mundie有关开放源代码运动的评论(Mundie批评开放源代码运动破坏了知识产权)的电子邮件中,托瓦兹写道:“我不知道Mundie是否听说过艾萨克·牛顿(Isaac Newton)爵士?他不仅因为创立了经典物理学(以及他和苹果的故事)而出名,也还因为说过这样一句话而闻名于世:我之所以能够看得更远,是因为我站在巨人肩膀上的缘故。”托瓦兹又说道:“我宁愿听牛顿的也不愿听Mundie的。他(牛顿)虽然死了快300年了,却也没有让房间这样得臭气熏天。”
现年47岁的林纳斯目前受聘于开放源代码开发实验室(OSDL,Open Source Development Labs),全身心的开发Linux内核。尽管这位年轻人看上去毫不起眼,比如林纳斯曾在他的自传《乐者为王》(Just for Fun)中自嘲:“我是一个长相丑陋的孩子,凡是见过我小时候照片的人,都会觉得我的相貌酷似河狸。再想象一下我不修边幅的衣着,以及一个托瓦兹家族祖祖辈辈遗传下来的大鼻子,这样,在你脑海中我的模样就形成了。”但这丝毫也影响不了林纳斯对整个商业社会的巨大价值—Linux代表着网络时代新形式的开放知识产权形态,这将从根基上颠覆以Windows为代表的封闭式软件产权的传统商业模式。更重要的是,这样的颠覆早已悄悄的出现在了商业社会的各个角落
托瓦尔兹对成功的独特见解
当在科技行业谈到实现名利的时候,一个有远见的,像史蒂夫·乔布斯一样伟大的人物浮现在我的脑海里,他通常能够设计出令人想不到的产品。但这也不是LinusTorvalds能够成为世界上最知名的程序员的理由(他经常与好莱坞明星在奥斯卡颁奖典礼上上亲密交谈)。
当托瓦尔兹还是个大学生,他发明了开源的操作系统Linux,在当今世界的操作系统领域是最具生命力的(包括谷歌和Facebook均采用该操作系统)。世界上最快的超级计算机也采用该系统,同时,也是Android的核心。
他于1991年发明该操作系统,描述该系统为“开源的操作系统,只是因为爱好,并且不会把它做得很大很专业”。Linux因为它的大和专业在当今世界是如此的重要。这是开源项目的典范,或者任何人都可以做出自己的贡献。自2005年以来,来自1200公司的近12000名程序员把他们的代码添加到主要的Linux操作系统(称为内核)。除了发明了操作系统,托瓦尔兹也发明了一种方,很多人一起工作在一个电脑程序项目。他发明的方法叫做Git,Git本身创建了自己的行业(从Torvalds没有获得任何帮助的情况下),但是如Github,提供给Git价值20亿美元的启动资金。
托瓦尔兹说,如果他是一个有远见的人,那么这一切就不会发生。当他在一次和来自IEEE的斯蒂芬·卡斯采访中说到(和我们强调):我相信,为了linux的成功,我不知道我自己究竟做了哪些。当我开始的时候,如果我坚信有一天我能成功,所以到现在我一直在坚持下去。有时候普你需要很多的自信,相信你能做到……
事实上,我真的不知道它最终什么时候能够实现,意味着我会一直做下去。我可能会听取他人的建议,听取外部的意见,其他人加入该项目,我认为这样更容易,更有趣。有时候人们不需要别人的同意,但可以一直做自己喜欢的事情。
Linux之父话糙理不糙
Linus Torvalds曾经在十多年前尝试用C++来开发Linux内核,由于种种原因,很快失败了。自那时起他就不时表达对C++的不满。刘江blog上的记录的这个事件只是最近的一次而已。尽管言辞激烈,但其实话糙理不糙。
时至今日,在一般的场合下,C和C++语言的主要用途就是系统级软件的开发。具体地说,C/C++写平台、工具和基础库,支持高层的语言来完成应用逻辑。 在9月份《程序员》杂志上刊登的一篇《微软架构师谈编程语言发展》的文章里,Brian Beckman直截了当地说,C++语言主要是用来开发别的语言的。这话片面一点,如果改成 “C++语言主要是用来支持别的语言的”,那就大体没错了。
做系统软件开发的时候,重要的是理解系统的运作方式,那些漂亮的抽象手法和高级特性是次要的。
有一个有趣的现象,不少做系统软件的老手,在用过一段C++之后,又回到C。因为在这个层次上,C++对于C的优势就不突出了。那些高级的抽象结构往往是 不必要的,反而是由于抽象层次的提高,使得开发者要弄清楚“下面实际发生的事情”变得不太容易了。所以很多老手实际上觉得用C语言控制力更强一些,更得心 应手一些。真正的C语言高手,对于语言和编译器都很熟悉了,基本上在写C时候就已经知道编译器优化以后产生汇编代码是个什么样子,甚至可以改变C代码来引 导编译器产生最优化的机器码。而C++的机制很丰富,很多机制是为了满足高层应用和框架的需求而准备的,在这个层次上发挥不出来,反而把清晰性给牺牲掉 了。很多时候,一个简单的语句,到底背后会发生什么,即使是老手也说不清。比如:
std::string s(“Linux Torvalds“);
std::string scopy = s;
上面这段代码不过是创建两个内容相同的字符串副本,但是没有任何一个人能够在不了解更多信息的情况下清楚地描述背后所发生的事情,因为不同的STL对于 string的实现方式不同,因此在copy assignment时表现也不同,有的可能是简单地复制字符串对象,有的可能具有ref-counting机制,需要创建对象、设定对象值、增加引用计 数,有的没有考虑线程安全性,有的考虑了线程安全性,还得加锁解锁,对不起,加解锁也还有很多做法。创建新的string对象时,有时还需要调用内存分配 器,而这个东西的实现又五花八门,有的直接new char[],有的从内建的memory pool申请,memeory pool是不是线程安全的?对不起,这次可能又要涉及加解锁问题。memeory pool会不会已经满了?要不要次第调用new/malloc申请新的内存块?总之,后面的事情够多够复杂,没有相当功力,对平台了解不够深入,很难说出个子午卯酉来。
一个字符串复制尚且如此,别的高级特性就更不用说了。所以很多人宁可麻烦一点,也不愿意使用C++,这还是可以理解的。
就我个人来说,我还是愿意用C++的,特别是在C里写一遍又一遍realloc的时候,就想起 string::operator+=()的好处来了。大概是STL给我的印象太深了,写算法程序的时候,不用STL就觉得不爽,一个transform 就可以搞定的事情,非要用for循环,这会让我感觉浑身不自在。所以一般情况下,拿到一个什么问题,我还是会用C++去解决的。对我来说, Torvalds的话其实是很中肯的,即使是用C++,也要尽可能搞清楚其背后发生的事情,这样在写low level程序的时候才会有把握。如果是设计应用级别的程序,就尽可能不用C/C++,把底层的事情都忘掉,专心专意做好应用层的设计才是正道。
全部0条评论
快来发表一下你的评论吧 !