Cover image of 软件那些事儿
(22)
Education
Technology
News
Tech News

软件那些事儿

Updated 15 days ago

Education
Technology
News
Tech News
Read more

程序员的睡前故事

Read more

程序员的睡前故事

iTunes Ratings

22 Ratings
Average Ratings
21
0
1
0
0

爱你

By 尼比鲁星大使 - Apr 28 2020
Read more
来自尼比鲁星的粉丝

非常感谢播主

By madjonr 。 - Jan 31 2018
Read more
现在能沉下来并共享自己知识的人越来越少,非常感谢播主的大公无私。

iTunes Ratings

22 Ratings
Average Ratings
21
0
1
0
0

爱你

By 尼比鲁星大使 - Apr 28 2020
Read more
来自尼比鲁星的粉丝

非常感谢播主

By madjonr 。 - Jan 31 2018
Read more
现在能沉下来并共享自己知识的人越来越少,非常感谢播主的大公无私。
Cover image of 软件那些事儿

软件那些事儿

Latest release on Oct 19, 2020

Read more

程序员的睡前故事

Rank #1: 174. Red Hat(3): 卖软件就是卖品牌和服务

Podcast cover
Read more

如果本文有错误,只会去 lmzdx.com 上修改,这里只能修改1次,并且只能是5个字。根本不够改的。

每家品牌都有自己的市场定位。在Red Hat成功之前,软件这个行业已经有了巨大的统治者,比如IBM,HP,Apple还有Microsoft这些公司在当时已经是巨无霸了,尤其是对于一个当时只卖图书和软件的小门头房,要想在软件这一行中取得一席之地,那是非常的困难的。因此,如何精确的定位自己对于竞争的成功是至关重要的。

好像在营销界有一本书叫《定位》,就是说的营销策略,我读过,但是自己没什么实际操作的概念,毕竟一个钢管舞演员,没有必要定位。但是,我还是看看别人的公司,然后看看别人是如何定位的。我觉得每一家公司,成功以后,至少有自觉或者不自觉的给自己定位了,否则是不可能在某个领域取得成功的。这次就以Red Hat为例,来说明一下定位的重要性。

其实不止Red Hat,很多公司都有自己独特的定位。比如说,如果有一家公司定位于和假医院假药公司合作,赚病人救命的钱。这个就是定位,那么这家公司的核心业务就是为这个定位服务的。有了这个定位以后,就能解释这家公司的许多行为了,比如说,这家公司会在网上撒播假信息,然后误导你去医院,比如你脸上长了个粉刺,给你说成是皮肤癌,然后把你吓的去医院。但是,这个还形成不了直接的利益,因为就算是你害怕了,还可能去正规的医院啊。所以,为了形成闭环,还得有自己的地图和导航软件,比如说有个长了粉刺的家伙,在网上搜了一下,给吓坏了,然后去搜医院,一搜,导航软件故意给你指定一个合作的假医院,然后用户就去了。但是,还是有可以让这个人去的是真医院,比如,这个家伙出门打车,人家出租车师傅说,小伙子,你去的这个地方不是个正经医院,这下要到手的钱又打水漂了。所以,这个公司正是因为这个定位,一定要研发AI,尤其是自动驾驶的汽车,这个自动驾驶的汽车,没有司机啊,所以,只要上车,不管你说去哪儿,直接给你拉到合作方的医院,因为大家都可能是他其它产品的客户,比如他们检测到你2年前搜过肚子疼,那就是胃癌前期,如果6个月前搜过头晕,那肯定是中风前期,然后自动驾驶的汽车会在汽车进医院的时候发个信息给医院,说一下来货了,大数据分析一下,能从这个货身上刮下多少钱来。不管有病没病,至少你得手术台上让人切一切,然后这个小伙打完麻药,躺在手术台上,然后发现主刀医生是山东兰翔学厨师的前女友,举着一把刀在对他笑,这种医院,各行各业的人都能在这里发光发热。切的时候结合前女友的心情,用大数据再分析一下,要不要通知殡仪馆和火葬厂。如果病人人不够多,这家公司可能会投资餐饮行业,没病也得吃出病来。当然了,我只是为了说明定位这个例子,我觉得应该不会有这么黑心的公司,只干坏事,不做好事。

Red Hat当然是另外一种类型的公司,这个公司切切实实的做了不少好事,但是在初期的时候,Bob Young还是花了不少时间来给Red Hat公司定位。因为有卖软件和图书的经验,Bob Young为了赚钱,对消费者的需求还是挺有一套的。他发现了,当时对这些软件行业的巨头最大的抱怨是买了软件不能修改,因为没有源码。如果要找突破口的话,这是一个很重要的突破口。要宣传Linux的开放源代码以及可定制性。与其它公司的UNIX和Windows这种操作系统不同,Linux是另一个维度上的软件,这个新的,叫做Red Hat的操作系统把对操作系统的控制权交给了用户,而不是一个专有版权的,只提供二进制的操作系统,这样,Red Hat就有机会获得这个市场的统治地位。

Bob Young说,Linux就像是汽车一样,没有人真正的开一台品牌叫”汽车“的汽车,广义上来说,汽车不是一种品牌,而是一个行业。Linux也是,没有人用Linux,而是用的某一种品牌的Linux。比如说,我们不开汽车,我们开的是宝马,本田。而宝马和本田都是全球采购东西,自己制造的东西极少,比如从Dupont购买油漆,从Michelin购买轮胎,从TRW购买安全气囊,然后把汽车组装起来以后,把自己的标放在车上,然后给你担保,还有一个遍及全球的售后网络。

Red Hat也是如此,Red Hat自己写的东西极少,从Apache获得web服务器,从GNU获得编译器,从不同的组织获得编程语言。然后Red Hat把这些软件组装起来,就像宝马和本田一样,给你一个证书,担保这些东西不会有问题。就算所有的零件都可以采购,也没人愿意自己亲手去装一台汽车。同样,就算可以到处找免费开源的代码做一个和Red Hat一模一样的操作系统,也没有多少人愿意这么做。当用户买了汽车以后,如果对原厂的配置不满意,可以自己改装一下,比如说改一下轮毂,16寸的改成19寸的,显得这车比较牛一些。当然,这个大改装在中国是不行的,如果改装太大了,自己又不认识人,年检可以就挂了。小改装没事,比如我的五陵宏光S,就在前挡风玻璃上改装了一下,贴了一张财神的画像,希望能保佑我发财。这个可以过年检。

如果有客户买了Windows或者Unix,要满足自己的要求,可能不是很方便。但是你买了Linux,随便你改装,并且,你改装好了以后,还可以卖给别人。因为用户有有修改Red Hat源代码并且不通知Red Hat公司的权力。这个和汽车一样,你买了就买了,你可以改装以后,再卖给别人,没什么问题。这个是非常重要的,尤其是对一些大型的商业机构或者国家机构。Bob Young举了一个例子,Fermilab,也就是芝加哥的费米实验室要用到集群计算机,市面上所有的操作系统都不支持他们特殊的需求,就找到了Red Hat,于是联系了几次,就购买了Red Hat作为Fermilab正式的操作系统。这个当然是个大事,Red Hat有事没事就拿出来说说,Fermilab都买了,说明Red Hat还是有很大实力的。后来NASA也用了,这下让Red Hat历害了。

