《Linus Torvalds 自传》摘录

它的发明者Linus Torvalds,知道的人就更少了。

他本人也很低调,深居简出,很少出席公众场合或接受媒体采访,通常只在专业开发者的邮件列表中发言。提起他的名字,人们的第一反应往往是"哦,传说中那个22岁就发明Linux的芬兰大学生……",其他就一片空白了。

他的自传《Just For Fun》出版于十年前(2001年),已经几乎被遗忘了。

星期六下午,我在硬盘里偶然翻到这本书(中译本),不经意地读了第一页。Linus Torvalds正在谈他的写作计划:

"我们可以在第一章里对人们解释生命的意义何在。这样可以吸引住他们。一旦他们被吸引住,并且付钱买了书,剩下的章节里我们就可以胡扯了。"

我觉得有点意思,接着往下面读。他继续谈生命的意义:

"人类的追求分成三个阶段。第一是生存,第二是社会秩序,第三是娱乐。最明显的例子是性,它开始只是一种延续生命的手段,后来变成了一种社会行为,比如你要结婚才能得到性。再后来,它成了一种娱乐。"

我心里嘀咕,这个理论有点离经叛道啊,不过看上去似乎有道理。但是,它跟Linux有什么关系呢?

"技术最初也是为了生存,为了生存得更好。现在技术大体上还处于社会的层面,但正在朝娱乐的阶段发展。……(Linux的开发模式)为人们提供了依靠兴趣与热情而生活的机会。与世界上最好的程序员一起工作,是一种无与伦比的享受。"

我被吸引住了,整个周末都在读它,越读越入迷。此书极其有趣,一点不枯燥,充满了各种好玩的笑料,以及对技术和软件的严肃思考。如果你是一个程序员,我高度推荐此书。

我从没料到Linus Torvalds是一个如此幽默有趣的人,我摘录了一些他的妙语,请大家欣赏。

===============================================================

1. 关于幼年

"出生后,我的摇篮是一个洗衣筐,幸好我沒留下什么记忆。"

2. 关于外貌

"我有一个祖传的大鼻子,据说眼镜可以让鼻子显得小一点,于是我就带上了,任何时候都不摘下来。"

3. 关于姓氏

"我祖父发明了自己的姓,全世界现在总共有十八个姓Torvalds的人,他们之间都有血缘关系,都得忍受我祖父带来的这种混乱。"

4. 关于服装

"我从小不太讲究穿衣,长大后,又突然要由别人来决定我的穿衣,这些人主要是某些高技术公司的销售人员,我就穿他们在会议上免费发送的T恤和夹克。"

5. 关于成长

"妈妈对她的一些朋友们说,我是个非常好养的孩子。她只要把我放在一个黑咕隆咚的储藏柜里,再配上一台电脑,偶尔朝里扔一些意大利面条,我就会感到格外高兴了。她的话不无道理。"

6. 关于入伍

"在那里手拿武器,上了一个月的操练课后,我便觉得有生之年完全有资格从此一动不动,享受平静的生活了。惟一可做的事情就是在键盘上打代码,或者手里端着一瓶啤酒。"

7. 关于退伍

"我的服役期在1990年5月7日结束。我妻子会告诉你,我连我们的结婚纪念日都记不住,但我却不大可能忘记我离开部队的日子。"

8. 关于芬兰人

"芬兰人有沉默的传统,人人都沉默寡言。他们常常站在一起,但一句话也不说。德国作家布莱希特二战时曾在赫尔辛基住过一段时间,他在描绘火车站一家咖啡馆里的顾客时曾说,那些人"会讲两种语言却沉默不语。"所以后来他一得到机会就逃出了芬兰。"

9. 关于诺基亚

"既然芬兰人不喜欢面对面地交谈,整个国家就成了移动电话最理想的市场。"

10. 关于打工

"我一贯喜欢室外运动,曾经一度当过邮差,但送的不是报纸而是垃圾邮件。"

