1. 程式人生 > >影響Linux發展的四位天才黑客

影響Linux發展的四位天才黑客

代碼 理查德 英文名 裏的 工程 喜歡 九月 就是 ali

  影響Linux發展的四位天才黑客

  相信大家對 Linux 再熟悉不過了。我們都知道 Linux繼承自 Unix,但其實他們上一代還有一個 Multics。從最早的 Multics 發展到最早版本的 Linux,用了 28 年。這其中有四位天才級大師的貢獻功不可沒。現在就大家一起來回顧一下這段歷史

  操作系統鼻祖——Multics

技術分享圖片

  Multics 全稱是 MULTiplexed Information and Computing System。維基翻譯過來是 多任務信息與計算系統。它是一套分時多任務操作系統。那到底是個啥東西呢?可以簡單的理解是個支持並發的操作系統。舉個例子,我們假設現在網易雲音樂是這個大的系統,如果我們是個單任務系統的話,現在你要聽歌,但是發現現在有一個人已經在聽歌了,那麽你就只能等他聽完了,沒人在線了,你才可以聽。而如果是多任務的話,咱們可以這樣,你聽歌的同時,他也在聽,因為計算機的處理速度非常快,所以它在切換任務的時候。你不會感覺到有任何卡頓現象。這個項目在 1964 年由貝爾實驗室麻省理工學院及美國通用電氣公司共同參與研發。目的是實現連接 1000 個終端機器,支持300個用戶同時上線,但是這個項目進度太慢了,最終這裏面的人被裁員,同時貝爾實驗室的率先退出此項計劃

  Unix 的創造

技術分享圖片

  左:Thompson | 右:Ritchie

  這其中有兩位大佬就是實驗室的成員,也是我們今天介紹的兩位主角。一個是肯尼斯·藍·湯普遜 (英文名:Kenneth Lane Thompson),另外一個是丹尼斯·麥卡利斯泰爾·裏奇(英文:Dennis MacAlistair Ritchie),Thompson 在業余時間“不務正業”地弄了一個“星際旅行”的遊戲程序。

  它之前在 Multics 上弄的時候的時候,發現玩起來非常不爽,就是會響應有時候快,有時候慢。就像你玩遊戲的時候老是有延遲,你肯定不爽啊。他在庫房發現一臺閑置的 PDP-7 機器,想著自己弄一個簡化版本的操作系統,只支持單機即可。於是便動手開幹,要知道那時候不像現在什麽東西都給你準備好了,他和他的搭檔就一起一個個實現文件系統、進程、設備文件、命令行解釋器等等工具程序。(筆者OS:大師就是大師工程能力令人乍舌!!!)完成之後,他讓同事們一起玩他的遊戲。但同事對他的這個遊戲沒有什麽興趣,反倒對這個系統有興趣。同事們發現他這個相當於是 Multics 的簡化版本,便戲稱它這個是 "UNiplexed Information and Computing Service”,即沒路信息計算系統,縮寫為Unics,取其諧音Unix,這就是 Unix 的由來。此時已經是 1970 年了。小夥伴們可以打印一下計算機上的最早時間,你會發現,最早的時間就是 1970 年,即 Unix 誕生元年。Kenneth 在寫完操作系統開發後,覺得 Unix 需要一個系統級的編程語言,於是就創造了 B 語言 (Basic Combined Programming Language 基本組合編程語言),但後面丹尼斯發現B語言只適合處理某些種類的問題,具有自身的局限性,於是便創造了新的語言,就是我們今天熟知的 C 語言

  Unix BSD 分支的夭折

  Unix 這個操作系統非常好用,於是便在貝爾實驗室內部流傳開來,並經過不斷改良。到 1974 年的 7 月貝爾實驗室公開了第五個版本的 Unix ,這首先引起了學術界的關註,並向其索取源碼用作教育目的。1978 年伯克利大學推出了以 Unix 第六個版本為基礎的拓展版。於是首個 Unix 拓展分支出現,並命名為 BSD (即 Berkeley Software Distribution 伯克利分發版)。80 年代後期,幾個伯克利畢業的同學,成立了一家Berkeley Software Design Inc.公司,簡稱 BSDi。專門銷售 BSD 的商業版本。當時貝爾屬於 AT&T ,而AT&T被《謝爾曼反托拉斯法》規定了不能銷售除了電話機電報機等之外的商品。後來 AT&T 解體了,Bell 可以售賣 Unix 了。於是把 BSD 告上了法庭,這對 BSD 來說,是一個致命的打擊。並且,更過分的是,Bell 把這個價格定得死貴死貴的,一份授權 4 萬美元,這讓當時很多的研究者和學者望而卻步。也是 Unix 厄運的導火索

  Gnu計劃

技術分享圖片

  在 Unix 開始收費的同時,我們今天要聊的第三位老哥登場了——理查德·馬修·斯托曼(英文名:Richard Matthew Stallman),他發起了 GNU 計劃, 目標是創建一套完全自由的操作系統。同時開創了 Copyleft 的概念。你看一下它的 logo 就很有意思。