Bob Young虽然没有写代码的经验,但是他很早就预言了UNIX会失败,Linux会成功,这两个操作系统从软件层面上,差距并不大,之所以后者会成功,是因为Linux采用了GPL(通用公共许可证),这个许可证是开源软件的灵魂,正是因为这个许可证,让Linux这样一个协作开发项目非常的有效。他说,其实Linux也好,Unix也好,都是一个人开发的,Linux是Linus开发的,Unix最初是由Ken Thompson开发的。(多说一句,顺便做一下广告,我有一个知识星球,我在里面写Unix的事情。如果大家对Unix,Linux以及Mac还有后来的iOS,Android的历史有兴趣,可以去订阅。)

Bob Young说,无论Unix还是Linux,内核的部分只占很少的代码量,之所以这个能发展起来,完全是靠大家共同努力,像Linus和Ken Thompson这样的人,作用巨大,但是他们也只是启动这个项目的人,为什么Unix后来失败了呢?是因为没有选好类似GPL这样的协议。UNIX是靠大家帮助的(我在我的知识星球里有写哪些组织写了哪些代码),但是,这些后来帮过UNIX的大学和组织,突然有一天收到了一封信,说,你们要为UNIX付钱,否则不允许再使用了。这当然让这些大学感到非常失望,因为代码都是他们写的,他们参与了UNIX的成长,并且提供了大量的代码给UNIX,结果还要付钱。于是,UNIX的人心就散了。

Linux和UNIX的情况差不多,Linus开发了内核,但是这个内核有大量的热心人帮忙写的。GPL可以保证所有人的修改都会被公开,正是因为有GPL,所以Linus不会像UNIX做的那样,突然写一封信说,如果你再继续用Linux,可就得收钱了。Bob Young说,他觉得这个GPL协议太好了,如果Red Hat对Linux有所创新,和我们一起用Linux的人也能用到这些创新,如果竞争对手对Linux有创新,那么Red Hat公司也能用到这些创新,这种强制性的开放源代码能让所有用Linux的公司都能第一时间用到最先进的技术。这是一个强大的力量,如果你也做开源的Linux发行版,当市场上出现了一种更先进的技术的时候,如果你不采用,那么客户就不会去选择你。比如在1997年的时候,C语言的库函数glibc要更新,Red Hat首先选择了更先进的版本,但是兼容性不如旧版本好。做出这一得起的都以后,其它的Linux发行厂商都选择了快速跟进。

如果在UNIX上,那是不可思议的。所以,后来的UNIX分裂的非常严重,那都是各个厂商自己修改了以后,不公开,然后互相之间的差距也就越来越大了。当然,现在仍然有,只是越来越少的人质疑Linux开源的模式,但是早在1998年,Bob Young就预言,商业公司只要尝试过开源的好处,就不会再去选择不开源的系统了,就好像去过自由世界的人,就不会真正爱上专制一样。他还预言,以后所有的系统都会是开源的模式。我觉得真有点说不好,也许Windows以后也开源了 :)

Oct 24 2018

26mins

Play

Rank #2: 7.苹果和谷歌的天王山之战-智能手机背后的故事(2)

Podcast cover
Read more
介绍: 本期要点:
- 苹果的玻璃是谁制造的?
- 电容屏和电阻屏的区别是什么?
- ARM,高通,三星,苹果有啥关系?
- 苹果和谁合作制造的电容触控屏幕?

Jul 01 2016

17mins

Play

Rank #3: 21. "雅虎" 身与名俱裂?不废江河万古流

Podcast cover
Read more
向雅虎这个互联网的老兵致敬!

Jul 28 2016

16mins

Play

Rank #4: 60. 死皮赖脸还是有用的

Podcast cover
Read more
我在网易云课堂上的课《iOS从入门到放弃》上线了

Sep 21 2016

19mins

Play

Rank #5: 74.索尼和任天堂,最熟悉的陌生人

Podcast cover
Read more

我们都知道,我们现在使用的公元纪年法,比如现在是公元2016年,之所以用公元纪年,是因为基督教的原因。在罗马教廷时期,有个神学家就建议把耶稣出生的那一年定位元年,以取代罗马教廷所采用的历法,后来这个建议被采纳了,因此现在我们都使用公元纪年,实际上是耶稣同学很牛逼。当然了,提建议的这个人虽然想法挺好,但是数学是语文老师教的,他算错了时间,按照现在比较权威的说法,耶稣实际上应该是公元前4年出生的。不管怎么说了,耶稣都没反对,我们这些凡人也就将错就错的用下去。因此就有了公元元年。

在物理界,也有个公元元年。物理学的奇迹年是1905年,当时一个26岁的年轻人,白天在伯尔尼专利局无所事事,晚上和老婆也没什么话好说,因为他们之间的爱情结晶不幸夭折了,一个女儿,这件事直接导致这对年轻的夫妻之间的感情急转直下。这个年轻人叫爱因斯坦,他在1905年,写了5篇论文,按照后来一些人的说法,这5篇论文即使不能获5个诺贝尔奖,获3个应该问题不大。当然了,我懒得去纠结这个会获几个诺贝尔奖,我肯定一个都获不了。不能去争论这种皇上不急太监急的事情。就因为这5篇论文,1905年就被称为物理元年。

我之所以说了这两件事情,一个是公元元年是因为耶稣,一个是物理元年是因为爱因斯坦。主要是为了引出一个话题,我自己定义了一个家用游戏机的转折年,我这种方法其实是扯虎皮拉大旗,因为贸然说一个家用游戏机转折年,很多人就觉得太突兀了,这样先扯个大旗,就显得不那么突兀。我要说的家用游戏机转折年是1993年。

这一年发生了几件重要的事情,类似于《万历十五年》吧,只是对游戏机市场来说,这可不是风平浪静的一年,这一年简直可以用惊天动地来形容。首先,日本的松下公司和美国的3DO公司共同发布了一款新的游戏主机,名字叫3DO,让霸主任天堂感到无奈。随后,曾经亲密无间的一对好基友任天堂和Sony公司在这一年彻底决裂,只是因为Sony也要做自己的游戏机,任天堂感到痛苦。在北美市场,世嘉公司对任天堂发动了神风敢死队一样的自杀式袭击,世嘉公司在1993年以赔钱赚吆喝的必死心态,游戏主机成倍增加,年度利润却颗粒无收。所谓愣的怕横的,横的怕不要命的,世嘉以不要命的心态和任天堂玩,结果把任天堂的根基给动摇了,当年,任天堂首次利润为0,这个时候,任天堂举目四望,除了自己,周围全是虎视眈眈的敌人。要不是好莱坞的环球影业和任天堂合作拍摄了一部《超级马里奥兄弟》的电影,任天堂这一年都很不开心。这部电影的票房接近1亿美元,在当时已经是了不起的成就。

任天堂的好运,在这一年也神奇的被用完了,随后两年的苦心研发,任天堂于1995年7月21日发售了Virtual Boy主机,这部主机是由任天堂著名的大将横井军平主持研发,并且在这部主机上推出了两部以马里奥为主角的游戏,一个是《马里奥网球》和《马里奥冲击》,但是自从1993年以后,幸运女神没有站在任天堂这边,这两部游戏以不足10万份的惨淡销量收场,这个销量,甚至不足曾经热卖的《马里奥兄弟》几周的销售量。

任天堂的硬件研发能力之弱,几乎是人尽皆知的事实,在几个硬件大厂的眼里,任天堂的硬件研发能力接近于没有。任天堂当然也直到自己软件强,硬件弱的毛病,因此他每一代主机都是和其它的硬件厂商深度合作,说白了就是他当甲方提出要求,对方当乙方实现要求。比如说,日本sony的硬件研发能力超级强大,任天堂自然也就和sony走的很近,比如任天堂红白机上的音源芯片就是sony给任天堂研发的。当时,任天堂也着手和sony研发以光盘为载体来发布游戏,并且,任天堂的宫本茂同学还试着做了几款光盘版的游戏。