11. 关于暑假

"那年夏天我做了两件事。第一件事是什么都没做。第二件事是读完了719页的《操作系统:设计和执行》。那本红色的简装本教科书差不多等于睡在了我的床上。"

12. 关于赫尔辛基大学

"学校为VAX微型机买了16个使用许可,但是却规定《C语言和UNIX》课程的选修人数为32名。我想学校的想法是16个学生白天使用机器,另外16个学生晚上使用。"

13. 关于理查德·斯托曼

"1991年,理查德·斯托曼到芬兰赫尔辛基理工大学演讲,我在生活中第一次见到了典型的留着长发、蓄着长胡子的黑客。这样的人在赫尔辛基不多。"

14. 关于Unix

"你在UNIX上完成的大部分任务都是通过六个基本操作完成的,它们被称作"系统呼叫"(system call)。第一个基本操作是"创建子进程"(fork),一个程序把自身完全复制出来,这样你就有了两个相同的拷贝。第二个基本操作是复制出来的程序, 再用一个新项目替换自己。其他四个基本系统呼叫–打开、关闭、读和写–都是为了访问文件的。这六个系统呼叫便组成了UNIX的简单操作。然后,你只需 在程序之间创造出交流渠道(pipes),就能解决复杂的问题。"

15. 关于编程

"对于任何编程的人来说,编程是世界上最有趣的事,比下棋有乐趣得多,因为你可以自己制订游戏规则。而你制定什么样的规则,也就会导出与此规则相符合的结果。"

16. 关于操作系统

"创造操作系统,就是去创造一个所有应用程序赖以运行的基础环境。从根本上来说,就是在制定规则:什么可以接受,什么可以做,什么不可以做。事实上,所有的程序都是在制定规则,只不过操作系统是在制定最根本的规则。"

17. 关于Linux的发明过程

"这花费了我大量的精力:编程――睡觉――编程――睡觉――编程――吃饭(饼干)――编程――睡觉――编程――洗澡(冲冲了事)――编程。"

18. 关于Linux的第一个观众

"我(把Linux)显示给我妹妹看,她盯着显示器看了大约五秒钟,看着上面是一串A和一串B,说了声"很好",便没什么感觉地走开了。我意识到,这犹如你指给别人看你铺设了一条长长的柏油马路,但想向别人解释这条马路的意义是完全不可能的。"

19. 关于Linux的攻击者

"安德鲁·塔南鲍姆不断攻击我的Linux取代了他的MINIX操作系统。他只穿着件T恤就浑身冒火,能怪谁呢?"

20. 关于姑娘

"在那个时候,只要一想到姑娘,Linux系统就变得不再重要了。在某种程度上,今天也还是这样。"

21. 关于成功

"Linux所取得的许多成功,其实可以归结为我的缺点所致:1、我很懒散。2、我喜欢授权给其他人。"

22. 关于Linux 1.0版

"许多人认为,1.0版的发行是件大事,主要是那些出售Linux的软件公司,他们希望1.0版对发行有所帮助。在他们看来,1.0这个数字的心理 意义要远比其本身的技术含量更为重要。我对此倒没有什么异议,因为事实就是如此,以0.96版的序号销售操作系统确实比较糟。"

23. 关于26岁

"我开始观察镜中的自己,我的发线正在一点点向上面爬升,脸上也开始密布着细纹。我已经二十六岁了,平生第一次觉得自己老了。而这已经是我在大学里度过的第七个年头,我想抓紧人生,快一点毕业。"

24. 关于超时工作

"Linux不是靠牺牲宝贵的睡眠时间换来的。事实上,如果你想听真话,那我就要说,我更喜欢睡觉。"

25. 关于网络口水仗

"它们的全部存在意义就是不遗余力地宣传什么东西,也就意味着还要贬损其他的相关物。你在那里经常看到的通常只是些"我的系统比你的系统更好"之类的废话。我们可以把它们看作是某种形式的在线手淫。"

