C語言之父 - 丹尼斯·裏奇丨思否觀察

clipboard.png

在各類編程語言當中,C語言因其簡潔、有效、通用的特性而始終佔據一席之地。自 C語言出現後,以 C語言爲根基的 C++、Java 和 C# 等面嚮對象語言相繼誕生,並在各自領域大獲成功。git

直到今天,C語言依舊在系統編程、嵌入式編程等領域佔據着統治地位。程序員

瞭解過去,咱們才能知其然,更知其因此然。今天咱們就來分享 C語言的發明者,「C語言之父」 —— 丹尼斯·裏奇,這位傳奇人物的奇聞軼事。編程

除了是 C語言的創造者、也是 UNIX操做系統的關鍵開發者,他在 1983年得到圖靈獎,由於他爲黑客圈作的「貢獻」,黑客圈子一般稱他爲「dmr」。小程序

「假若有一個可以把計算機放大的顯微鏡,你會看到裏面處處都是他的貢獻。」網絡

裏奇的成長史

丹尼斯·裏奇生於美國紐約州布隆克維。他的父親是《開關電路設計》做者之1、貝爾實驗室的資深科學家阿利斯泰爾·裏奇。編程語言

1954年,13歲的裏奇跟着他的父親,電氣工程師阿利斯泰爾•裏奇舉家從紐約州的布朗克斯維爾,搬到幾十千米外的新澤西。目的是離他父親的工做單位「貝爾實驗室」更近一些。性能

多是受到父親的影像,裏奇的理科成績一直很優異,高中畢業後進入哈佛大學學習應用數學和物理學。1967年,在父親的介紹下,26歲的丹尼斯·裏奇進入貝爾實驗室,從事當時很是前沿的一項工做 —— 計算機研究。學習

加入貝爾實驗室的第二年,裏奇在計算機科學家帕特里克·C·費希爾的指導下發表了博士論文《程序結構與計算複雜性》,但不知道爲何,裏奇始終沒有正式得到博士學位...spa

丹尼斯·裏奇爲人所知,主要是由於他創造了C語言,做爲關鍵開發者參與了Unix操做系統的開發。但在此外,裏奇還參與了貝爾實驗室九號項目、Inferno操做系統以及Limbo語言的開發,而這些項目也都是基於他之前的成果進一步開發的。操作系統

貝爾實驗室在20世紀90年代中期重組時,他轉到了朗訊科技。在朗訊,他曾領導系統軟件研究部門,直到2007年退休爲止。

退休以後,有人問裏奇是什麼啓發他如此設計 C 語言時,裏奇回答說「看來是件值得作的事」("looked like a good thing to do")。

他說任何人在同一地方、同一時間也會像他那樣作的。可是許多人認爲這只是裏奇的謙言,例如裏奇在貝爾實驗室的同事、C++的創造者和設計師比雅尼·斯特勞斯特魯普曾說:「假如裏奇決定在那十年裏將他的精力花費在稀奇古怪的數學上,那麼Unix將胎死腹中」。

在裏奇去世以後,計算機歷史學家保羅·茨露吉評價說:「裏奇的名字並不容易讓人察覺,也不爲人熟知,可是……假若有一個可以把計算機放大的顯微鏡,你會看到裏面處處都是他的貢獻。」

開發 UNIX,只爲了打遊戲?

上世紀六十年代時,大部份計算機都是採用批處理的方式(也就是說,看成業積累必定數量的時候,計算機纔會進行處理)。爲了解決這個問題,美國電話及電報公司(AT&T)、通用電器公司(GE)及麻省理工學院(MIT)計劃合做開發一個多用途、分時及多用戶的操做系統,命名爲 MULTICS,這也是裏奇在加入貝爾實驗室後,參與的第一個項目。

圖片描述

不過,這個項目因爲太過複雜,整個目標過於龐大,進展速度很是慢,幾年下來都沒有任何成果,並且性能都很低。因而在1969年的2月,貝爾實驗室決定退出這個項目。