但是,sony是世界顶级的硬件厂商,怎么可能会让老任带领着只赚点儿硬件费用呢?风水轮流转,皇上的宝座人家大sony心里也天天想着坐一坐,不能光让你任天堂一个人坐,坐久了也得起来活动一下,否则容易长痔疮。然后,消息灵通的任天堂知道了sony心里的小九九,朋友做不成了,马上撕破脸不和sony合作了,光盘方面改找飞利浦合作,芯片方面改找美国的SGI,也就是硅谷图像公司来合作。当时光盘已经是主流,一个光盘的容量是700M左右,像sony这种牛逼硬件厂商,可以把光盘做到容量达到850M。不过,任天堂不是和sony闹掰了么。任天堂选择使用MASK ROM来作为游戏载体。嗯,光盘的容量至少700M,这个MASK ROM最多只能几十M。这个决定在当时除了任天堂,都觉得是自掘坟墓。当然,任天堂这次又雄起了一把,在所有人都不看好他的时候,他又成功了。这个故事留着以后再说,因为离他再次成功还有好几年呢,故事的这个阶段,他还活在别人怀疑和自我怀疑之中。

再来说说世界级的家电大厂sony公司,很可能一开始就准备扛着红旗反红旗,自从傍上了任天堂这个游戏界的大款以后,sony很多可能就是想着依靠老任反老任,只是自己的如意算盘被老任提前发现了。其实也不能说老任眼光毒到,因为当时没有进入家用游戏主机的家电巨头只有一个西门子,一个sony,其它的全都进场了。只要稍微动动脑子,也应该知道,身边的sony怎么不会动心思呢?但是任天堂在游戏主机行业,还是挺能打的,当时可以说来一个灭一个,所以,当时有个说法就是游戏市场的规律和其它市场不同,游戏市场的规律是,谁都可以做游戏主机,但是最后任天堂要赢得最后的战斗。但是,sony和其它的厂商有点不同,为啥不同呢,不同点是任天堂和sony曾经是亲密无间的朋友。所以说,背后捅刀子,一定要找最亲密的人去捅,否则不能一击毙命。为了避免有人背后捅刀子,有两种方法,一种是是个大好人,另一种是完全没有朋友。我本人大概是属于没有朋友的那一类吧,所以不怕别人背后捅我。

任天堂不同,他有朋友,他最亲近的朋友之一,sony公司,或者说曾经最亲密的朋友之一。之所以是朋友,并不是说这两家公司情投意合,主要还是有共同的利益点。这个又得说一下当年游戏机的发展史,在1988年的时候,市场上破天荒的出现了一个神奇的东西,世界上第一台配备了光驱的游戏机周边产品,名字叫PC Engine CD-ROM System,以后我简称PCE。在此之前,比如任天堂发布游戏的时候使用的是ROM,第一代任天堂的大金刚游戏的ROM只有128Kbit,128Kbit是什么概念呢,根本存不下一张苍老师的写真照片。当然,如果要增加容量,实际上无限增加ROM的数量也是可以的,1个不行就2个,2个不行就4个。但是,成本将会是个大问题。然后NEC Home Electronics在1988年12月4日就发售了一款PCE周边产品,也是世界上第一台用于家用游戏机的CD-ROM驱动器。但是,价格相当的昂贵,1988年的时候,大概是日元40万日元,不知道大概相当于人民币多少钱,反正挺贵的。所以,这个CD-ROM基本上作为周边产品来发售,不会说直接给你装上一个CD-ROM驱动器,这会严重增加成本。

有了CD以后,游戏的视觉效果就变得非常好了,因为有很多容量来存储动画或者图片,声音效果也有了大幅的提升。然后任天堂当时的对手世嘉公司在1991年12月12日也对旗下的MD推出了一款CD周边产品,名字叫MEGA-CD。这台机器有创新,里面还内置了CPU,这样可以用光驱内置的CPU来解码,不会太影响主机的性能。不管怎么说,不管这个CD-ROM的周边产品销量如何,据说是普遍不太好。但是,任天堂没有,贵不贵是一回事儿,有没有又是另外一回事儿。以任天堂的硬件研发能力,他自己也鼓捣不出这么个东西。于是,就找来sony看看能不能帮兄弟一把。当时sony不但给任天堂的SFC音频提供芯片,任天堂家整套的开发环境,也是sony给他搭建的,制造马里奥等游戏的硬件软件平台完全使用sony家的NEWS工作站以及一些相关的软件产品。既然以前都是好朋友,人家都有CD-ROM等相关的配套产品,我老任是搞不定了,你sony帮我搞一个出来,这就是大名鼎鼎的PSX计划。PSX计划主要就是sony帮任天堂制造光驱设备,sony也有好处,好处就是,只要是这台光驱上的游戏,不用经过任天堂同意就可以发行。前面我说了,任天堂发行游戏,不管是自己的还是别人家的,都只能通过任天堂制造卡带并且由任天堂发行。但是sony这里开了一个口子,算是网开一面吧,说反正光驱也是你制造的,以后光驱版的任天堂游戏,sony你也可以发行,毕竟是蜜月期,啥都敢许诺,只是后来,任天堂又反悔了,觉得我操,让sony捡了个大便宜,光驱是发展的趋势啊。为了一时的快感,感觉把大好江山拱手让给了sony,他又反悔了,因此对PSX这个项目不冷不热的。sony也搞的很郁闷,昨天还好好的,今天你又整这些幺蛾子…

任天堂开始出去找小三了,找到的就是前面所说的飞利浦,任天堂想和飞利浦开发CD-ROM,不理sony了。sony彻底崩溃了,这翻脸比翻书还快,于是提出了严正的抗议,人家任天堂也倒是不遮遮掩掩,直接发表声明说,你们当然可以继续开发PSX这个设备,我们无法阻止sony继续开发,但是咱们当时签的合同里也没说开发完成了,我任天堂一定要采用啊,因此,你可以单方面继续开发,即使你开发完了,我老任也是不用的!就这嘴脸,反正谁说都有自己的道理,任天堂和sony都有一肚子苦水。幸好sony当时垄断了任天堂游戏机一些音频相关硬件的供应,否则任天堂比当时肯定更恶心。因此,这两家公司,也只是打打嘴仗,没有闹上法庭,反正大家也都知对方啥货色了,以前的怨气,都忍了下来。sony也是世界顶级的家电厂商,基本上啥都会造,反正现在也有一个任天堂不要的PSX项目,再研发一台游戏机,这个光驱项目就能派上用场了。任天堂的情况是有一台游戏机,但是缺一台CD-ROM的周边设备;sony的情况是,有一台还没有完工的CD-ROM设备,但是缺一台游戏主机。按照常理,一般的厂商,也就放弃PSX项目了,毕竟一个光驱外设,但是sony就是sony,非要为一台光驱设备配一台游戏机。这就类似于现在的苹果手机是可以支持宝马车的CarPlay,比如说,像土豪,有宝马车,但是缺一台苹果手机,那就买一台手机就是了,这个土豪就是当年的任天堂,还有个屌丝,卖了一个肾买了一台苹果手机,但是缺一台宝马车,这就是当年sony的情况。但是,sony竟然逆袭了!