26. 关于微软

"突然间,到处都是微软的产品了,被蝗虫入侵了似的。我并不是说蝗虫是坏蛋,我喜欢所有的动物和昆虫。"

27. 关于开源软件的商业化

"我认为它带给我们更多的机会。比如,有些技术人员担心没法养活自己的孩子,他们现在就有了选择的余地。你可以仍然一如既往地保持理想主义,或者你 也可以选择成为某个新的商业类型。你让自己多了一个新的选择,并不会让你失去任何东西。在此之前,你除了保持纯洁之外显然没有任何其他的选择。"

28. 关于理想主义者

"我一贯认为理想主义人士很有趣,只是有点沉闷,甚至有些吓人。为了坚持一个非常强有力的意见,你不得不排除其他意见。那就意味着,你不得不变得不近情理。"

29. 关于互联网泡沫

"那情况也是前无古人的,你在任意一辆出租车内摇下窗户,随便向路边挺胸走过的妓女提问:"主题演讲几点开始?"她都能告诉你答案。"

30. 关于比尔·盖茨

"比尔·盖茨作了一次主题演讲。威尼斯饭店那个足有7个宜家仓库大的舞厅里,挤满了站着听讲的人。"

31. 关于移居加州

"现在是十一月,我还穿着短裤,如果是在芬兰,我早就没命了。"

32. 关于软件专利

"我同时怀有两种心情――好的和坏的,但坏的成分更多。"

33. 关于攻击者

"有人声称,作为Linux领头人所产生的压力,已经使我从一个电脑迷变成了一个混蛋。他错了,实际上我一直是一个混蛋。"

34. 关于GPL许可证

"GPL为每个人都提供了机会,成绩卓著,这是人类的一个巨大的进步。可是,所有创新都应纳入GPL吗? 这他妈的完全不可能,应由开发者自行决定是使用GPL还是使用其他保护版权的方法。令我几乎发疯的是,理查德·斯托曼认为非黑即白,别无它途,由此产生了 不必要的政治划分。"

35. 关于成名

"当人们开始过分认真地对待你时,就为你设下了一个温柔的陷阱。"

36. 关于律师

"那些将人类的创造结果称之为是"财产"的人,不用说,便是律师了。"

37. 关于知识产权

"许多要求加强知识产权立法的讨论是基于这样一种观点,即给创造者和艺术家以更多的"保护"。而人们似乎不曾、或者说是从未意识到,这样一种强有力 的权利导致一些人剥夺了另一些人的权利。如果你得出我认为版权实际上是有害的结论,那么你错了。恰恰相反,我热爱版权。我只是认为没必要将版权所有者的权 利无限扩大。不要扩大到将消费者的权利都被剥夺殆尽。"

38. 关于Java语言

"不要试图以技术来控制用户,那是决不可能成功的,最终要对公司造成损害,而且也会阻碍人们对于该项技术的接受。Java就是一个例子,它现在已经 远没有其初期那么富有吸引力了。Sun公司原本想要控制Java,但却基本上已经失去了它。Java现在依然运行得很好,然而却显然没有充分发挥其潜 力。"

39. 关于人类不再登陆月球

"因为月球被证实是一个很单调的地方,基本上没有夜生活,这有点像圣何塞。于是人们并不想再回到月球上去了。"

40. 关于电子邮件

"我喜欢电子邮件的众多理由之一是,它如此方便又如此容易被忽略。你可以轻松地对某些邮件不加理睬。"

41. 关于生活哲学

"寻找乐趣,做一些有趣的事情,增加财富和提高名声。"

42. 关于未来

"当你谈及技术的未来时,真正有意义的是人们想要什么?一旦能够描绘出这一点,剩下的事情就是如何大规模地生产它,并使它足够便宜,以便人们能够在不牺牲另外也想要的东西的同时获得它。除此而外,没有任何事情真正有意义。"

(完)