多是對工做中第一個項目的執念,裏奇一直對此耿耿於懷,試圖解決這一難題。

貝爾實驗室中的有個叫 Ken Thompson 的人,他曾經爲 MULTICS 這個操做系統寫了個叫「Space Travel」的遊戲,在 MULTICS 上通過實際運行後,他發現遊戲速度很慢並且耗費昂貴 —— 每次運行會花費75美圓。在貝爾實驗室退出這個項目之後。他爲了讓這個遊戲能玩,因此找來 Dennis Ritchie 爲這個遊戲開發一個極其簡單的操做系統。

clipboard.png

當時 Ken 的老婆正好回孃家度假,就把裏奇拉到了家裏,兩個好基友夜以繼日的搞,工做以外的時間基本都搞在一塊兒,終於在 1969年的聖誕節搞出來了一個操做系統,也就是咱們熟悉的 UNIX。

值得一提的是,當時他們本想在 DEC-10 上寫,後來沒有申請到,只好在實驗室的牆角邊找了一臺被人遺棄的 Digital PDP-7 的迷你計算機進行他們的計劃,這臺計算機上連個操做系統都沒有,因而他們用匯編語言僅一個月的時間就開發了一個操做系統的原型,他們的同事 Brian Kernighan 很是不喜歡這個系統,嘲笑他們說:「你寫的系統好真差勁,乾脆叫Unics算了。」Unics 的名字是他們對 MULTICS 的一種戲稱,也是根據這個名字,裏奇最後把系統的名字定爲了 Unix。

因而,Unix 就在這樣被遊戲和玩笑創造了,當時是1969年8月。巧合的是,也就是這一年,Linux 之父 Linus Torvalds 在芬蘭出生了。

圖片描述

以前 Multics 操做系統研發中的失敗經驗後,裏奇將UNIX的設計原則定爲Keep it simple & stupid(大道至簡)。

UNIX 的特色:

  • Everything (including hardware) is a file
  • Configuration data stored in text
  • Small, single-purpose program
  • Avoid captive user interfaces
  • Ability to chain program together to perform complex tasks
  • 全部的事物(甚至硬件自己)都是一個的文件。
  • 以文本形式儲存配置數據。
  • 程序儘可能朝向小而單一的目標設計
  • 儘可能避免使人困惑的用戶接口
  • 將幾個程序連結起來,處理大而複雜的工做。

UNIX 的出現一改 Multics 操做系統的大型程序的複雜性,每一個單一執行目的的小程序都是簡潔高效,開發時間短,穩定性卻更好。

UNIX 由許多小程序構成,每一個小程序只能完成一個功能,任何複雜的操做都必須分解成一些基本步驟,再由小程序逐一完成。雖然看起來很低效,實際上這些小程序能夠像七巧板同樣自由組合,輕易就能完成意想不到的大任務。

後來,在此基礎上又衍生了好幾代的 UNIX 系統,直至目前的 Mac OS 和 Linux。

圖片描述

因爲 UNIX 諸多優勢,人們將它稱爲軟件中的瑞士軍刀。

順手發明 C語言

做爲一門偉大的編程語言,C 語言是藉助 UNIX操做系統的翅膀而起飛的,UNIX 操做系統也因爲 C 語言的存在而得以快速落地生根,二者相輔相成,成就了軟件史上最精彩的一幕。而這一幕,離不開丹尼斯·裏奇的一手操辦。

最初的 UNIX 系統就是用匯編語言編寫的,而當時的一些應用是由叫作 B語言的解釋型語言和彙編語言混合編寫的,在移植的過程當中遇到很多麻煩。一開始他們想嘗試用 Fortran(福傳,源自於「公式翻譯」的縮寫,是世界上第一個被正式採用並流傳至今的高級編程語言。),但是失敗了。後來他們用一個叫 BCPL(Basic Combined Programming Language)的語言開發,他們整合了 BCPL 造成 B 語言,後來裏奇以爲 B 語言仍是不能知足要求,在 UNIX 的移植方面依然不盡人意,此後又對 B語言作了改進,C語言這才正式誕生。

