1. 程式人生 > >Linux 之父自傳《just for fun》讀書筆記

Linux 之父自傳《just for fun》讀書筆記

一次偶然的機會,看到了阮一峰老師關於這本書的介紹,當時我就覺得這本書相當有趣。

在沒有讀這本書之前,我覺得 linus 作為發明 Linux 系統的人,應該是一個比較嚴肅的人,就像我的老師一樣。但事實跟我想象的相反,他跟程式設計師一樣,風趣幽默,各種自嘲(他已經在書中不少於一次說自己的鼻子大了),專注於技術問題,還有不修邊幅。。。就如王思聰在網友的眼中只是一個十分有錢的屌絲,linus 在我們眼中大概就是一個有錢、技術十分高超的程式設計師吧!

在正是因為這種原因,這本書讀起來十分輕鬆,有些地方觀點更是十分獨特,讓人拍掌叫好。而他跟 Andrew Tanenbaum 的論戰,更是十分精彩!

以下是我的一些讀書筆記。

生命的意義。。。

我們可以在第一章裡對人們解釋生命的意義何在。這樣可以吸引住他們。一旦他們被吸引住,並且付錢買了書,剩下的章節裡我們就可以胡扯了。

哈哈,這裡可以看到linus這個人相當有意思吧。

生活的意義是什麼?

有三件事對生活是有意義的,他們是生活中所有事情的動機

  • 第一就是生存
  • 第二就是社會秩序
  • 第三就是娛樂
    生活中所有的事都遵循著這個順序,娛樂之後就再無其他了。所以從某種意義上說,生活的意義就是要你達到第三個階段。一旦達到了第三個階段,這輩子你就算成功了。但是你得先超越前兩個階段。

技術最初也是為了生存,為了生存得更好。現在技術大體上還處於社會的層面,但正在朝娛樂的階段發展。......為人們提供了依靠興趣與熱情而生活的機會。與世界上最好的程式設計師一起工作,是一種無與倫比的享受。

關於樣貌!

沒錯,鼻子比人還顯眼。。。而且戴眼睛可能會讓我的大鼻子顯得小一點,所以我就戴了,而且從不摘下來。

關於芬蘭的諾基亞!又黑我大諾記!

芬蘭人都比較沉默,你幾乎找不到話癆子。他們只是聚在一起,但個個沉默寡言,不怎麼聊天。。。因為芬蘭人不樂意麵對面交談,所以我們這兒自然就成了行動電話的理想市場。我們對這種新鮮的玩意有種特殊的依賴感,這股熱情其他國家都無法匹敵。

關於 unix 的簡單哲學

幾乎所有你在 unix 系統上做的事情都是由6個基本操作完成。通過這6個基本的系統呼叫,你幾乎可以在 unix 上完成所有事情。

unix 系統有一個 fork (建立子程序)的概念,這也是 unix 系統的基本操作之一。當一個程序呼叫 fork 指令的時候,它就把自己給複製下來了。這樣你就有兩個一樣的程序,新建的子程序一般用來執行另一個程序——用新的程式替換掉它自己。這就成了系統的第二個基本操作。接著就是另外的4個系統呼叫——開啟(open)、關閉(close)、讀取(read)、寫入(write),都是用來訪問檔案的。這6個系統呼叫組成了 unix 的基本操作,從而構成了 unix 系統。。。

只要你明白這6個基本的系統呼叫,你就能掌握 unix 系統。unix 系統的美妙之處在於,就算你要建立複雜的任務,也不需要特別複雜的介面。只要用一些簡單程序之間的互動,就可以建立任何複雜的任務。你要做的,就是在簡單程序之間,建立它們的交流渠道——管道(pipe)

在一個討人厭的系統中,你想做任何事情,都需要一些特殊的介面。而 unix 系統恰恰相反,它直接把建築構件給你,而這些構件足以用來執行任何任務。這就是所謂的”乾淨的“設計

這大概就是《unix程式設計藝術》中所說的“提供機制,而不是策略”和“kiss原則”。但是設計簡單幹淨並不代表容易,設計簡單幹淨比設計得複雜難得多!

第一個看到 Linux 系統的人

對我這次了不起的壯舉,妹妹莎拉倒是知道,不過我把終端模擬程式演示給她看時,她在顯示器上看到一長串字母A一長串字母B,看了大概五秒鐘,然後說了一句“挺好的”就轉身走了,顯然沒覺得有什麼大不了的。我意識到這確實不像什麼了不起的事。只不過,有些東西表面上可能看起來沒什麼,但背後卻包含了大量繁雜的工作。