三星获得 WP8 手机首发权:诺基亚情何以堪

三星发布全球首款Windows Phone 8手机,这让号称与微软合作紧密的诺基亚情何以堪

新浪科技讯 北京时间8月30日早间消息,三星周三在德国IFA消费电子展上推出了全球首款Windows Phone 8智能手机Ativ S。分析人士由此指出,微软允许三星先于诺基亚发布首款Windows Phone 8手机,旨在表明一种态度,即它会对所有手机厂商一视同仁,不会偏向诺基亚。

倒向WP操作平台

业内人士普遍认为,随着美国法院判决三星多款Android手机侵犯苹果专利,越来越多的智能手机厂商可能会转而采用Windows Phone操作平台。

投资公司McAdams Wright Ragen分析师希德·帕拉克(Sid Parakh)在谈到三星Ativ S智能手机时说:“它看上去性能不错,抢在诺基亚前面发布。由于Android表现非常突出,微软或Windows从未建立起最好的团队,从未实现最好的 设计。随着法律环境的改变,这也是三星可能会调配资源扩大或多样化其产品线的典型案例。”

诺基亚定于9月5日在美国纽约发布采用Windows Phone 8系统的新一代Lumia智能手机。这家昔日的全球第一大手机厂商境况不佳,试图通过发布新产品来扭转业绩下滑的颓势。

Ativ S的发布可能会让外界对新一代Lumia智能手机更加期待。根据微软周三在其官方博客上发布的信息,Ativ S配备4.8英寸高清Super AMOLED显示屏和1.5GHz双核处理器。此外,还有一台800万像素后置摄像头和一台190万像素前置摄像头。

移动分析公司Alekstra分析师特罗·奎蒂南(Tero Kuittinen)说:“人们高度期待诺基亚的首款Windows Phone 8手机能搭载4000万像素或2000万像素摄像头。如果诺基亚在下周发布的新手机摄像头像素不高,无疑会令许多人感到失望。但是,这也让诺基亚有很大的 空间,通过即将发布的新机型与竞争对手形成鲜明对比。”

诺基亚未获优待

微软高管本·鲁道夫(Ben Rudolph)在一篇博文中指出,三星会推出多款Windows Phone 8手机,而Ativ S只是“第一炮”。分析师表示,三星Windows Phone手机的推出或许能够打消其他手机厂商对微软更偏向诺基亚的疑虑——诺基亚CEO斯蒂芬·埃洛普(Stephen Elop)是微软前高管,同时也让三星将未来押在Windows Phone平台身上。

市场研究机构Current Analysis分析师艾维格·林加特(Avi Greengart)说:“微软试图通过让三星率先发布第一款Windows Phone 8手机,令其他手机厂商可以明白一个道理,那就是诺基亚并未受到特别优待。”

不过,科技咨询公司J. Gold Associates独立移动顾问杰克·戈尔德(Jack Gold)却认为,三星已经暗示向Windows Phone平台的过渡只是暂时的,而诺基亚仍然是决定Windows Phone平台未来发展的主力军。市场研究机构CCS Insight分析师杰奥夫·布拉伯(Geoff Blaber)说:“三星已经第一个冲出起跑线,给诺基亚新机型的发布设置了一个门槛。”

微软在今年六月发布了Windows Phone 8的预览版,并承诺第一款Windows Phone 8手机将在秋天上市。Windows Phone 8系统采用的内核与微软即将上市的Windows 8操作系统一样,但两者又有很大区别。Windows 8将运行于平板电脑和PC,定于10月26日发布。

力争走出败诉阴影

三星表示Ativ S手机将于10月份至11月份上市销售,但并未给出更具体的发售日期。三星周三还在IFA消费电子展上展示了多款采用Windows 8的平板产品和第二代Galaxy Note智能手机。

