编者按:本文来自微信公众号“CSDN”(ID:CSDNnews),作者:李磊,36氪经授权发布。
1969 年,美国新泽西州,贝尔实验室的阁楼上,一台 24K 内存的电脑里,一个操作系统孕育而生,它的名字叫 UNIX 。随后的半个世纪,UNIX 带动了软件行业的创新,甚至改变了计算机技术的发展轨迹,成为计算机历史上的一座丰碑。
UNIX 是如何诞生的?贝尔实验室为何培养了那么多图灵奖得主?UNIX 操作系统为何重要?中国操作系统的未来会如何?
为此,《CSDN 悦读时间》栏目邀请到了 CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛,飞漫软件总经理、HybridOS 操作系统创始人魏永明,CSDN 副总裁、前微软研发总监邹欣,《UNIX 传奇》译者、IT 产品与运营专家韩磊,围绕最新发布的《UNIX 传奇》一书,揭秘操作系统鼻祖 UNIX 的发展史,探寻传奇之路的可借鉴之处。
何时开启了 UNIX 之路,其中遇到过哪些有趣的故事?
蒋涛:我最早学习 UNIX 是在 80 年代末,那时进机房得穿白大褂,主要目的是防静电。1991 年,我进入银行工作后发现,银行用的也是 UNIX 系统,所以我还写过 UNIX shell 的程序。
不久在 PC 时代来临之际,我转用了 DOS 系统,DOS 比 UNIX 简单,是一个降维版的操作系统,由命令行驱动,而很多命令来自 UNIX。DOS 之后是 Windows、Mac OS 等主流操作系统,所以说 UNIX 是所有现代操作系统的鼻祖。
魏永明:我第一次接触 UNIX 是在 1996 年,为了运行 Oracle 数据库要开发一个集成系统,使用的就是 UNIX 。还记得 UNIX 里有一个 VI 文本编辑器,当时觉得它不如 Windows 的文本编辑器,不太好用。
后来在了解 UNIX 和 Windows 的历史后,才发现它们的发展路径和我的认知路径正好相反:我先知道 Windows 和 DOS 系统,再进一步了解 UNIX,导致对计算机技术发展演进的认知是缺失的。
了解 UNIX,使用 UINX ,会对 Windows、Ubuntu、Linux 等操作系统有更清晰的认知。
邹欣:我接触 UNIX 也是在 80 年代末,当时北大计算机系的机房装了 UNIX,但因为是分布式、多用户的系统,使用起来特别慢。毕业之后进入北大工作,负责 UNIX 系统的汉化工作,还装了 SCO 的 UNIX(OpenServer)。
当时在机房工作,闹了许多笑话。同事们接触 DOS 比较多,下班之后习惯性地关机,第二天发现文件系统不断报错,不知道原因,以为是 UNIX 不行了。后来才知道关机执行 shut down 之前,要先把文件系统关掉。
还有一次,我把 temp 临时目录里的文件都删了,旁边同事的项目内容就全部丢失了,他还纳闷自己的 VI 怎么没了,原来是他把工作内容都放在 temp 目录下。
除此之外,大家还会经常犯错,譬如把机器弄死机。当时有一家销售 SCO UNIX 的公司,在北大的勺园宾馆租了一个房间,因为距离我比较近,机器死机之后我就经常去找他们借 UNIX 的磁带重装系统。在一次次的死机和重装系统后,我也越来越了解 UNIX 系统。
现在许多人学新技术,连安装系统都不会,要么是版本不对,要么是 64 位和 32 位分不清楚,直接「从入门到放弃」。所以学习的时候要从最基本的做起,不怕犯错误,大不了就是重装系统。大家都是从装机开始,一步步成长起来的,现在回头看觉得枯燥,当时是乐在其中,很有意思的。
不久前,Oracle 与 Google 的 10 年专利案判决落地,法院判定操作系统的 API 接口不构成专利,您认为这个判决结果会带来什么影响?
蒋涛:近几年,Oracle 因专利问题已被很多人视为“bad company”。Oracle 的专利制度已经落后时代。过去信息不发达,专利是保护创新的一种方式,但如今却成为了大公司“讹诈”小公司的重要武器,变成大公司之间的诉讼游戏。
2009 年,微软起诉 Linux 侵犯了其操作系统处理文件存储的专利,一帮支持 Linux 的公司就把自家的部分专利捐给开源组织 OIN(Open Innovation Network),扬言也要起诉微软,微软才作罢。
商业公司过度利用专利保护是反时代的,开源才是真正的潮流,未来开源会吞噬软件,而 UNIX 就是开源的鼻祖。
因为接口问题,Oracle 和 Google 打了快 10 年的官司,拖了很长时间。法官在判决书上写道,设立专利是为了让人类社会的创新有更好的发展。把接口开放,有利于程序员更好创新,否则就得重新开发一套新接口,过去依赖这些接口的工作都要重新再做一遍,十分浪费资源。
UNIX 的源代码被免费捐赠,但开源后的商业化并不成功。反观 Linux 的开源,获得了巨大的商业成功,这也说明专利制度迟早要重新修正。
现在微软也加入了 OIN,把部分专利捐给了 OIN 组织,还收购了 GitHub,强烈拥抱开源,在这方面是 180 度大转弯。
魏永明:Oracle 习惯用官司的方式征战获利,当年 Oracle 收购 SUN 公司没有从 Java 赚到钱,但 Google 的 Android 利用 Java 赚钱了,所以 Oracle 就去找 Google 的麻烦,意欲分一杯羹。
编程的专利诉讼主要涉及两个方面,一个是编程语言,一个是 API 接口。编程语言实质上已有定论,无论是 C 语言也好,Java 也好,都无法申请专利,或者做版权保护。因为编程语言使用者越多,生态越繁荣,申请专利后别人就没法使用了。
API 接口在这十多年里是有争议的。在 Oracle 和 Google 诉讼的过程中,判决倾向也是反复变化,一波三折。业界、法律界对这件事有不同的意见,法官们的投票结果也是 6:2 ,并非全票支持。欧美国家采取判例法,有了这个判例,之后类似的案件就会遵循这个原则。
有一些应用的编程接口是有价值的,该怎么保护是一个很复杂的问题,究竟是用专利的方式保护,还是用 Copyright 版权的方式保护,远没有定论。这是一个法律问题,也是一个软件道德问题。
邹欣:在这次判例以前,也有过类似的争论。当年,围绕图形用户界面是不是专利这个话题,就已经讨论过一次了。
和 API 接口类似的,还有一个叫设计模式。我们提到「工厂模式」,就能立刻知道这是一个单列,如果不能用「工厂模式」,就必须另起一个名字,日常的沟通交流反而不方便。API 也一样,当一个请求是 Authentication(身份验证),大家会知道它有典型的返回,知道这个模式可以承接。
以汽车为例,大家学车的时候知道左脚是离合,右脚有刹车和油门,如果把这个当成专利,其它车不能这么设计,不同的车要用不同的脚操作,那还怎么开车呢?每辆车都必须不一样,这对于汽车行业也是一个巨大的内耗,没有必要这么做。
同样,编程序的时候,大家也不希望每个程序的模式必须不一样,这是违反自然规律和发展规律的。如果在内部实现时把创新隐藏在模式里面,模式可以自由的使用和传播,模式内部实现创新。这样区别之后,就能有利于创新,也有利于社会的发展。
除了 UNIX ,很多操作系统都是经验丰富的老程序员开发出来的,为什么他们没有经历 35 岁危机?当前国内做操作系统会和之前、和国外有什么不同?
蒋涛:前段时间,Python 创造者 Guido Van Rossum 发推特宣布加入微软,Anders Hejlsberg 也在评论中表示期待和他一起工作,这两个人加起来 100 多岁了。
开发系统和架构,需要有经验的程序员。Ken Thompson 发明 UNIX 的时候算比较年轻,但那时候计算机也刚出来没多久,所以他在计算机领域也算老前辈了。
所以说「家有一老,如有一宝」,老将更适合做有价值的事情,而不是适应新的潮流。世界上的编程语言有几百种,为什么还要发明新语言?为什么还要造一个新的轮子?是因为每一种新语言都有它想要解决的问题。
我们应该培养更多钻研底层技术的程序员,让有经验的程序员,来做这些更有价值和意义的事情。现在国内的大公司慢慢地意识到这一点,都在做一些这样的工作,往架构层和比较深的层次去做。
操作系统和语言这样的大事,不可能一次就成功,100 种新语言里可能只有 1 个成功。学术界和工程届也是这样,要把科技创新的机制建立起来,利用老同志们的经验,也让年轻人能够自由发挥。
魏永明:现在的操作系统和七十年代的 UNIX ,有着巨大的不同。操作系统的概念,慢慢在外延。
在 UNIX 时代,核心 Core 加上一套工具就组成了一个操作系统。Windows 和 Mac OS 后,操作系统有了图形界面,后来还有 Android 和 iOS 这样的移动操作系统。
一个操作系统之所以区别于另外一个操作系统,是因为两者在编程语言和 API 上有区别,然而这两点都无法用专利版权保护。
曾经移动端的智能操作系统有三个:Windows Mobile、Android、iOS。Android 的编程语言是 Java,iOS 之前是 Objective-C,现在是 Swift,它们的语言不一样,API 也不一样,所以是两个完全不同的操作系统。
中国要发展自己的操作系统,就得从编程语言这样基础的东西做起,操作系统和编程语言其实是同根同源的。
技术管理的平衡之道
IT 公司的人才管理,即要给员工自由,鼓励创新;也要保证制度规范,稳定产出;该如何平衡两者?
邹欣:从 UNIX 诞生背后的贝尔实验室来看,它的管理有一点很重要,就是没有「微观管理」,这也是成功的研究院的特性。当年我在微软研究院时,领导就说,成功的诀窍就是招最优秀的人过来,然后把他们分散开,Get Out Of The Way。
优秀的人知道自己该干什么,给他自由让他放手做就可以了,当然同时也要给他钱,给他一定的资源。
管理中有些 KPI 是至上而下的,有些从市场来,有些从友商竞争中来,还有一些是员工自发形成的。如果研究院里有一些优秀的人,他们发自内心想把工作做好,就会激发出好的环境,自然而然大家就会做出好成绩。
还有一个与贝尔实验室齐名,甚至更有名的 Xerox PARC(施乐帕克研究中心),也是离公司和管理层很远。Xerox PARC 每周五下午有一个讲座,让一个人来介绍自己正在做的东西,下面坐着一群有名的科学家,可以自由挑战。
这个活动会激发每个人做出优秀的工作,如果只做平庸的事情,搬运别人的劳动成果,就没法上去讲。
许多人把 R(Research)& D (Development)分开,认为研究和生产是两个方向。比如画画,有人画出一幅蒙娜丽莎这样的名画,不能批评他用了 5 张草稿纸,太浪费,得控制在 3 张草稿纸内才是好的,这是不对的。
研究要允许失败和探索,但公司的商业目标也要实现,技术管理者必须有智慧分清楚这两者。
蒋涛:管理上选择自由还是严格,跟当下的科技背景有关。UNIX 诞生在创造的时代,目标是探索未知,探索未知要给予较大的自由度,因为不知道会发展成什么样子。
有一本书叫《观止》(《Show stopper》),它的价值非常高,记录了 Windows NT 的诞生过程。如果把《UNIX 传奇》和《观止》这两本书对比看就能发现,UNIX 是在轻松的环境自由创造,但 Windows NT 不是。
针对 Windows NT,当时比尔·盖茨目标很明确,就是要做一套工业级的图形化操作系统,能兼容各种系统和设备。因此微软用了 5 年时间和几亿美金,不仅挖来了彼时号称是硅谷最牛的 Kerner 开发者大卫·卡特勒,还用严格的 KPI 管理 200 多名技术人员,最终才取得成功。
所以说,在科技的创新、应用和竞争阶段,管理的方式都是不同的。现在中国就面临着多种维度的共存,既有创新领域,也有应用领域,还有竞争已经很激烈的领域。
大家读完《UNIX 传奇》这本书,就会知道,怎么在高自由度的环境创新?哪些领域应该鼓励自由?哪些地方要比竞争对手跑更快,提高市场占有率。
回看 UNIX 的发展史,通读《UNIX 传奇》这本书后,您有什么样的感想?
邹欣:UNIX 是经历了失败后的两个人,在一个快废弃的机器上创造出来的。这说明即使环境艰苦,只要让优秀的设计人员来做,摆脱外界干扰,一样能做好。
UNIX 非常简洁,有一套自己的设计理念,这非常了不起。一件事情不需要做太多太复杂,而是通过积木式的组合,或者管道线的方式把问题解决。
举个例子,UNIX 中大部分的文件 block 都在 4k 以下,那如何用 awk、sed 或其它 shell 命令统计出当前 UNIX 系统所有文件大小的分布情况?这个问题发在了 CSDN 的问答社区,有一个同学写出来一个非常短小精悍的命令,只用三行就把这个问题解决了。
当年在《中国计算机报》上,经常有这种用一行程序解决一个重大问题的题目,更多有趣的例子,大家可以去《UNIX 传奇》里找,里面有专门讲 UNIX 的哲学理念,一些小工具组合运用的方法。当你真正把问题解决,而且是用很简短的命令解决的,就会感受到美感和爽感。
魏永明:UNIX 的诞生,并非一蹴而就,它之前经历过许多失败,开发的过程中也遇到了各种困难,但最后还是成功了,当时的一些概念也保留到了今天的操作系统。
许多开发者并不了解操作系统,因为它太底层了。做 Java 或 JavaScript 不会考虑这些东西,但如果再往下看的时候,会发现最早的技术,发展到现在仍然是编程的重要思想。
国内做基础软件没有这样的历史条件,现在大部分的技术软件,都是从海外尤其是美国基础计算机科学家和工程师发展出来的,国内的开发者只不过是在上面添砖加瓦而已。
在这种情况下,中国的技术软件要突破,造轮子是有必要的。多做一些基础性的东西,不停的造轮子,这次是方的,下一次会越来越圆,也越来越牛。
蒋涛:现在的中国在计算机应用层有很多开发者,但懂操作系统的专业人员还很少,需要一批钻研系统的人。越了解技术演变的历史,对系统的理解就会更深刻。
过去在国内做系统基础软件很困难,CSDN 在 2004 年曾收购 ChinaUNIX,想推 UNIX,但是很困难。现在时机到了,我们进入一个新技术范式的时代,类似于当年的 PC DIY ,一切智能硬件都可以加上 IOT OS ,这个 OS 可以重新改造。
《UNIX 传奇》这本书在中国应该给两种人看:
一种是想做程序员的人;看完后他会发现做一个系统很酷,因为是在创造一个平台,别人都要按照他制定好的规则往前走,这种感觉非常美妙。
曾经有个年轻的作者写了本书叫《自己写个操作系统》,Ken Thompson 趁老婆带着孩子回娘家,用三周时间就把 UNIX 操作系统写出来了,写操作系统没想象的那么难。
第二种是负责科研的部门领导;怎么做出中国的贝尔实验室?要不要成立中国的国家半导体实验室,搞自己的基础创新?
为什么贝尔实验室在当时的条件下,能创造出这么多的技术?怎么创造一个好的环境,让这些聪明的人,在没有 KPI 的考核下,做出有价值有意义的事情?中国非常需要这样的环境,所以这本书在中国出版的价值比在美国大。
给当代的开发者、《UNIX 传奇》中文版的读者的一句话?
蒋涛:看《UNIX 传奇》,学习开源系统,进入开源社区。
魏永明:了解计算机科学的早期发展历史,在这个基础上,走好自己的路。
邹欣:年轻的时候,多做有挑战的事,如果每次都想安稳,会错失很多机会。