任天堂的主机就一直没有光驱外设,即使当时几乎所有的游戏机都有了光驱的外设。然后,任天堂这个家伙开始不遗余力的损CD-ROM,我们甚至可以预测到任天堂肯定不会说CD-ROM的好话,比如速度慢,光盘边缘太锋利,容易让小孩子受伤等等,反正吃不到葡萄就说葡萄酸。暂且不说任天堂说的对不对,当然,我个人认为是不对的,尤其是光盘太锋利,容易让小孩受伤这种狗屁理由都能胡诌出来,如果当年任天堂能够稳住sony,共同开发光驱,我认为索尼和任天堂之间的平衡应该可以维持一段时间,因为sony不至于为了光驱设备制造出一个游戏机,sony和任天堂共同开发的光驱设备名字叫PSX,你看,曾经,PlayStation这个名字都有一半属于任天堂的,结果,他没有把握住机会,深爱的情人最后变成了刻骨铭心的仇人,就是这个仇人把任天堂拉下了马。

1993年,对家用游戏机是个变革的年份,这一年,围绕着CD-ROM,3D渲染技术以及视频播放,当时五大游戏厂商在这三个领域不停的推出产品,试图赢得用户,赢得市场。

在1992年6月24日,sony和任天堂彻底闹翻以后的一次会议上,当时的sony总裁大贺典雄正式决定启动PSX计划,当他把这个计划的名字打在屏幕上的时候,台下一阵骚动,大家都在窃窃私语的议论,这个名字和任天堂共同开发的光驱设备的名字是一模一样的。这个名字是为了纪念以前和任天堂的友情,还是为了自己心中那个找任天堂复仇的念头,这个只有大贺典雄自己知道了。大贺典雄随后介绍了一个年轻人,让他负责sony的PSX计划,他缓缓的走上讲台,他的名字叫久多良木健,属于他的时代已经到来了...

Nov 17 2016

25mins

Play

Rank #6: 编程语言特征产生的历史和我的视频终于通过了!

Podcast cover
Read more

RT

Jul 19 2018

24mins

Play

Rank #7: 163. Microsoft Office 之 开发Word 的故事(上)

Podcast cover
Read more

Aug 04 2018

27mins

Play

Rank #8: 105. 我认为SONY是个什么样的公司?

Podcast cover
Read more

介绍编程语言,软件和游戏背后的故事。

Jul 16 2017

34mins

Play

Rank #9: 52. 微软帝国(1):乱世重臣之大卫•科特勒

Podcast cover
Read more
微软的故事

Aug 31 2016

15mins

Play

Rank #10: 145. HP -- 硅谷诞生地 | 软件那些事儿

Podcast cover
Read more

RT 

Mar 20 2018

26mins

Play

Rank #11: 94.[人工智能01]机器学习的五个流派

Podcast cover
Read more

94.[人工智能01]机器学习的五个流派

Apr 23 2017

16mins

Play

Rank #12: 154. 你知道锤子科技门票捐给的OpenBSD是一家什么公司么?

Podcast cover
Read more

May 20 2018

25mins

Play

Rank #13: 81. 钻钻牛角尖:浏览器的工作原理(1)

Podcast cover
Read more

文 | 刘宝辰

我们每天上网,用的最多的应用软件之一是浏览器,我们用浏览器看新闻,看视频,基本上,只要是现在上网,大部分人都是使用浏览器。浏览器也有很多,但是,总体上分为四个半流派,第一个是微软公司出的Intenet Explore, 这个占有率很高,尤其是中国的市场上;第二个流派是谷歌公司出的Chome浏览器;第三个流派是Mozilla公司出的Firefox流派;第四个流派是苹果公司出的Safari;第五个流派是Opera基本上就是这些吧。

有同学可能问,我从来不用上面这些浏览器,我用的是360浏览器,QQ浏览器或者各种百度全家桶浏览器,其实,这些有中国特色的自主研发的软件,都是基于以上我说的那些浏览器来改版的。比如说加了一个外壳,让浏览器可以记录密码,同步书签等功能。我这次节目不做浏览器的测评,不评价哪个浏览器好用,主要是讲浏览器的一个工作原理。以前我做过一期,名字叫钻钻牛角尖,电脑开机开了啥。那一期是研究电脑开机的,结果,有人告诉我没必要这么复杂,装个360软件,就能加速电脑开机。而且我还和那个朋友争吵了一下,最后不欢而散吧。我这一期节目,没啥用处,即使研究浏览器的原理,也不会让上网速度变快。这只是一个程序员的怪癖,我就是喜欢研究这种东西。以后我还会讲各种音频格式之间的差别,各种图片格式之间的差别,各种视频格式之间的差别,还有各种自拍加的滤镜的工作原理等等,怎么说的,研究这个并没有卵用,只是我自己的业余爱好,希望不喜欢听的同学不要去留言说,你研究这个有啥用了,我也知道,真的没啥用。因为我上一次做电脑开机的那个音频,非得有人去问研究这个能让电脑变快么?如果不能,还不如装个360一键加速呢...

在这个节目里,主要讲两个浏览器,一个是Firefox,一个是chrome和safari和Opera。至于为什么把chrome和safari还有Opera放在一起讲呢?那是因为这三个浏览器用的是相同的排版引擎,是苹果的WebKit,是开源的。其实这个项目最初也不是苹果原创的,而是苹果基于另一个开源项目,那个开源项目是KDE的HTML排版引擎,名字叫KHTML,还有一个KDE的另一个Javascript引擎,名字叫KJS。苹果公司开始的时候是基于这两个开源项目,做出了自己的项目,名字分别是WebCore,这个对应于KDE的KHTML,另一个项目叫JavascriptCore,这个对应于KDE的KJS这个项目。这个两个项目的目的是可以移植到OS X系统上,毕竟人家苹果是商业公司,而且苹果做的事情非常的合乎法律,给KDE的KHTML和KJS也作出了不少的技术改进,然后KDE的这两个项目,也获益匪浅吧,起码开始的时候是这样。

如果用过苹果电脑的同学,尤其是早期的苹果电脑,苹果电脑上是没有一个特别靠谱的浏览器,这东西可能是不太容易做。苹果电脑上一度装微软出的InternetExplore 5浏览器,其实微软和苹果之间,有说不清道不明的爱慕关系,经常互相帮助,相爱相杀。苹果公司就基于这两个东西,然后就推出了自己的浏览器,也就是safari浏览器,,2003年发布的,safari浏览器。这个浏览器我用过,因为那时候我正在读本科,要去做实验,学校的实验室里新买了一批设备,这批设备需要处理数据的就是一台iMac,当年是新款的,那也是我第一次使用苹果电脑。刚开始感觉并不好用。现在记忆最深刻的就是这台苹果电脑,还有一台离心机,非常大的离心机,可能得有直径1米多,然后我有个同学突发奇想,把刚洗过的衬衫塞进去,想看看能不能把衣服甩干,然后甩了10来分钟,衬衫甩成了破布,已经不能穿了。实验室去了好几年,结果,就记住了这两件事情,一台苹果电脑,一个离心机,其它的都忘记了。

继续来说苹果,然后苹果对webkit的改进越来越多,和开源社区也就越走越远,再后来,就彻底分手了。这个分手只是和KHTML那个项目分手了,具体的分手过程,我记得KDE的一个开发者曾经写过一个文章,来吐槽这件事情,当年在开源届也算引起过不大不小的轰动,甚至让Apple公司吓得赶紧联系KHTML的开发者,看看还能不能复婚,别那么快离婚。后来KHTML这个项目确实又从Apple中接受了不少新的特性,来改进KHTML的渲染速度。但是,我猜测的一个原因,Apple是商业公司,KDE是开源组织,商业组织是向钱看,我说的向钱看是金钱的钱,开源组织是不太注重金钱驱动的,结果呢,这些开源的项目因为不赚钱,大家紧张了一阵子,又开始跟不上苹果的节奏了,因为商业公司的项目推进能力,远远高于开源组织,结果,最后还是闹分手了。其实,开源组织有时候吧,赚不到钱,只能兼职做做,很多时候项目的质量并没有商业公司高,在后来,Apple的webkit在很多方面全面超越了KHTML。当然,KDE也知道这件事儿,从KDE4.5开始,KDE就已经使用苹果的webkit这个开源组件,当然了,开源的那个KHTML还是继续开发,也继续用在KDE上吗。