三星凭借Galaxy Note创造了一个新的产品类别,它的屏幕比平板电脑的小,但又比智能手机的大。第一代Galaxy Note的销量已经达到1000万台左右。三星移动总裁申宗钧(JK Shin)说:“我相信第二代Galaxy Note的销量会超过第一代。”

三星希望新产品的发布会使外界不再关注于其在法庭上惨败一事。苹果目前正积极寻求法院对8款三星手机下达禁售令,从而迅速将法庭上的胜果转变为实实在在的业绩增长。

三星则希望Galaxy Note可以提升公司员工士气,摆脱与苹果官司败诉的阴影。Galaxy Note 2显示屏为5.5英寸,比第一代更薄、更大,同时配备四核处理器,采用代号为“果冻豆”(Jellybean)的最新一代Android操作系统,而手写 笔功能也得到极大改善。

投资公司NH Investment & Securities分析师Lee Sun-tae说:“Galaxy Note 2在设计上没有太大的创新,但功能上有相当多的改进,能够让三星继续在这个类别的产品中保持前进势头。随着Galaxy Note 2的发布,三星还试图消除因在美国法庭上失利而弥漫的悲观气氛。”

苹果在最早向法院提交的法律诉讼中并不涉及Galaxy Note和三星新推出的其他产品。但许多法律专家认为,苹果及其律师会尽力让上周法院的判决适用范围覆盖三星新一代产品,尤其是,陪审团发现三星侵权手机 的一些功能在Android平台上较为普遍,如多点触控拖放功能。

微软股价周三报收于30.65美元,较前一个交易日上涨2美分。

“单元测试要做多细?”

原文出处:酷壳 – CoolShell.cn 作者:陈皓

这篇文章主要来源是StackOverflow上的一个回答——“How deep are your unit tests?”。一个有13.8K的分的人(John Nolan)问了个关于TDD的问题,他说——

“TDD需要花时间写测试,而我们一般多少会写一些代码,而第一个测试是测试我的构造函数有没有把这个类的变量都设置对了,这会不会太过分了?那么,我们写单元测试的这个单元的粒度到底是什么样的?并且,是不是我们的测试测试得多了点?”

八卦一个答案

StackOverflow上,这个问题的答案是这样的——

“I get paid for code that works, not for tests, so my philosophy is to test as little as possible to reach a given level of confidence (I suspect this level of confidence is high compared to industry standards, but that could just be hubris). If I don’t typically make a kind of mistake (like setting the wrong variables in a constructor), I don’t test for it. I do tend to make sense of test errors, so I’m extra careful when I have logic with complicated conditionals. When coding on a team, I modify my strategy to carefully test code that we, collectively, tend to get wrong.”

老板为我的代码付报酬,而不是测试,所以,我对此的价值观是——测试越少越好,少到你对你的代码质量达到了某种自信(我怀疑这种的自信标准备要高于业内的标准,但这种自信也可能是种自大)。如果我的编码生涯中不会犯这种典型的错误(如:在构造函数中设了个错误的值),那我就不会测试它。我倾向于去做那些有意义的错误测试,所以,我对一些比较复杂的条件逻辑会异常地小心。当在一个团队中,我会非常小心的测试那些会让团队容易出错的代码。

Different people will have different testing strategies based on this philosophy, but that seems reasonable to me given the immature state of understanding of how tests can best fit into the inner loop of coding. Ten or twenty years from now we’ll likely have a more universal theory of which tests to write, which tests not to write, and how to tell the difference. In the meantime, experimentation seems in order.”

不同的人有不同的测试方式,在如今这种不成熟的时期,这些能够适应于内部编码的测试方式对我来说都比较合理。也许从今后十年或二十年,我们会对“什么要的测试需要写,什么样的不需要”达成更广泛的共识,并且我们可以知道这两者的区别。与此同时,各种实践都在各自发生中。

这个问题并不新鲜,但是这个回答对TDD似乎有一种否定,最亮的是这个问题是由Kent Beck,Kent是XP和TDD的创造者,是敏捷开发实践方法的奠基人。以致于还有人调侃到——

