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