苹果也在继续开发webkit,开发的成果也继续开源。可能有很多人觉得,苹果太尼玛封闭了,其实不是的,苹果是个商业公司,他肯定首先考虑的是商业利益,如果开源能获得巨大的商业利益,他肯定开源,所以,苹果开源了几个大杀器,黑科技。其中我知道的几个有前面我说的这个webki,还有一个大杀器是llvm,这个项目也极其重要,既然说到这里了,我就稍微的说一下,llvm呢,是一个开源的编译器项目,是C++写的。以前,包括现在,最重要的开源的编译器是gcc,就是理查德斯托曼做的那个gcc项目,曾经,gcc是开源届的核心地位,现在也差不多,因为几乎所有的开源软件,都需要使用gcc来编译成二进制代码,然后,这个组织脾气不太好,基本上处于那个地位,可能总是有缺点吧,而且处于核心地位,缺点也容易被放大,gcc可以说是在所有开源项目中,受到的批评最多的一个,比linux都多。但是,即使收到批评,你还不得不用它,苹果就是这样,给gcc捐献了大笔的钞票,没啥效果,因为有求于gcc的,可不止苹果一家。然后,苹果公司就搞了一个LLVM项目,来代替gcc在开源中的地位,LLVM是一个简称,全称是Low Level Vitual Machine,全称没啥人知道,我也是google一下,才敢写在这里。然后,LLVM太重要了,还获得了ACM颁发的一个大奖,来奖励Apple开源的这个LLVM项目。然后Apple率先垂范,把Gcc从默认编译器的位置拉了下来。因为Gcc这个项目组,和其它大的开源项目组,之间的龌龊事情也不少,比如FreeBSD项目也是早就看Gcc不爽了,但是,苦于自己没有编译器,只能忍气吞声,结果LLVM一出来,FreeBSD马上就把GCC给集成进来的,然后,一个以前看起来非常狂妄自大的计划被FreeBSD提上了日程,不光gcc,而是要把所有GNU组件都替换出来,然后就有了lldb, libc,compiler-rt这一系列项目,个人觉得,以FreeBSD社区那种比较高贵的气质,完全替换掉GNU项目,是有很大可能的。这一切,都是Apple花了5年时间,搞出来了一个LLVM,然后把这个编译器项目开源的原因。


llvm的logo是我最喜欢的logo

稍微跑了一下题,拐到编译器上了,再强行拐回来,继续说Apple这个webkit。苹果继续改进webkit,然后webkit也就越来越好用,速度越来越快,然后呢,另一家公司叫Google,也打算做个浏览器,二话不说,直接把苹果开源的这个引擎webkit拿过来就用,这是合乎法律的,因为开源么。然后一贯嘴上说不作恶的google公司实际上恶心事儿也干过不少的google和一贯表面非常高冷但是私底下对政府部门低三下四的apple公司又杠上了。chrome继承了apple公司的webkit,然后加以改进,把认为不行的代码丢了,尤其是javascript的部分,用了自己引以为豪的v8引擎,这个v8引擎的横空出世,让很多人也是惊讶的不行,然后javascript开始从前端到后段,差点儿通吃。让不少程序员惊呼,我操,js这是要上天么?然后,后来发现这种担心是多余的,因为前段进入了百花齐放的时代,每年都会出现至少365个javascript写的库,每天一个吧,然后循环往复,至今已经持续了好几年了。这个话题太容易引起争端,那个前端库更好呢?这个得看情况,因为一旦争论结束,又会出现更多新的js库,没办法,程序员就是这么搞笑,还是老老实实的用php这个世界上最好的语言靠谱。

然后google的chrome是世界上占有率第一的浏览器,由于在中国某种神秘的力量,chrome的占有率很可能是倒数第一,如果你看到有人用chrome,很可能他就是个程序员。接下来,还有一个更小众的浏览器,他的名字叫Opera,据说已经被中国的360公司收购了,这家公司浏览器的引擎,也是webkit。因此,chrome/safari/opera,这三个浏览器,在渲染方面,大同小异,来自一个妈。

另外一个分支就是大名鼎鼎的火狐浏览器,Firefox,这个在国内可能用的人也不多,如果你看到有人用firefox,可能,也是个程序员,如果你看到桌面上有三四个浏览器,并且同时使用,那100%是个前端程序员,尤其是你看到有人还在测试Internet Explorer 6这个浏览器,那100%是个给中国国企开发软件的前端程序员,中国国企和IE6这个浏览器,已经水乳交融,今生今世都不再分离了,即使这个浏览器已经15岁了,15岁,在IT行业,和永远一样远。但是,大型国企爱IE6,比如说,在2016年,我看到过某大型钢铁企业,赫然写着网站要支持IE6,真是让我百思不得其解的一件事情。火狐浏览器用的引擎的名字叫Gecko, 这个软件,曾经一度讨论要不要也把引擎换成webkit,最后,还是继续用这个Gecko,在英语中是壁虎的意思。好了,背景就介绍到这里,微软的不考虑了,他有自己独特的渲染引擎,但是,可以研究他家引擎源代码的,就是微软的人,网上可以找到的材料并不多。这里只讲这两个引擎,一个是webkit,用这个引擎的有三个浏览器,chrome,safari和opera;还有一个是Gecko,用这个引擎的是Firefox。·

这些浏览器虽然各不相同,但是作用是类似的,就是能把你要求的东西显示出来,并且,不同的浏览器,显示的样子大同小异,稍微的有一些不同。因为不同的厂商出品的浏览器,是有一些细微的不同。之所以能显示的大同小异,是因为,这些厂商都要遵守一个协议,这些标准就是HTML和CSS,这些标准由一个公益组织来管理,这个公益组织的名字叫W3C,中文名叫万维网联盟来维护。我们上网的过程,就是把HTML和CSS的内容从网站上下载下来,然后将这些内容解析以后,显示在屏幕上。这个过程,需要用到的核心技术就是我上面所提到的两个引擎,webkit和Gecko的工作。负责显示请求的内容,把网站上下载下来的HTML和CSS,解析以后,展现出来。我对这个过程非常的好奇,好多年前,我就对浏览器是如何工作的非常的好奇,然后就研究了一下,自以为可以把自己给糊弄过去了,因此,我就说一下那两个引擎的工作原理。

主要的流程是这样的,显示引擎会从网络层请求需要显示的文档,然后引擎开始工作。因为所有的网页都是HTML和CSS文档,引擎开始解析这个HTML文档,将整个文档解析成两棵树,一棵树叫内容树,这棵树上的节点是HTML的标记。还有一棵树叫呈现树,这棵树势解析样式元素,呈现树是节点的样式,比如字体的大小,颜色等等。呈现树主要是带有视觉属性比如颜色啊,尺寸啊,背景等等的一些矩形,这些矩形呢,就按照一定的顺序显示在屏幕上。当这个视觉效果显示出来以后,也就是一些矩形。再进入下一个阶段,就是将内容树的节点,计算一个坐标,每个节点都有一个独一无二的位置。有了这两个信息,再然后就是根据这两个信息,把内容绘制到屏幕上,引擎会遍历整棵树,然后将树上的每个节点,都画在屏幕上。


web browser architecture