技術分享圖片

  看圖思意,我們可以理解它是反著作權,但其實它並不是說要作者放棄著作權。它的核心其實是需要使用著作權法的原則來保護使用、修改和分發自由軟件的權利。而創造這個之初,其實他想要實現的,就是一個類似 Unix 的自由的操作環境,註意,這裏的核心是自由。這個可以從 《Gnu 宣言》中的這段文字窺見一二——“重現當年軟件界合作互助的團結精神”

  Gnu 發起後,斯托曼和他的小夥伴陸續把計劃中的編輯器、編譯器和 shell 完成了。唯獨缺乏操作系統核心。他們陸續嘗試了基於 Hurd、GNU Mach 內核進行開發,認為可以借此加速操作系統的開發。但因為一直不確定卡內基梅隆大學何時要將核心源代碼發布,造成計劃胎死腹中

  Linux 的誕生

技術分享圖片

  時間推移到 1991 年,一名 21 歲就讀赫爾辛基大學的計算機科學專業的學生——林納斯·托瓦茲(瑞典語:Linus Benedict Torvalds)登場了,他當時發現 Minix (塔能鮑姆教授為了教學之用而創作的類 Unix 的操作系統)一些不完善的地方。但塔能鮑姆教授覺得他寫的這個東西,僅僅是用作教學,因此也不準備把它完善。這個時候,托瓦茲想著要不自己實現一個?剛開始就打算寫一套簡單的操作系統內核,並馬上著手開幹。8月25日,他在 comp.os.minix 發了一個帖子:

  我在做個(自由的)操作系統(就是個興趣愛好,我不會搞得像GNU那麽大那麽專業),打算讓它工作在386 AT平臺上。它從四月就開始醞釀了,馬上就快好了。我想要那些喜歡或不喜歡minix的人的意見,因為我的系統和它有點類似(同樣的文件系統的物理布局——由於實際原因——還有些其他的東西)。

  我現在已經移植了bash(1.08)和gcc(1.40), 而且看起來奏效了。這意味著我會在幾個月內得到一些實用的東西。“……”是的——它沒有任何minix代碼,並且它有一個多線程的fs。它不可移植(使用386任務切換等),而且它可能永遠不會支持除AT硬盤之外的其他東西,因為我只有這些:-(。[1]

  同年九月份,Linux 內核版本 0.01 在芬蘭大學和研究網絡的 FTP 服務器上發布,有 10239 行代碼,一個月後, 0.02 版本的內核版本發布。不愧為 Linux 操作系統之父,這麽短的時間內就可以把一個操作系統的核心弄出來

  Linux 內核是在遵守 Gnu 通用公共許可證之下發布的, 而這邊 Hurd 內核的計劃嚴重延期了。慢慢的,Linux 則替代了原來要開發的 Hurd 內核。至此,Gnu 計劃基本完成。此時操作系統命名為 Gnu/Linux。但人們卻往往把它簡稱為 Linux,求斯托曼寶寶的心理陰影面積。要說名字叫法這個事,真不是偶然,比如 Uber 這個第一個詞讀 “汙”,但是國內很多人把他讀作“優”,後來官方也只能發布官方版為“優步”,類似的還有 wiki、ubuntu 等。有興趣的小夥伴可以自己去了解下。

技術分享圖片

  1994 年 3 月 14 日,Linux 內核 1.0.0 發布,共 176250 行代碼。也就是正式版。至此之後 Linux 得到了長足的發展,也影響我們無數人的工作方式,毫不誇張地說,Unix 以及 Linux 的創造和發展,對整個社會的歷史進程,有著深遠的影響。而他們在一開始,其實不過是湯普遜想實現一個遊戲程序,托瓦茲不過是想參照著 Minix 並完善它沒有實現的功能罷了,所有說,對程序員來說,適當的“不務正業”,可能會有意外的驚喜

  總結

  縱觀 Linux 的早期發展史,從肯尼斯·藍·湯普遜、丹尼斯·麥卡利斯泰爾·裏奇、理查德·馬修·斯托曼以及林納斯·托瓦茲這四個天才級黑客身上。我們會發現他們的一些共同特質

  首先就是驚人的執行力,要知道,在他們那個時期和圈子裏。其實是有很多人能夠做到和他們一樣的事情。但為什麽是他們首先完成了這件事並名留史冊?機會永遠留給有準備的人沒錯,但其實這句話不完整,機會其實是留給第一時間抓住它的有準備的人

  其次培養自己的興趣愛好。不管是湯普遜想實現一個星際旅行遊戲,還是托瓦茲想做個個人的操作系統。它的源動力都來自於他們的興趣愛好。很難想象一個人在自己不感興趣的點上,能做出點什麽成績。因此,我們應該在日常保護好自己的興趣愛好。他不一定能讓你實現可見的財富上的收益,但卻可能讓你成為一個更有趣的人

  最後多分享,保持開放的心態。Unix 之所以胎死腹中,就是因為早期的閉源,錯過了最好的發展機會。而斯托曼、托瓦茲倡導的開源使得 Linux 得到了繁榮發展。因為開源,能夠讓更多的人看到你的代碼,互相學習交流,從而保持整個社區的長足進步

  以上即是 Linux 的早起發展史,希望對你有所啟發。

影響Linux發展的四位天才黑客