沒(méi)有他,就沒(méi)有互聯(lián)網(wǎng)也沒(méi)有喬布斯
掃描二維碼
隨時(shí)隨地手機(jī)看文章
導(dǎo)讀:如果沒(méi)有他,現(xiàn)在我們沒(méi)法用個(gè)人計(jì)算機(jī),沒(méi)法用成熟的軟件應(yīng)用甚至是互聯(lián)網(wǎng)。就不會(huì)有我們現(xiàn)在所熟知的現(xiàn)代計(jì)算。他就是 C 語(yǔ)言之父和 UNIX 操作系統(tǒng)的聯(lián)合發(fā)明人——丹尼斯·里奇(Dennis Ritchie)。
蘋果和喬布斯以及很多其他公司所創(chuàng)造的“神奇的”產(chǎn)品,和所有現(xiàn)在我們了解和寫在現(xiàn)代計(jì)算里的東西,都要?dú)w功于丹尼斯·里奇,他于 2011 年 10 月 12 號(hào)離開(kāi)人世,享年 70 歲。
丹尼斯·里奇何許人也?
大多數(shù)的年輕人可能都要搖頭。丹尼斯·里奇是誰(shuí)?丹尼斯·里奇不像某位來(lái)自硅谷,精致的和少年得志的億萬(wàn)富翁,穿著簡(jiǎn)約黑色的高領(lǐng)毛衣在站滿粉絲的屋子里,演示新酷產(chǎn)品和惡意攻擊對(duì)手。不,丹尼斯·里奇是一位胡子有些凌亂的計(jì)算機(jī)科學(xué)家,他穿著羊毛衫坐在一間凌亂的辦公室里。
和喬布斯在大學(xué)輟學(xué)不同,他畢業(yè)于哈佛大學(xué),有物理學(xué)和應(yīng)用數(shù)學(xué)的博士學(xué)位。他工作于新澤西的 AT&T 貝爾實(shí)驗(yàn)室,而不是閃閃發(fā)光的硅谷。
是的,就是 “What exit?” 的新澤西。(編注:“What exit?”是新澤西當(dāng)?shù)刭嫡Z(yǔ),Garden State Parkway 是一條南北走向的高速公路,它穿過(guò)整個(gè)新澤西州,所以是一個(gè)很有用的地標(biāo)。新澤西當(dāng)?shù)厝藛?wèn)地方都問(wèn)從這條高速的哪個(gè)出口出來(lái)就可以到達(dá)。)
鑒于喬布斯古怪的個(gè)性又極富創(chuàng)造力,人們經(jīng)常把他和愛(ài)迪生作比較。我不贊同這種比較,因?yàn)閷?shí)際上我們錯(cuò)把喬布斯當(dāng)做一個(gè)真正的技術(shù)專家和發(fā)明東西的人。
有一件重要的事情我們必須要意識(shí)到:盡管喬布斯有他擅長(zhǎng)的事情,而且他為技術(shù)和計(jì)算機(jī)業(yè)界做出很大的貢獻(xiàn),但事實(shí)上他并不是一個(gè)技術(shù)專家。
他對(duì)于時(shí)尚和工業(yè)設(shè)計(jì)的確很有感覺(jué),他理解用戶想要什么,他還是一個(gè)營(yíng)銷大師和推銷員。所有這些讓他成為業(yè)界的巨人。
但是說(shuō)到發(fā)明家?不,他不是。
但是丹尼斯·里奇發(fā)明了和共同發(fā)明了兩個(gè)關(guān)鍵的軟件技術(shù),它們是構(gòu)成每一款計(jì)算機(jī)軟件產(chǎn)品的DNA,現(xiàn)在我們直接或間接都在使用這些軟件產(chǎn)品。這聽(tīng)起來(lái)讓人難以置信,但它確實(shí)是真的。
首先,讓我們從《 C 程序設(shè)計(jì)語(yǔ)言》開(kāi)始
C 語(yǔ)言是里奇在 1969-1973 開(kāi)發(fā)的,它被認(rèn)為是第一個(gè)真正意義上可移植的現(xiàn)代編程語(yǔ)言。自它誕生差不多 45 年以來(lái),它已經(jīng)被移植到幾乎每一個(gè)出現(xiàn)過(guò)的系統(tǒng)架構(gòu)和操作系統(tǒng)上。
因?yàn)樗且环N命令的、編譯的和程序化的編程語(yǔ)言,它允許語(yǔ)法變量作用域和遞歸,允許內(nèi)存的底層訪問(wèn),還有復(fù)雜的 I/O 和字符串操作功能,這種語(yǔ)言變得相當(dāng)通用。
里奇和布萊恩·克尼漢(Brian Kernighan)對(duì)它進(jìn)行了一定程度的優(yōu)化,最終于 1989 年被美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)的 X3J11 委員會(huì)進(jìn)一步細(xì)化為 ANSI C 程序設(shè)計(jì)語(yǔ)言。
1978年,克尼漢和里奇合著出版了《C 程序設(shè)計(jì)語(yǔ)言》這本書。該書被很多人簡(jiǎn)稱為 “K&R C” ,是計(jì)算機(jī)科學(xué)的杰作,它也是解釋現(xiàn)代程序設(shè)計(jì)概念的一個(gè)關(guān)鍵參考,甚至到今天,它還是計(jì)算機(jī)科學(xué)課程里學(xué)習(xí)程序設(shè)計(jì)的經(jīng)典教材。
直到今天, ANSI C 作為一種編程語(yǔ)言還被大量地使用,后來(lái)它還發(fā)展出很多的姊妹語(yǔ)言,這些語(yǔ)言又都有很多的追隨者。
最流行的 C++ 是由本賈尼·斯特勞斯特盧普(Bjarne Stroustrup) 于 1985 年發(fā)明,它增加了面向?qū)ο缶幊毯皖惖闹С?,用在各式各樣的操作系統(tǒng)上,包括像 Linux 和 Mac 這樣的 UNIX 衍生品上,它作為微軟 Windows 軟件開(kāi)發(fā)的主要編程語(yǔ)言長(zhǎng)達(dá)20多年。
Objective-C,是由達(dá)石軟件(Stepstone,Lumesse(路敏思)的前身)的布萊德·考克斯(Brad Cox) 和 Todd Love 在八十年代發(fā)明的,增加了 Smalltalk 消息傳遞功能,進(jìn)一步拓展了這種語(yǔ)言面向?qū)ο蠛痛a重用的特性。
Objective-C 很大程度上被認(rèn)為是一個(gè)鮮為人知的 C 語(yǔ)言衍生品,直到它在八十年代末和九十年代初被廣泛用于 NeXT 計(jì)算機(jī)系統(tǒng)公司的 NeXTStep 和 OpenStep 操作系統(tǒng)上,NeXT 是喬布斯在 1985 被趕出蘋果公司后所創(chuàng)辦的。
“下一個(gè)”發(fā)生了什么就是一段計(jì)算機(jī)領(lǐng)域的傳奇。NeXT 于 1996 年被蘋果公司收購(gòu),喬布斯在 1997 年重新回歸蘋果并出任公司的CEO。
2001 年蘋果發(fā)布了 Mac OS X,其中大量使用了 Objective-C ,以及 NeXTStep 和 OpenStep 所引入的面向?qū)ο蠹夹g(shù)。
當(dāng) C++ 也被大量應(yīng)用在 Mac 上,Objective-C 被用來(lái)在 XCode IDE 下編寫本地面向?qū)ο蟮?“Cocoa” API ,這些 API 是 iOS 上手勢(shì)識(shí)別和動(dòng)畫功能的核心,這些功能為 iPhone 和 iPad 增光不少。
Objective-C 還提供了 Foundation Kit 和 Application Kit,用于構(gòu)建本地的 OS X 和 iOS 應(yīng)用程序。
微軟也有自己的 C 語(yǔ)言衍生品—— C# (讀作 “C Sharp”),于 2001 年發(fā)明并作為 .NET 框架的編程基礎(chǔ)。
C# 還是編寫基于 Windows 運(yùn)行時(shí)(WinRT)的現(xiàn)代應(yīng)用程序的基礎(chǔ),WinRT 在 Windows 10上發(fā)展成統(tǒng)一的Windows 平臺(tái)(UWP, Universal Windows Platform)。作為開(kāi)發(fā) Mono(一個(gè).NET 框架的可移植版本)的編程環(huán)境,它也被用在 Linux 和其他 Unix 衍生系統(tǒng)上。
但是 C 語(yǔ)言的影響并不僅局限在它的衍生品上。Java 這樣一個(gè)重要的企業(yè)級(jí)編程語(yǔ)言,在很大程度上也是基于 C 語(yǔ)言語(yǔ)法(本身也演變?yōu)?Dalvik 和 Android 運(yùn)行時(shí),它們是 Android 最基本的編程環(huán)境)。
其它語(yǔ)言例如 Ruby、Perl 和 PHP 等,它們是構(gòu)成動(dòng)態(tài)現(xiàn)代網(wǎng)絡(luò)的基礎(chǔ),也都使用了丹尼斯·里奇發(fā)明的 C 語(yǔ)言語(yǔ)法。
所以說(shuō)如果沒(méi)有丹尼斯·里奇的工作,我們根本就不可能有現(xiàn)代的軟件。
除了 C 語(yǔ)言,他還有 Unix
只談 C 語(yǔ)言對(duì)于現(xiàn)代計(jì)算的重要性和它對(duì)于每個(gè)人的影響,我其實(shí)就可以結(jié)束這篇文章。但這個(gè)人的工作生涯我才講了一半而已。
里奇還是 UNIX 操作系統(tǒng)的共同發(fā)明人。當(dāng)然 UNIX 的原型是用匯編語(yǔ)言編寫,到七十年代早期就完全用 C 重寫了。
早在1969年,在一臺(tái) DEC PDP-7 上引導(dǎo)了第一個(gè)版本的“Unics”,從那開(kāi)始 UNIX 已經(jīng)演變出很多類似的操作系統(tǒng),并運(yùn)行在各種各樣的系統(tǒng)架構(gòu)上。
每一個(gè)主要的計(jì)算機(jī)供應(yīng)商都曾經(jīng)實(shí)現(xiàn)過(guò)自己的 UNIX。甚至連微軟也曾經(jīng)擁有一個(gè)叫做 XENIX 的產(chǎn)品,后來(lái)賣給了SCO(已經(jīng)不存在了)。
UNIX 本質(zhì)上有三個(gè)主要分支:
第一個(gè)分支是“System V” UNIX,現(xiàn)在我們知道的有 IBM的AIX、Oracle的Solaris 和 惠普的 HP-UX。這些被認(rèn)為是“大家伙”的操作系統(tǒng)被廣泛應(yīng)用于世界財(cái)富 1000 強(qiáng)的大企業(yè)里,驅(qū)動(dòng)著關(guān)鍵的、面向交易的商業(yè)應(yīng)用和數(shù)據(jù)庫(kù)。
沒(méi)有 System V UNIX,那些被財(cái)富雜志 1000 強(qiáng)的企業(yè)不可能完成任何事情。商業(yè)都幾乎停滯了。它們也許只占任何特定企業(yè)百分之十到二十的計(jì)算能力,但是這百分之二十相當(dāng)重要。
第二個(gè)分支是BSD (伯克利系統(tǒng)發(fā)行版),包含F(xiàn)reeBSD、NetBSD 和 OpenBSD,這些都是 Max OS X 和 iOS 的基礎(chǔ)。它們也被用于支持關(guān)鍵的基礎(chǔ)設(shè)施骨干上,互聯(lián)網(wǎng)就運(yùn)行在上面。
第三個(gè)分支甚至不能算作一個(gè)分支——GNU/Linux。Linux內(nèi)核(Linus Torvalds開(kāi)發(fā)的)加上 GNU 用戶空間程序、工具和實(shí)用程序,提供了一個(gè)完全重新實(shí)現(xiàn)的“類似UNIX” ,或者說(shuō)“兼容UNIX”的操作系統(tǒng)。
當(dāng)然 Linux 也是所有 UNIX 操作系統(tǒng)里最具破壞力的。從非常小的嵌入式微處理器到智能手機(jī)、到平板和桌面電腦,甚至強(qiáng)悍的超級(jí)計(jì)算機(jī)都可以看到它的身影。
IBM 的 Watson 就是這樣一臺(tái) Linux 超級(jí)計(jì)算機(jī),在《冒險(xiǎn)吧!》的眾目睽睽下甚至打敗了Ken Jennings。
但我們還是要認(rèn)識(shí)到 Linux 和 GNU 沒(méi)有包含任何 UNIX 代碼——因此有自由軟件的遞歸短語(yǔ) “GNU’s not UNIX”。(譯者注:GNU是GNU’s Not UNIX的縮寫,GNU’s not UNIX => (GNU’s Not UNIX)’s Not UNIX => ((GNU’s Not UNIX)’s Not UNIX)’s Not UNIX => …,有興趣的話還可以找找其它的,比如 PHP、XNA等等)
但 GNU/Linux 在設(shè)計(jì)上表現(xiàn)得很像 UNIX,可以說(shuō)如果沒(méi)有里奇和他在貝爾實(shí)驗(yàn)室的同事們(Brian Kernighan、Ken Thompson、Douglas Mcllroy 和 Joe Ossanna)一起率先開(kāi)發(fā)出 UNIX,也就不會(huì)有什么 Linux 或者任何一個(gè)開(kāi)放源代碼軟件運(yùn)動(dòng)。
從這個(gè)意義上說(shuō),自由軟件基金會(huì)或者 Richard Stallman 很高興看到喬布斯離開(kāi)了。
我們虧欠丹尼斯·里奇很多
雖然存在宗教和意識(shí)形態(tài)的差異。但我們虧欠丹尼斯·里奇很多,超出我們的想象。沒(méi)有他的貢獻(xiàn),現(xiàn)在我們沒(méi)法用個(gè)人計(jì)算機(jī),成熟的軟件應(yīng)用甚至是互聯(lián)網(wǎng)。
沒(méi)有 Android 智能手機(jī),沒(méi)有昂貴的 DVR 和流媒設(shè)備,沒(méi)有喬布斯和蘋果創(chuàng)造令人驚嘆的 Mac 和 iPad。
沒(méi)有微軟的Windows 10 和 Surface Book。
沒(méi)有云計(jì)算、沒(méi)有AWS(亞馬遜網(wǎng)絡(luò)服務(wù),Amazon Web Services),沒(méi)有 Azure(微軟云)。
沒(méi)有“為 XX 而生的應(yīng)用程序”,也沒(méi)有互聯(lián)網(wǎng)這個(gè)東西。
向丹尼奇·里奇致敬 —— 感謝他帶給我們這些技術(shù),讓我們可以成為今天的專家。
1972年,丹尼斯·里奇(左)與肯·湯姆森在一臺(tái)PDP-12前的合影