为了能有更好的用户体验,引擎肯定是将内容以最快的速度画到屏幕上,而不是等所有的内容都下载完毕,才开始绘图,那样是非常影响用户体验的。所以,我们经常会碰到这种情况,某个地方的图片还没有显示出来,只显示一个空白,文字比图片更快的显示出来。这是一种特征,不是bug。引擎不是等所有的HTML文档都解析完毕以后,才开始绘制,如果那样,碰到一个网速很慢的,网页很大的,黄花菜都凉了,那样会非常的影响用户体验。正确的展示流程是,有多少显示多少,只要有内容过来,就赶紧的先给用户看一点,不必等所有内容都下载完成。

那是不是webkit和Gecko是一样的呢?当然不是一样的,如果是一样的,那何必还要两个引擎呢?但是这两个引擎所采用的方法肯定不会有质的差别,如果有质的差别,两个都是开源的项目,那开发人员早就抄袭了,显然,这两个引擎所采用的方法大同小异。接下来呢,我要具体的描述这两个引擎所采用的方法。

在讲技术之前,先得讲一个网页的技术,叫DOM,这个做前端的程序员肯定都是知道的,Web就是基于DOM的,比如说现在前端用的最多的一个javascript库叫jQuery,这个库本质上就是一个操作DOM的工具,这个库现在是越来越大,1.8的时候,原始大小200多K,优化以后也得100来k,其实这样挺大的,尤其是考虑到大部分人用jQuery就是实现了1-2个效果,结果让自己的网页增加了100多K,想想我这个不是前端的程序员,就很不爽,当然也有解决方案,比如zepto.js就是解决这个问题的,只增加了20多k。那唠叨了这么多,到底什么是DOM呢?这是一个英文的缩写,全称是Document Object Model。我们可以把DOM看作是节点,每个节点就是一个HTML的标签,那如何解析成树呢?

这就是一个编译原理的问题了。还记得前面我讲苹果开源的那个LLVM么?那就是编译器,因为我试图把这个问题讲清楚,起码能加深我自己的印象,这次的时间又到了,下次,我要讲如何把HTML文档解析成一棵树,期间会用到编译器的知识,就是解析器和词法分析器。好了,下次再见。如果你喜欢我讲的这种钻牛角尖的内容,欢迎关注我的微信公众号——软件那些事儿——我这个公众号不扰民,每周推送一次,每次的观看量大概是300次左右。

Dec 24 2016

25mins

Play

Rank #14: 191. Google公司创始人小时候的故事 | 软件那些事儿

Podcast cover
Read more

Feb 27 2019

27mins

Play

Rank #15: 35. Linux传奇(2):Linus的童年

Podcast cover
Read more
Linus的童年

Aug 11 2016

14mins

Play

Rank #16: 61. facebook(1):哈佛高材生

Podcast cover
Read more

Sep 25 2016

16mins

Play

Rank #17: 118. 现代CPU之父(下)

Podcast cover
Read more

Sep 30 2017

26mins

Play

Rank #18: 复刻版2. Java语言的前生今世(2)

Podcast cover
Read more

这一期以前没有文字,因为我把文字搞丢了,今天我在翻我电脑里的备份,然后惊奇的发现,它还藏在电脑里。然后我就重新发一下,起码有文字版了。另外我重新录了一下音,以前录音没经验,就是一个手机,导致杂音超大。后来我插上耳机后,然后用背景音乐把杂音给掩盖一下。我的录音设备就是一个手机加一个耳机,然后再使用Audacity这个软件加上背景音乐来掩盖马路上的杂音。

上一期提到,太阳公司一个年轻的程序员,帕特里克诺顿,给公司提出了一份言辞尖锐的备忘录,我对这份备忘录很好奇,到底写了些什么呢?这份备忘录,主要有两部分内容,一部分内容是,列出了太阳公司的缺点,另一部分内容,则是对Next公司的夸奖。

诺顿的建议有如下几条:雇佣一个艺术家,把用户界面弄的漂亮一些,现有的用户界面太丑;只选择使用一种编程工具包;将公司的注意力集中在一种视窗技术上,而不是分散兵力,多线作战;解雇现有的视窗组员工,他们太烂了!在我看来,这几条建议,简直放之四海皆准啊,现在,对大多数公司来说,依然很适合。

正是因为这份言辞尖锐的意见,导致太阳公司进行反思,从而促成了Green小组,而开发出了Java语言的雏形,虽然当时不叫Java,当时的名字叫Oka语言。后来这个项目的市场反响,并不好,太阳公司准备取消Oka项目,解散团队。为什么太阳公司会做出这种,以今天的眼光来看很愚蠢的举动呢?我认为,这要从太阳公司的DNA说起。

太阳公司这个名字,其实是斯坦福大学校园网的,首字母的缩写(Stanford Universtiy Network),太阳公司的主打产品是Unix服务器和工作站,本质上,他是一家硬件公司,太阳公司有自己的硬件Spark处理器,和Solaris操作系统,但是没有关键的应用软件,当然,也有一些影响力不大的软件,比如StarOffice办公软件,但是影响力非常有限。太阳公司卖的工作站每台几万美元,服务器每台10万美元,再加上上世纪互联网的兴起,通过卖服务器和工作站,站着就把钱给赚了。太阳公司眼中的竞争对手是,SGI,DEC还有惠普这种公司,在硬件市场,这些都是太阳公司严重的软柿子,随便捏来捏去的。

正是因为太阳公司以硬件为主的商业模式,导致了他固步自封,像Oak这种项目,市场不好,赚钱无望,想关掉也算顺理成章,反正也不指望Oak项目有多大的出息,毕竟卖硬件赚的钱花都花不完啊。就在Oak项目就要被取消,高斯林萌生退意,团队即将解散的紧要关头,太阳公司的联合创始人比尔乔伊挽救了Oak项目。比尔乔伊不仅是太阳公司的创始人,他还是一个优秀的程序员,天主教知识分子,他是BSD系统的主要设计者,BSD系统是目前苹果公司Mac OS的父亲,他还参与设计了TCP/IP,更重要的是他还是编辑器Vi的作者,以后有机会,我想单独做一次他的生平事迹。在这里,我们只说他挽救Java的故事。

当时1994年,互联网如星星之火,逐渐蔓延。1993年6月,两名伊利诺伊大学的学生,马克安德森和埃里克比那发布了第一个版本的浏览器Mosaic。为了使这个浏览器商业化,安德森注册了一家叫网景的公司,这个浏览器的发明,让每个普通人,都可以方便的使用互联网技术。这时候,比尔乔伊敏锐的观察到,Java语言可以满足互联网对安全的要求,因此他对高斯林说:游戏已经开始了。

早在十几年前,比尔乔伊在设计Unix的时候,就已经开始思索,如何在千差万别的互联网环境中,使用一种新的编程语言,可以确保互联网的安全性和可靠性。比尔乔伊回忆说:他当时也不知道怎么做,但是他一看到高斯林的东西,就知道这就是他要找的编程语言。比尔乔伊对高斯林的评价非常高,他说:詹姆斯很伟大,他在这个空白的领域写下了第一笔,虽然只完成了一部分,但是异常精彩。他独自一人工作,这是一种罕见的天赋。要将这种技术快速应用到产品中去,其他人必须要模仿他。但是高斯林是先行者,毫无疑问,他有独特的思考方式。

