沒錯(cuò),我們和美帝的差距就是這么大
程序員都知道,美帝在計(jì)算機(jī)領(lǐng)域非常厲害,我們和美帝的差距很大,但是到底有多大呢?
我們平時(shí)忙于寫代碼,沒有精力對技術(shù)做追根溯源, 所以也就沒有直觀的、切身的體會(huì)。
最近畫了幾篇計(jì)算機(jī)技術(shù)溯源的漫畫,接觸到了細(xì)節(jié)以后,真是越來越心驚:
美帝在這個(gè)領(lǐng)域的積累實(shí)在是太深厚了,我們和美帝的差距實(shí)在是太大了。
1
比如平時(shí)經(jīng)常用的關(guān)系數(shù)據(jù)庫,大家可能都知道的是這些:
關(guān)系理論是美國人科德1970年提出來的。
SQL也是美國人張伯倫和博伊斯在IBM發(fā)明的。
事務(wù)處理技術(shù)是美國人Jim Gray開創(chuàng)的,他提出了原子性(A),一致性(C)和持久性(D)。
但是很多人不知道的是:
B Tree是美國人Edward M. McCreight和德國人Rudolf Bayer 在美國波音工作時(shí)發(fā)明的,它的變體B+ Tree是數(shù)據(jù)庫索引的基礎(chǔ),率先被應(yīng)用到IBM 的VSAM 中。
IBM的System R最早在數(shù)據(jù)庫查詢優(yōu)化中使用了動(dòng)態(tài)規(guī)劃(這也是美國人Richard Bellman在50年代發(fā)明的算法)。
關(guān)系數(shù)據(jù)庫在剛興起的時(shí)候受到網(wǎng)狀數(shù)據(jù)庫“無情”地打壓,網(wǎng)狀數(shù)據(jù)庫的掌門巴赫曼和科德還有一場著名的論戰(zhàn)。
后來IBM通過System R, 加州大學(xué)伯克利分校通過Ingres才證明了關(guān)系數(shù)據(jù)庫的能力,Oracle 通過和美國政府的項(xiàng)目才讓SQL成為標(biāo)準(zhǔn),然后在八九十年代,各個(gè)產(chǎn)品Oracle ,Sybase, Db2, SQL Server, Informix,MySQL等百花齊放。
很可惜,這些精彩的故事發(fā)生的時(shí)候,我們還在折騰,還在緩慢回血中。
2
再比如編程語言, JavaScript 是前端的王者,布蘭登在設(shè)計(jì)它的時(shí)候,借鑒了很多語言:
- 基本語法借鑒了C (貝爾實(shí)驗(yàn)室) 和 Java(Sun公司);
- 函數(shù)借鑒了Scheme (MIT);
- 原型繼承借鑒了Self (施樂PARC);
- 正則表達(dá)式借鑒了Perl (美國人Larry Wall)
- 字符串和數(shù)組處理借鑒了Python (荷蘭人Guido van Rossum)
除此之外,我們耳熟能詳?shù)恼Z言還有 :
- Smalltalk(施樂PARC)
- C++(貝爾實(shí)驗(yàn)室)
- C#(微軟)
- VB(微軟)
- Go(Google)
- Lisp(約翰·麥卡錫)
甚至連讓兒童學(xué)習(xí)編程的LOGO (MIT), Scratch (MIT)也都誕生在美國。
從過程性語言到面向?qū)ο?,從命令式到函?shù)式,從編譯到解釋,再到虛擬機(jī),美帝玩得風(fēng)生水起。
3
在操作系統(tǒng)這個(gè)大冰山上,程序員日??吹降氖歉≡谏厦娴腤indows (微軟), Linux(開源), Mac (蘋果),Andorid (Google), iOS (蘋果)
冰山之下,是大型機(jī),小型機(jī),PC長達(dá)幾十年的爭斗和“累累白骨”。
- OS/360 (IBM的世紀(jì)豪賭)
- CTSS (MIT實(shí)現(xiàn)的第一個(gè)分時(shí)共享系統(tǒng))
- Multics (通用電氣和貝爾實(shí)驗(yàn)室)
- VAX/VMS (DEC)
- Unix (貝爾實(shí)驗(yàn)室)
- BSD (加州大學(xué)伯克利分校開發(fā)的Unix 分支)
- CP/M (Gary Kildall 開發(fā)的PC 操作系統(tǒng) )
- DOS(微軟)
- OS/2 (IBM)
- NeXTSTEP (喬布斯的NeXT公司開發(fā)的操作系統(tǒng))
在計(jì)算機(jī)體系機(jī)構(gòu)領(lǐng)域,美國誕生了存儲程序,RISC等原創(chuàng)思想,爆發(fā)過RISC和CISC之間的激烈戰(zhàn)爭。
Sun公司的SPARC處理器,DEC 的Alpha,SGI 的MIPS,Intel 的RISC處理器 i860, i960,IBM 的Power都曾參戰(zhàn)。
在網(wǎng)絡(luò)和通訊領(lǐng)域,有香農(nóng)的信息論,分組交換思想,以太網(wǎng),路由器,TCP/IP......
虛擬化,編譯器,快速排序,RSA算法, 鼠標(biāo),GUI, MVC,RPC.....
這個(gè)列表還不包括應(yīng)用層的軟件(Apache, Tomcat,Hadoop, Docker, k8s.....), 如果繼續(xù)羅列下去,這個(gè)列表會(huì)很長很長, 我不再列了。
4
看到這里,你可能會(huì)理解任正非所說的話了:美國仍然是世界的科技燈塔,我們?nèi)匀灰磺邢蛳冗M(jìn)的人學(xué)習(xí)。
計(jì)算機(jī)這座大廈幾乎是美國人構(gòu)建起來的,這句話毫不為過。
我經(jīng)常在想,中國的IT業(yè)起步雖晚, 但這二十多年也發(fā)展得很快,誕生了幾個(gè)世界級的互聯(lián)網(wǎng)巨頭,為什么一直沒有誕生原創(chuàng)性的、有世界級影響力的發(fā)明和創(chuàng)造呢?
可能有人會(huì)反對,中國也有很多開源的優(yōu)秀軟件嘛,沒錯(cuò),是有很多,但是這些軟件在原創(chuàng)性上還遠(yuǎn)遠(yuǎn)不夠。
比如Dubbo,這是個(gè)很優(yōu)秀的、高性能的分布式服務(wù)框架,但是它的本質(zhì)是什么呢?RPC !Dubbo在RPC的基礎(chǔ)上加上了服務(wù)的調(diào)度、發(fā)現(xiàn)、監(jiān)控、治理,相當(dāng)于擴(kuò)展。
而RPC是在1981年,卡耐基梅隆的計(jì)算機(jī)博士Bruce J. Nelson發(fā)明的技術(shù)。從那以后相繼出現(xiàn)了CORBA, Java RMI, XML-RPC, SOA等各種技術(shù),Dubbo和他們一脈相承。
相比而已,Rayan Dahl發(fā)明的Node.js原創(chuàng)性更高,因?yàn)樗晒Φ匕袹avaScript、異步IO、Http Server等技術(shù)組合起來,達(dá)成了把JavaScript搬到了服務(wù)器端的革命。
5
有人可能要說,你對中國的期待太高了,在計(jì)算機(jī)領(lǐng)域,除了美國以外,別的國家都不怎么樣嘛。
這句話也不準(zhǔn)確, 芬蘭誕生了Linux , MySQL , 瑞典的愛立信發(fā)明了Erlang ,英國有ARM , 瑞士有Pascal。
以色列能發(fā)明ICQ,防火墻,荷蘭人能發(fā)明Python, 日本能發(fā)明Ruby, 巴西能發(fā)明Lua 。
再說了,我們中國是個(gè)大國,我們的理想可不僅僅是那些小國能比擬的, 我們可不僅僅想在幾個(gè)領(lǐng)域突破,而是要在各個(gè)領(lǐng)域,大范圍地碾壓。
我相信在中國應(yīng)該有一位這樣的天才程序員, 他也遇到了Rayan Dahl類似的業(yè)務(wù)場景,甚至想到了使用V8在服務(wù)器端運(yùn)行JavaScrpt的方法,但是他整天被需求壓得喘不過氣來,業(yè)余時(shí)間被996榨干,回到家中,累得根本沒有時(shí)間和精力去鼓搗的Node.js......
我也相信中國有很多天才的小孩,他們的腦海中充滿著奇思妙想,就像信息論之父香農(nóng)那樣,特別擅長把兩個(gè)不相干的領(lǐng)域拉扯到一起,激起思維的火花,只不過他們很難有機(jī)會(huì)去施展,因?yàn)閺男W(xué)開始,他們的時(shí)間就要被大量重復(fù)的作業(yè)和各種培訓(xùn)班所占據(jù),要想讓他們自由發(fā)展,不走尋常路,家長將會(huì)背上很大的風(fēng)險(xiǎn)。
大學(xué)畢業(yè),工作以后,這些天才又會(huì)被房子問題、醫(yī)療問題、孩子教育問題絆住,他們很難像Rayan Dahl那樣自由生活,追隨興趣,不能去Think Different ,自然也很難做出原創(chuàng)性的發(fā)明和創(chuàng)造。
這種狀況會(huì)持續(xù)多久呢,什么時(shí)候會(huì)改變呢?