linus的媽媽對兒子的評價

linus是一個什麼樣的兒子,我想我已經是回答了——養大他一點都不辛苦,真的。他就喜歡挑戰難題,只要遇到一個問題,接下來的事情他都會自己處理了。當他年少時開始專注於電腦後,他就更不需要什麼額外的養育和教導了。就像以前我和莎拉經常說的那樣,只要把linus和一臺能用的電腦關進一個黑乎乎的小屋裡,再時不時扔點麵條進去,他就會非常滿足。

Minix與Linux之爭,巨集核心與微核心

在90世紀80年代末90年代初,微核心理念十分盛行,而 Linux 系統的成功對它造成了威脅,於是安德魯不斷地在網上發貼抹黑 Linux。

微核心理論認為,作業系統非常複雜,所以必須通過模組化來降低其複雜性。微核心理論的原則是:核心作為作業系統的基本核心,本身的功能越少越好,它的主要功能應該只是通訊。電腦所提供的各種不同服務,都要通過微核心之間的通訊渠道來實現。所以,採用微核心方法,就得儘量分割作業系統的問題空間,讓每個問題空間都儘量簡單。

我覺得這種方法很愚蠢。沒錯,每個模組可以做得很簡潔,但比起讓核心負擔所有功能來說,模組間的互動可就複雜多了。Linux系統採取的就是負擔所有功能的做法。想想人的大腦就知道了。大腦中每一個單獨的部分都不復雜,但是它們之間的相互作用使大腦成為一個高度複雜的系統。這是一個 “1+1>2”的情況。舉個例子,把一個複雜的問題一分為二,然後就認為這個“半問題”的複雜程度都只有原先的一半了,但你忽略了一個事實:這兩個“半問題”之間的聯絡你還沒有考慮呢!於是問題又複雜起來了。微核心原理是要把核心分割為50個獨立模組,每個模組承擔 1/50 的複雜性。但這些人都忽略這個事實:各獨立模組之間的聯絡比原來系統要複雜得多,更何況,每個模組也並不那麼簡單。

相比之下,Linux 系統則小巧得多,執行起來也十分簡單。它並不採用微核心所倡導的那種強制的模組化結構,所以 Minix 比起來,Linux 執行什麼任務都更為直截了當。早些時候,我就發現 Minix 有一個毛病,比如說當系統上同時有5個程式執行,它們分別要讀取5個不同的檔案,那麼這 5 個任務得一個一個執行。換句話說,5 個程序會向檔案系統傳送 5 次請求:“我能讀取一下某個檔案嗎?”而檔案系統的後臺程式是這樣工作的:先接受一個請求,作出迴應,然後再接受下一個請求,再作出迴應。。。。。

Linux 系統是個巨集系統。在 Linux 下,這5個程序會分別向核心發起一個系統呼叫。核心必須非常仔細才不會混淆了這幾個呼叫,但是它會有條不絮地將資源分配給這些程序,讓它們能同時順利地執行各自的任務。這個優勢讓 Linux 系統用起來更加快捷和高效。

對於程式設計的方法論

還記得學校裡那個總能答對問題的傢伙嗎?他的答案總比其他人來得快,恰恰是因為他沒有刻意去尋找正確答案。他並不知道問題本該以什麼樣的標準思路來解決,只是以一種合理的思路來考慮問題。因此別人一聽到他的答案,就覺得合乎邏輯。

程式設計也是如此。你可以用蠻勁解決問題,跟問題慢慢磨蹭,知道它不再是問題為止,看誰磨得過誰。不過這是個愚蠢的辦法。或者你也可以找到正確的方法來解決問題,這樣問題就會立馬消失。換一個角度看問題,你會突然靈光一閃:問題之所以成為問題,只是因為我原先看問題的方法不對

偉大的數學家不會採用既繁瑣又無趣的方法解決問題,因為他們能理解問題背後的真正的內涵,並且利用這個內涵找到更為簡便的方法,從而得出答案。

我還是很難解釋清楚,閉門三天冥思苦想卻徒勞無功,找不到一個漂亮的好方法來解決難題,這程式設計到底有什麼好著迷的?其實,一旦找到了解決問題的哪個漂亮方法,那種感覺就會無與倫比。

程式設計必經階段!

如何領導 Linux 開發