The world does not think that Kent Beck would say this! There are legions of developers dutifully pursuing 100% coverage because they think it is what Kent Beck would do! I have told many that you said, in your XP book, that you don’t always adhere to Test First religiously. But I’m surprised too.

只是要地球人都不会觉得Kent Beck会这么说啊!我们有大堆忠实程序员在追求着100%的代码测试覆盖率,因为这些程序员觉得Kent Beck也会这么!我告诉过很多人,你在你的XP的书里说过,你并不总是支持“宗教信仰式的Test First”,但是今天这么说,我还是很惊讶!

后面还有一些不人同意Kent, 我一下子从这个事中想到了《fight club》里的那个精神分裂者创建了一个连自己都反对的地下组织。呵呵。

其它答案

八卦完了,我们还是来认认真真地看看这个问题中其它的其它答案。

第二个答案:值得借鉴

  • 开发过程中,单元测试应该来测试那些可能会出错的地方,或是那些边界情况。
  • 维护过程中,单元测试应该跟着我们的bug report来走,每一个bug都应该有个UT。于是程序员就会对自己的代码变更有两个自信,bug 被 fixed,相同的bug不会再次出现。

第三个答案:给敏捷咨师看的答案

这个答案在说,我们只注意到了TDD中的T,而忽略了第一个D,就是Driven…… bla bla bla… 又这扯这些空洞的东西了,国内的各种不学无术的敏捷咨询师最好这一口了。

第四个答案:致那些什么都要测试的人

如果我们需要测试一个像 int square(int x) 这样的开根函数,我们需要40亿个测试(每个数都要测试)。

事实上这种情况可能还更糟糕,如果有这样一个方法 void setX(int newX) 不会更改其它的成员变量,如:obj.z, Obj.y,那么,你是不是还要去测试一下别的变量没有被改变?

 

因为,在国内也有很多很多人在问这类的问题——单元测试究竟要做多细?

App Store 全新卡片式界面已更新

细心的iOS 6.0 Beta版本用户可以发现今天的App Store “搜索”界面已经启用了全新卡片式界面,不再是以前列表式的排序界面,新的界面非常美观亦更加符合触控屏的使用习惯,不过弊端在于这样不容易快捷找到自己 想到的App,因为一个界面只显示一个APP的简介和预览图,而在之前Beta版中的相同界面则会显示至少4个Apps。

不知道这个是否只是暂时测试,后续到底会如何变化,让我一起期待9月12日iOS6.0 的正式发布吧【舅舅都说9月12日…_(:з」∠)_】

百度、360搜索大战升级:张朝阳宣称搜狗将参战

近日爆发的搜索引擎大战,昨晚已经从百度和360之争,演变成为百度、360与搜狗的“3SB”大战。搜狐公司董事局主席兼首席执行官张朝阳31日晚对外宣称:“搜狗必须参战!”

9月1日消息 近日爆发的搜索引擎大战,昨晚已经从百度和360之争,演变成为百度、360与搜狗的“3SB”大战。搜狐公司董事局主席兼首席执行官张朝阳31日晚对外宣称:“搜狗必须参战!”

在张朝阳表态的同一天,搜狗也正式发布搜狗高速浏览器4.0版,该版本浏览器首次实现IE8和Webkit两个内核的独立封装,可以提高网页打开速度达30%以上,安全性提升90%。而此前由于搜狗浏览器的协同作用,搜狗搜索已经成为仅次于百度的搜索引擎。

此前在360推出搜索业务后,搜狗CEO王小川曾发布内部邮件,就360进军搜索一事作出表态,王小川认为,因为360的进入,搜索进入了百度、搜狗和360的“新三国时代”,搜狗与百度和360“亦敌亦友”。

王小川表示,搜狗的策略是“挑战百度,防范360”。但搜狗已设定360占据搜索市场份额临界值,一旦360超过这一临界值,搜狗将会展开反击。(完)