太阳公司的前技术主管,埃里克施密特,后来此人当了Google公司的CEO,对此的评价是:Java的天才之处,在于詹姆斯的借鉴和创新,都恰到好处。(说点题外话:网络上对Java的嘲笑,不绝于耳,很多人也质疑高斯林的成就,以前我就看过一篇文章,上面列举了Java的技术思想,早在Java出生十年前,甚至二十年前就出现了,所以,Java根本不是什么新生事物。但是我认为,所有的创新都是递增的,都是以原有的知识为基础,高斯林的过人之处在于,他将,原有的知识重新汇总,进行全新的组织,来满足网络时代对安全的要求,Java语言是一种为了实用而设计的计算机语言。)90%的程序员,都是技术水平一般的普通人,Java语言一开始,就是创造一种,“没有锋利边缘的编程语言,这样,人们就不会因为编程语言的问题,而伤害自己”。当时已经有了C语言以及C++语言,这两种语言足够强大,C 语言程序就像一群拿着刀的人,在刚刚打过蜡的地板上快速的跳舞。C++的作者也说过:C 很容易让你朝自己的脚开枪。在 C++ 中,这么做变的困难了,但是你要不注意,就会崩掉自己的整条腿。高斯林这么评价自己的Java: Java 就是去掉了枪炮,刀剑,还有黑帮的 C++。

Java是一种互联网时代的语言,他试图通过,限制程序员犯错的自由,来简化互联网编程。比尔乔伊曾经说过,互联网世界的最终目标是,努力将软件变得像机器的组成部件一样稳定。Java可以看作是装有螺丝钉,螺丝帽,螺栓等各种工具的工具箱。Java就是一个系统,他确保程序员,在使用这些工具的时候,不会做出危险的举动。当然,并非所有人都接受这种限制,那些讨厌这些限制的程序员,将Java比做“警察国家”,将高斯林称为软件法西斯主义。但高斯林回应说:Java的限制对于互联网是一种宝贵的资产,让软件变得更加稳定可靠。Java确实是折衷的结果,但是,利大于弊。

“对Java来说,规矩就是规矩,一旦适应了这一点,它将变成一种自由的语言”高斯林将对Java的批评,比作早期飞行员的抗议。飞机制造商将驾驶舱密封起来的时候,飞行员表示抗议。因为,使用螺旋桨推动飞机的时代,飞行员通过将头伸出机舱来导航,感觉风向。但是当你坐上一架2马赫的现代飞机,打开机舱把头伸出去,脑袋就被吹掉了。他说:要更进一步的解放自己,你就要放弃那些曾经看起来是自由的东西。

如果你连上了网,你就不得不处理多样性,不得不处理交互性,不得不考虑故障,对其它的部分会造成怎样的影响,也就是说不得不考虑系统的可靠性。传统的观点认为,软件要么全部成功,要么全部失效,只有两种情况,要么正常工作,要么无法工作。有没有可能创建一个健壮的系统,这个系统部分失效以后,仍然可以继续运行呢?就像一辆汽车,在收音机损坏的时候,仍然可以正常行驶,而不是尖叫着停下来。这就是设计Java语言的初衷。

扯远了,再把话题回到1994年,1994年,是Java制定标准到一年。在这一年里,Java应该有什么特征,需要抛弃那些特征,怎样改进性能,都是在这一年搞定的。会议有六七个人参加,其中争吵最为激烈的是高斯林和比尔乔伊之间,高斯林是简洁派的,比尔乔伊是功能派的。高斯林坚持认为Java应该足够的简洁,凡是有疑惑的,就删掉;比尔乔伊则认为Java要足够强大,要把大部分语言的强项都添加到Java里,就像一个威力无比的巨无霸那样。后来,大部分决定都是高斯林做出的,Java就是他的孩子。在一次采访中,关于简单性和复杂性,高斯林说:通常系统想更强大,就往往变得很复杂。

高斯林另一个精明之处在于,他让C++程序员很快就掌握了Java。在Java即将被打磨出来之前,太阳公司的另一个商业计划出炉了。在1994年9月,高斯林,比尔乔伊以及施密特共同举行的一次会议上,确定了Java的方向,高斯林说:Java是所有人都能够使用的编程语言。在会议之后,施密特起草了商业计划,提出了具体的数字:5年内,Java用户将会达到1亿。实际上,两年以后,Java的用户数量就达到了1亿。1亿这个数字相当于当时所有运行windows的计算机。之所以会这么快达成目标,一个很重要的原因是,网景公司的浏览器决定支持Java。当时网景公司的安德森,一直在考虑一个问题,如何才能把服务器上的代码,通过网络传送到数百万台计算机上呢?当时网景公司尝试了一种语言,使用Scheme语言,但是这种语言最终没有达到目的。随后该团队看到了Java,于是就认定了这种语言。网景公司和太阳公司于1995年5月23日签订了意向书。

之后,为了更好的市场推广,太阳公司决定将Oak语言重新命名,当时列出了十几个备选的名字,其中之一是Java,其它几个没入选的名字分别有Silk, Lyric等等,最后由产品经理波利思决定,她选择了Java。比尔乔伊和施密特负责太阳公司推广Java的工作,他们选择了一个激进的策略,他们计划不从Java中获利,授权条款全部都是无偿奉送,只是为了提高软件的接受度。在1996年,太阳公司召开了Java的会议,JavaOne,初次会议就有1000来人参加,众多公司包括网景,甲骨文,惠普,IBM纷纷申请Java的许可,反正也不要钱。Java就是当时最热的语言,整个顶级IT公司都在宣告,我们使用Java。在这些公司里,还包括一个公司——微软。微软在1995年发布了windows95,微软在操作系统的地位如日中天。微软公司在1996年3月也向太阳公司申请了Java许可,当时的比尔盖茨对Java的评价是:Java是很长时间以来最优秀的程序设计语言。太阳公司希望微软公司帮助自己推广Java,微软公司希望把Java搞得支离破碎,各怀鬼胎的合作下,最后不得不对簿公堂,在2004年,太阳公司胜诉,获得16以美元赔偿,但是微软却赢得了很大的市场,借鉴JSP技术的ASP技术获得了更大的市场占有率。太阳赢了官司,却丢了未来。对此,高斯林这么评价:微软花了巨大的精力,让用户在windows上看不到Java。

后来微软公司宣布了一种新的技术,可以转移Java用户,并且推出了自己的编程语言,C#, 用来代替Java。微软公司的C#语言定位和Java类似,有着和Java类似的功能。这是微软一贯的策略,首先和你拼技术,拼技术不行就拼流血,反正微软血量足,对手拼流血一般是拼不过微软的。突然想起了微软进入游戏机市场,花了大量的钱打造xbox游戏机,记者问比尔盖茨,如果xbox花费了这么多钱,仍然失败了你会怎们办?比尔盖茨轻轻一笑,说,如果这次xbox失败了,我就再投入更多的钱重新玩一局。微软靠这个方法,打赢了很多战争,包括和borland的编译器之战,以后有机会,我也说说那场战争。微软一贯的策略之一就是,引入新的技术,按照自己的方式重新定义新的技术,然后说服程序员加入自己的阵营,取得最后的胜利。

在1995年,微软开始开发自己的浏览器,和网景公司进行竞争,网景公司是太阳公司最大的合作伙伴之一,正是因为网景公司的鼎力支持,才让太阳公司的Java迅速的占领市场。微软在击败莲花公司和WordPerfect公司的时候,就是利用了自己windows的优势。这次和网景公司竞争,刚开始的时候,网景公司掉以轻心,以为顶多到时候打价格战,网景有钱,这个仗还能拼一拼。没想到微软公司直接把IE免费了,仅仅一年半以后,网景就被微软击败了。如果仔细研究IT的历史,就会发现一个很有趣的现象,微软建立自己的霸主地位以后,就再也没有出现过世界级的PC软件公司,因为只要在PC软件上还有大的机会,微软就会利用自己操作系统的优势,把所有的玩家都清除出去,这个受害者名单有一大长串,网景,WordPerfect, 莲花公司,太阳公司,RealNetwork公司,都没能幸免于难。