我很早就認識到,作為領導者,最好最有效的做事方法,並不是讓下屬去完成領導吩咐的工作,而是讓他們做真正想做的工作。好的領導者自己出了錯的時候能夠隨時自知,並且懂得如何及時補救。此外,他們還會聽取他人意見,把決策權交給他人。

我換個說法吧。Linux 之所以能成功,大部分都該歸功於我的個人缺點:首先,我很懶;其次,我喜歡佔別人勞動成果的便宜。要不然,”Linux 開發模式”就只能侷限在6個書呆子的小圈子裡,只是日常用郵件交流一下開發心得罷了。

linus與喬布斯

我和喬布斯的世界觀存在根本分歧。史蒂夫就是史蒂夫,跟媒體描述的沒什麼兩樣。他只對自己的目標感興趣,尤其市場這一塊,他極為看重。而我則對技術有興趣,所以他的目標和言論打動不了我。他一直強調,要是我想進入桌上型電腦市場,就應該與蘋果聯手。但我心想:我不在乎啊!為什麼我就應該對蘋果的事情感興趣?我就是覺得蘋果沒意思。我的人生目標可不是衛萊搶佔桌上型電腦市場。

當他知道我一點兒也不關心 Mac 市場的大小,也不關心微軟市場大小時,確實非常驚訝。但是,他事先並不瞭解我有多討厭Mach核心,所以我不怪他

儘管我基本上並不認同他的觀點,但卻還挺喜歡這個人的。

Linux 系統的傳播

從我的臥室裡釋出0.01版本開始,Linux 系統就沒有太大的變化。比起外頭的其他作業系統,Linux 更加靈活。在 Linux 裡面,你就是自己的老闆。而且,至少在web伺服器裡,它不會像那些互相競爭的作業系統那麼“臃腫”,有那麼多多餘的功能設計。

它也流進每一處對它感興趣的地方。Linux 倒是不佔什麼利基市場,但它小巧而靈活,很多地方都用得上它。超級計算機裡有它,還有一些非常非同一般的地方,如美國政府的費米實驗室,NASA,也能找到它的身影。不過,Linux 在這些地方,充其量只能算作是伺服器的 Linux 系統的一種延伸,而桌面電腦 Linux 系統就是我起步的地方。同時,在一些嵌入式裝置中,比如在某些防抱死剎車系統和手錶中,你也能看到 Linux 系統。

關於超時工作

Linux 不是靠犧牲寶貴的睡眠時間換來的。事實上,如果你想聽真話,那我就要說,我更喜歡睡覺。

老實說,我也討厭加班。軟體開發是一門藝術,並不是流水線。不是投入人月就能取得收成的!

關於攻擊者

有人聲稱,作為 Linux 領頭人所產生的壓力,已經使我從一個電腦迷變成了一個混蛋。他錯了,實際上我一直是一個混蛋。

關於 GPL 許可證

GPL 為每個人都提供了機會,成績卓著,這是人類的一個巨大的進步。可是,所有創新都應納入 GPL 嗎? 這他媽的完全不可能,應由開發者自行決定是使用 GPL 還是使用其他保護版權的方法。令我幾乎發瘋的是,理查德·斯托曼認為非黑即白,別無它途,由此產生了不必要的政治劃分。

領導與員工

狗為什麼會這麼喜歡人類?

那可不是因為主人每六個星期就帶它們趣寵物美容,也不是因為偶爾在路邊幫它們拾糞便。狗喜歡人類,是因為狗喜歡被人使喚,這是讓它們活下去的理由。作為人類,你是狗的主人,自然就由你來告訴狗它們應該做什麼。聽從你指揮是它們的情感依託,而且它們就好這口。

不幸的是,人類的天性也是如此。他們總想有人能告訴它們做什麼,這是我們的核心。任何社會性動物的本性都是如此。

但這並不意味著你就該卑躬屈膝。這隻能說明,你比較喜歡和那些指揮你做事的人待在一起。

當然,一些人很有主見,堅定的信念使他們在某些場合敢於這樣表達自己:”少來了,我憑什麼要聽你的?“這樣一來他們就成了領導。成為領導不是難事。而那些缺乏主見的,就會傾向於讓別人來為他們作決定,聽別人的指揮做事。

一語道破碼農與工程師的區別!

對理查德·斯托曼的態度(開源運動的創始人、Emacs、gcc 等開源軟體的創始人)