C 語言也貫徹了 UNIX 大道至簡的原則,語法簡潔,結構清晰。爲此裏奇還本身寫了本教材《C編程語言》,只有100頁....

圖片描述

公衆號後臺回覆:C,便可查看PDF版編程手冊

他仍是黑客之父...

因爲 C語言和 Unix系統 兩項成就,裏奇成爲許多編程愛好者膜拜的對象。裏奇在1978年出版的《C程序設計語言》被程序員們稱爲「白皮書」,得到狂熱擁戴。

然而,因爲 C語言的簡潔和高效,也成爲入侵他人電腦的利器之一。裏奇所以被諸多電腦黑客尊爲導師,雖然裏奇本人並不承認這一說法。

這裏還有一個小故事。

在 Unix 研發成功後不久,安裝了這一程序的 PDP-11 被放在貝爾實驗室供你們使用。有一天,你們發現兩位創始人老是能夠獲得最高的權限輕鬆進入他們的賬戶,在貝爾實驗室這種高人云集的地方,這簡直是太不能容忍的事情了。

因而,若干憤懣的同事仔細分析 Unix代碼,找到後門,修改後再從新編譯整個 Unix程序。當全部人都覺得這個世界應該今後清靜了的時候,卻發現他們的賬戶權限仍是很容易泄露。

直到不少年後,肯和裏奇才道出其中的原委,原來代碼裏確實存在後門,不過並不在Unix代碼中,而是藏在編譯Unix的編譯器裏。

知乎上有個問題「真正的黑客是什麼樣的?」,我認爲在裏奇面前,其餘的黑客全都是弟弟,真正的黑客,是搞底層入侵,讓你從根兒上防無可防...

傳奇謝幕

那個年代社交網絡還很不發達,再加上裏奇一直沒有結婚,平常的生活也比較宅,因此從他在退休以後就一直沒有太多的資料可考。就連他的準確去世時間,咱們都不得而知。

維基百科上的說法是:2011年10月12日,裏奇於新澤西州伯克利·海茨鎮的家中去世,享年70歲。去世的消息由他以前的同事羅勃·派克提供,但未指明具體的去世時間和緣由。

不知道傳奇人物的一輩子是否是充滿了巧合。喬布斯老爺子的去世日期是2011年10月5日,兩人相差不超一個星期。但人們對裏奇的思念,遠不及對喬布斯的鋪天蓋地。

緣由不難理解:喬老爺子的影響力咱們大部分人都能瞭解到,但大衆對於裏奇做出的貢獻知之甚少。

也許你看到這,會感到一絲傷感,有人所以說他是史上最慘的圖靈獎得主。但其實沒必要,他也許就以爲這樣挺好。有些人天生不喜歡給周圍的人添麻煩,他們充實的活在本身的世界。

在裏奇去世後的每一年,計算機愛好者們都會以特有的方式記念這位編程語言的重要奠定人。許多網友的發帖中沒有片言隻字,僅僅留下一個分號「;」。

在C 語言中,英文分號標誌着一行指令語句的結束,網友們以此來悼念「C語言之父」,美國著名計算機專家丹尼斯·裏奇(Dennis Ritchie)所引領的時代悄然遠去。

-END-

掃描下方二維碼,關注社區官方公衆號,後臺回覆關鍵字「C」,查看PDF版《C編程語言手冊》

部份內容素材來源於網絡,如:

Wikipedia詞條:Dennis Ritchie
C語言網:《記:丹尼斯·裏奇(Dennis Ritchie)》
Techorange:《改變世界的男人- C 語言之父 Dennis Ritchie 逝世;沒有他,就沒有 Linux、BSD、Mac OS》
知乎:《丹尼斯里奇是什麼人?》
差評:《沒他,還玩個鳥手機,上個鳥網,而絕大多數人並不知道他...》
書生劍客:《肯·湯普森、丹尼斯·裏奇與UNIX、C語言》

圖片描述

相關文章
相關標籤/搜索