到了上世纪末,太阳的市场总值,一度攀升到2000亿美元的最高峰,股价高达每股247美元。公司的CEO麦克利尼也是春风得意,他说,太阳公司就是.com前面的那一点,当我向后看的时候,我欣喜的发现,我至少领先有些公司至少20年。但是,2000年网络泡沫开始破灭,大多数.com公司都关门大吉了,服务器市场突然低迷,太阳公司一年之内就从顶峰跌到了谷底。更可怕的是,以前和Java和微软的ASP竞争的劣势,开始结出苦果,Unix服务器市场,依IBM为首的Linux操作系统,开始蚕食太阳系统的Solaris系统,在windows服务器市场,由于微软明里暗里的不支持JSP,而是支持自己的ASP,因此太阳公司前有狼,后有虎,苦不堪言,2003年巨亏34亿美金,从此沦落称为一个二流的厂商,失去了挑战微软和IBM的能力,以至于最后被甲骨文收购。

还有很多值得八卦的事情,太阳公司的CEO麦克利尼是硅谷著名的喷子,口无遮拦,不止喷微软,他还喷除了自己以外的其它公司。太阳公司自己生产spark的CPU,在80年代的时候,太阳公司曾经试图进入个人电脑市场,自己提供CPU,还能自己生产操作系统,因此,和Intel曾经是竞争对手,他曾经宣称,只要是有厂商采用SPARK的CPU,太阳公司就提供最详细的资料,对于当时微软的铁杆合作伙伴Intel,他说:摧毁微软是每个人的义务。对于微软的windows NT操作系统,由于是Solaris的直接竞争产品,麦克利尼评价说:你们敢把软件运行在NT上么?你们是在玩过家家的游戏么?

“别和微软合作”一直是麦克利尼的口头禅,他说:“和微软合作有很多的条件。而不管什么公司,只要与微软合作,他们自己都会受到很大伤害,自己公司的规模就会变得越来越小。”有一次他在展示自家的服务器的时候,需要输入密码,他对台下的观众说:密码是 say no2nt,中文意思就是“对NT说不”。Dell公司也有Linux服务器,和太阳公司有竞争,在评价Dell公司的时候,麦克利尼说:Dell公司不是一个公司,仅仅是一个流通渠道。对此,另一个大炮Dell也不是省油的灯,他回应说:我想有的企业将永远不会复苏,原因是他们的业务建立在,人们不再购买的产品上。对待惠普和康柏这两个老对手的合并,他仍然是火力全开,他说“在我看来,这是两个烂公司之间的合并,他们已经不是计算机公司了。”

对IBM,依然延续其毒舌,他在接受中国记者采访时称,“我很希望2008年北京奥运会也能用我们的产品。从架构角度来说,中国有三种选择:一种是微软的封闭架构;一种是太阳公司的开放架构;最后一种是IBM的架构,其实IBM本没有什么架构可言。”再后来,太阳公司的市值越来越少,IBM曾经提出过收购,但是在经过几个月的谈判以后,太阳公司拒绝了IBM的收购,在2009年4月20日,甲骨文以74亿美元收购了太阳公司,太阳公司的历史使命结束了。

用华尔街的话说,太阳公司是赔钱赚吆喝,至于吆喝之后怎么赚钱,太阳公司直到被甲骨文收购前,都没找到办法。倒是甲骨文收购以后,找到了Java的赚钱之道,打官司找谷歌赔钱。甲骨文收购太阳公司以后,关掉了很多项目,比如关掉了太阳公司一个CPU的项目,据埃里森讲,该CPU非常慢,非常耗电,以至于为了散热,需要一个30厘米那么大的风扇才能散热。甲骨文还关闭了OpenSolaris项目。

作为太阳公司极具影响力的产品之一Java编程语言,并没有随着被甲骨文的收购而变得暗淡,被甲骨文收购以后,Java的创始人高斯林已经离开了公司,但是,由于安卓手机的流行,Java再次展现出其旺盛的生命里,在编程语言排行榜上长期占据第一位。在下一讲中,我们再来讲安卓系统让Java重新焕发青春的故事。

Nov 15 2016

30mins

Play

Rank #19: 148. 他俩是最完美的IT创业搭档 | 软件那些事儿

Podcast cover
Read more

RT

Apr 10 2018

26mins

Play

Rank #20: 152. “不尽人情”的亚马逊创始人贝佐斯 | 软件那些事儿

Podcast cover
Read more

没有

May 02 2018

27mins

Play

251. 无线电广播之父:雷金纳德•费登森

Podcast cover
Read more

Oct 19 2020

33mins

Play

250. 第250期送给我的听众,尤其是加我微信群的听众

Podcast cover
Read more

Oct 09 2020

24mins

Play

249. 二战时期美国如何给无线通信加密

Podcast cover
Read more

Sep 27 2020

29mins

Play

248. 摩托罗拉,二战时期成长起来的公司

Podcast cover
Read more

Sep 13 2020

30mins

Play

247. 二战中让德国吃瘪的一次偷袭 | 软件那些事儿

Podcast cover
Read more

Aug 31 2020

29mins

Play

246. 无线通信在第一次世界大战中的应用 | 软件那些事儿

Podcast cover
Read more

Aug 20 2020

30mins

Play

245. 无线通信中的冰与火:马可尼与特斯拉

Podcast cover
Read more

Aug 09 2020

34mins

Play

244. Nokia让戈尔巴乔夫做的一个广告,开启了一个新时代

Podcast cover
Read more

Aug 03 2020

32mins

Play

243. 苹果电脑名字里的苹果园是什么样子的?

Podcast cover
Read more

Jul 24 2020

32mins

Play

242. 苹果麦金塔电脑(Macintosh)开发的故事

Podcast cover
Read more

Jul 10 2020

29mins

Play

241. 乔布斯超强的说服能力

Podcast cover
Read more

Jun 28 2020

29mins

Play

240. 苹果公司早期的岁月 | 软件那些事儿

Podcast cover
Read more

Jun 15 2020

28mins

Play

239. 《三国志》游戏中学到的一点历史

Podcast cover
Read more

Jun 03 2020

41mins

Play

238. 哈哈,从游戏中学历史:光荣公司的《三国志》系列

Podcast cover
Read more

May 25 2020

33mins

Play

237. 格斗游戏之《侍魂》《拳皇》

Podcast cover
Read more

May 12 2020

37mins

Play

236. 儿时记忆,日本老游戏,炸弹人

Podcast cover
Read more

Apr 29 2020

38mins

Play

235. 第一家电脑游戏厂商:雅达利(2)

Podcast cover
Read more

无证程序员,有事漂流瓶联系。

欢迎关注公众号: 软件那些事儿

Apr 17 2020

31mins

Play

234. 第一家电脑游戏厂商:雅达利(1)

Podcast cover
Read more

无证程序员,有事漂流瓶联系。

欢迎关注公众号: 软件那些事儿

Apr 09 2020

27mins

Play

基于我的微信群进行的舔狗生态研究

Podcast cover
Read more

Apr 01 2020

23mins

Play

233. 第一个电脑上的游戏:太空大战

Podcast cover
Read more

Mar 24 2020

20mins

Play

iTunes Ratings

22 Ratings
Average Ratings
21
0
1
0
0

爱你

By 尼比鲁星大使 - Apr 28 2020
Read more
来自尼比鲁星的粉丝

非常感谢播主

By madjonr 。 - Jan 31 2018
Read more
现在能沉下来并共享自己知识的人越来越少,非常感谢播主的大公无私。