我對理查德非常反感,我之所以對他反感,完全是因為他總是不停抱怨別人不使用 GPL 。我對理查德敬而遠之,這我隨口就能說出一大堆理由。我認為自己傾向於敬重那些像理查德一樣有強烈道德感的人。但是他們為什麼就不能把這種觀念擺在心裡呢?我最討厭別人告訴我該做什麼不該做什麼。我尤其憎惡別人自認為有資格把他們的觀點凌駕於我的個人決定之上。

關於智慧財產權

對很多人,智慧財產權與人類的創造能力相關,與那些使我們成為人類而不是禽獸的東西相關。在這個背景下,”智慧財產權“這個名稱本身就是一種冒犯:這不是財產,不能像賣動產那些隨便就拿去賣。這可是一種創造性的活動,是人類能做到的最偉大的事情。不過它也是漫漫長夜編寫出來的程式,是能令程式設計師特別驕傲的東西。它實在太寶貴,輕易不會拿去賣:它可是你賴以證明自己的不可或缺的東西。

那種創造力,不管在什麼方面,繪畫、音樂、雕塑、寫作,或者是程式設計,都是神聖不可侵犯的!

許多要求加強智慧財產權立法的討論是基於這樣一種觀點,即給創造者和藝術家以更多的"保護"。而人們似乎不曾、或者說是從未意識到,這樣一種強有力的權利導致一些人剝奪了另一些人的權利。如果你得出我認為版權實際上是有害的結論,那麼你錯了。恰恰相反,我熱愛版權。我只是認為沒必要將版權所有者的權利無限擴大。不要擴大到將消費者的權利都被剝奪殆盡

關於控制慾

當娛樂行業還在貪婪地試圖用技術控制顧客的時候,DVD加密技術就被破解了——還不是被那些想要翻錄 DVD 的人破解的呢,是被那些想要在 Linux 系統上看電影的人破解的。這些才是真正想要買 DVD 的人,但買了也沒用,因為那些 DVD 光碟根本就無法在它們的裝置上使用。娛樂產業的那些人想要保護自家封地的行為就這麼失敗了:加密技術不僅阻礙了市場的擴張,還激發了人們去想方設法破解 DVD 加密技術,目光短淺的短期策略又一次壞了事。

關於Java語言

不要試圖以技術來控制使用者,那是決不可能成功的,最終要對公司造成損害,而且也會阻礙人們對於該項技術的接受。Java 就是一個例子,它現在已經遠沒有其初期那麼富有吸引力了。Sun 公司原本想要控制 Java ,但卻基本上已經失去了它。Java 現在依然執行得很好,然而卻顯然沒有充分發揮其潛力

關於開源開發模式

人們頭一回聽說開源模式時,都覺得不可思議。單靠其背後的開源理念,這種模式是無法傳開的,只有當人們開始注意到開源模式原來是發展和完善最佳質量的技術的最好方式,它才能逐漸獲得人們的青睞。
開源運動如此神奇,其中最令人費解的一點,就是為什麼會有這麼多聰明絕頂的程式設計師願意在完全無報酬的情況下屈尊工作。用一個動機來概括這一切,最合適不過了。在生存已經或多或少得到保障的社會,金錢不是最大的動機。眾所周知,人們被熱情驅使的時候,就能把工作做到最好。要是他們能享受工作的樂趣,更是如此。

對於名聲和財富

醒醒吧,誰不想出名,誰不想有錢?反正我想。十幾歲的時候,我就夢想能成為一個著名的科學家。想愛因斯坦那種,甚至要成為更厲害的。誰不想呢?不做科學家也行,那就賽車手啊!要不然搖滾明星也行。能成為特蕾莎修女那些的,或者美國總統也不錯。

社會為什麼會進步呢?

作為一個技術專家,卻人為科技其實什麼也沒推動。應該是社會改變科技,而不是反過來。科技只不過限制了我們做某件事能達到的程度,以及我們完成某件事的最低成本。

科技,和它創造的所有產品一樣,就目前而言都是愚蠢到家的東西。科技唯一有意思的地方,就是你能用它來幹什麼,而且它背後的驅動因素實際上就是人類真正的需要和興趣。如今人與人之間面對面的溝通已經很少了,因為我們有了新的溝通方式。新的溝通方式能夠得到廣泛的普及,他們想要交流;就算沒有溝通的渠道,他們也會去創造。諾基亞就是這麼來的。

生活的意義

畢竟,我對”生活的意義“的這點看法並不能真正指引你去做應該做的事,它頂多是說:”是的,你應該奮鬥,但生活的最終目的是為了享受樂趣“

當然了,我說得不一定對!

人云亦云的人太多,有自己的主見的人才是難得!