Tuesday, February 15, 2011

操作系统革命·代码



对于每个吃计算机这碗饭的人来说,有两个词必定耳熟能详——GNU跟Linux。这两个早已被铭刻进现代计算机技术发展史的词语,直接改写了软件技术的演变历程,让我们今天能享有这么多计算机技术带来的好处。作为记载那段传奇历史的两部纪录片:《操作系统革命》跟《代码》,一直在圈子里默默流传。前几天断断续续看了这两部短片,写点东西出来也算宣传宣传。
软件大爆炸
众IT民工传说,在那个不算遥远的年代里,计算机开始走下神坛,工艺的提高使得小型计算机的出现有了可能,从而具备了初步进入家庭个人使用的条件。现在已经成为IT巨头的IBM,那个时候并没有出太多的风头。或许是因为卖打卡机起家的缘故,蓝色巨人对于硬件好卖钱这个道理坚信不疑。在牢牢霸住电子计算机的硬件生产之余,并没在意几家当时还不太起眼的小公司。
1975年,微软诞生;1976年,苹果诞生*……短短几十年时间,软件产业的大爆炸,不仅催生了大批的IT巨头,更让计算机的概念有了天翻地覆的变化。原来,计算机不仅仅能用来做数学计算,它甚至能唱歌、能绘画、能上网……时至今日,计算机已经成为现代人生活不可或缺的一部分。
回顾这段历史,无数高深莫测的学者纷纷指出,软件,是计算机的灵魂所在。
微软梦
在软件产业里,有个比较特殊的成员,那就是操作系统。它负责为运行其上的众软件分配硬件资源,并将它们的请求和行为解释给硬件。简单地说,操作系统是个热心的大管家,有了它,其他软件的设计可以得到大大的简化。也正因此,操作系统成为现代计算机不可或缺的重要部件。操作系统,已经远远超越了普通软件的意义。
大名鼎鼎的微软,凭借其windows系列操作系统已经从个人用户手中圈走了几千亿美金,直到今天在部分国家中还在继续。如果一切如gates同学(微软主要创始人)当初所料,今天每一位个人用户都需要在自己的电脑上安装一份windows(正版),并需要购买在其上使用的每一份软件。为了能运行那些臃肿庞大的代码,我们不得不频繁购买最新的硬件,却始终难以获得令人满意的性能。Wintel帝国联手将软件产业变成完全封闭垄断,Google、Facebook,这些依赖互联网的新兴企业压根不要想出现,因为Wintel垄断下的互联网必定举步维艰,可能要到22世纪才能有足以支持BBS出现的软硬件环境(夸张了吧,你们懂得)。
GNU与Linux
事情到了1984年,开始出现变化。Richard Stallman,这个有着一脸大胡子的MIT AI实验室学生,启动了GNU计划。GNU计划的初衷是自由软件(Free Software),即鼓励GNU社区内分享软件的源代码,试图通过大规模的合作来创造出优秀的软件。GNU的目的是打造一个完善的GNU操作系统,以取代Unix(Unix并不开源)。这一计划一提出就引起了工程师们浓厚的兴趣,短短几年时间,大量优秀的软件被快速开发出来,bug总能被很快发现并得到纠正。很快,除了系统内核,其他一切都有了。这个时候,人们开始注意到一个有趣的项目,那就是后来光芒四射的Linux。
1991年,芬兰首都赫尔辛基大学学生Linus,基于Minix系统,试图开发一个简单的操作系统。或许他的初衷只是为了满足个人的兴趣,但Linus将代码公开在网络上发布了,并欢迎大家反馈。很快,再次借助合作的力量,Linux成长为了一个成熟的系统内核,并被GNU项目选定。从这个意义上说,我们今天所说的Linux操作系统,确实应该叫做GNU操作系统。值得一提的是,有人估计,时至今日,Linux内核中Linus所写的代码已经占不到2%,足可见GNU软件运作方式的强大。在这里,推荐大家阅读《大教堂和市集》一文,对这种开发方式有比较全面的分析。
因为在英文里,自由软件这个词,经常被人误认为是免费软件,后来GNU的一帮人商定采用开源软件(Open Source)的说法,虽然后来略有争议,但已经被大部分人认可。
盈利模式
对于传统软件提供商例如微软来说,盈利是一件简单而自然的事情,一份软件光盘,则拿到一份销售的价钱。而且,占据操作系统的天时地利,可以任意制定其他软件的生死。比如当年的netscape公司,因为微软在自己销售的windows中绑定IE,最终被淘汰。这其中虽然有多方面原因,但毫无疑问,确实无人敢也无人能挑战微软老大。试想,哪天微软开发出来一个软件,捆绑进windows,然后一旦检测有同类其他公司开发的软件存在,就弹出对话框提示
“尊敬的windows用户,很遗憾的告诉您,因为在您的系统中检测到有xx软件存在,为了您的系统安全,我们很艰难的做出决定,在您卸载xx软件之前,windows将无法正常进入。另外我们推荐您用windows自带的MS xx软件,系统更安全,用着更放心……”
那所有搞软件的人还不都吐血身亡。
对于开源软件来说,盈利则要复杂一些。比较成功的例子是redhat,redhat的操作系统代码可以免费获取,但他通过技术支持跟服务来收取费用。因为不是每个人都愿意碰到问题自己去看代码或者写代码的。特别对于企业来说,支付一些费用,获得有保障的操作系统支持是值得的。更何况,代码都是公开的,也不怕嵌入什么后门或者有什么漏洞。用着啥软件不爽了甚至可以随意自己改一个自定义的出来。
后记
对于开源或者闭源,我并不特别倾向于哪一家。在我看来,开源的好处在于合作,在于分享,任何人都能免费拿到代码,都能进行修改,可以实现高质量的代码。闭源则在于能集中力量完成特定目标,例如对于某些少数人用的专业软件,相信没有大批程序员愿意或有能力去创造出来,这个时候闭源就可以派上用场了。从某种意义上说,闭源销售的其实也是服务,是针对某些特殊目的订制软件的服务。而开源,则解决的是大众需求。其实无论开源还是闭源,两者也各有各的问题,例如开源往往重视的是群体,比如软件的性能,而容易忽略UI细节,闭源则存在难以满足个性化需求、bug解决不及时的问题。因此,我们需要的应该是一个重视普通用户体验的开源社区,或是一家有良心、负责人并愿意不垄断的闭源公司。听起来好像前者更容易实现一些。
从更高层次来说,开源的精神是分享,闭源的精神是自私,当然,分享似乎是要更美好一些。但在“生产力”没有达到较高水平的时候,两者的共存也并不稀奇,反过来正因为有了对手,才能催化着软件产业飞速向前,让我们的计算机越来越强大。
*就在写作这篇文章的时候,苹果公司市值已经超过3000亿,约是微软公司的1.5倍。

No comments:

Post a Comment