好書短評之《Linux/Unix設計思想》

何逸勤發表於2012-02-22

“參照國外讀者的評價,找到你需要的書。”在你決定購買本書之前,本欄目將努力向讀者朋友們呈現公正客觀的評價。 如果你發現這是本好書,請不要忘記收藏

5星評價,Gancarz真是個哲學家
by K. Karagianni(希臘)

本書出色地闡述了開源革命的重要性,這是我給它評5顆星的首要原因。
此外,本書並非鸚鵡學舌地重複“Unix中一切皆檔案”等的Unix基本設計準則,而是歸納出Unix為軟體工程學提供靈感和創新的方法,而這些方法基本都已經在GNU/Linux中應用了。
本書還論證了GNU/Linux(也就是Unix)相對於其他桌面系統的優越性。
我最喜歡的一點,是本書對Unix準則和實際生活範例所做的類比。閱讀了大量Unix和開源軟體書籍之後,我力推這一本。

5星評價,學習Linux是不可思議的智力投資
by James J. Bell(美國)

如果你還在猶豫要不要買這本書,那讓我來幫幫你。
1986年的時候,我16歲,跟弟弟一起在一臺IBM PC上使用DOS。我碰到的總是蜂鳴音和控制字元,而身邊根本沒有比我更懂Unix的人教路。那時,Unix已經出現了16年了!為什麼Unix還沒有移植到PC上呢?
時光快進10年,我已經擁有計算機資訊系統的學士學位,並以MVS/JCL/COBOL II/DB2/CICS/ROSCOE/FILEAID等工具為生。使用JCL/FILEAID來分割檔案,效率低得就像用螺絲刀來一個個地擰螺絲。要用Unix的話,做這點兒事都是跟玩兒一樣的。我對這些JCL/FILEAID語法記憶猶新,但這些知識已經毫無價值。如果當時學的是grep awk,那我的技能在以後都仍將值錢啊!
長話短說,學習Unix/Linux是超值的投資。為什麼?在你不一定能預見的將來,Unix/Linux將大行其道。這本書讓我很傷感,傷感的是看到Mike Gancarz講述Unix/Linux的故事時,我已經37歲了。如果在腦袋能飛速吸收新知時學了這些,那我會混得比現在好很多很多。我總結一下,如果你已經老大不小了,那就別想什麼Linux了,繼續每隔三五年地付給微軟一筆小錢來升級系統拉倒。
這本書讓你從結交兄弟的角度來看待問題。用兄弟們的系統,哪裡需要付錢?當然,Linux上的遊戲還不夠,給兄弟們點時間嘛。不過,同時也需要自己花點時間學習命令列。不論命令列的標誌第一眼看上去有多神祕,我都可以保證Linux其實是合乎邏輯、甚至平易近人的。Linux是長久的事業,你投入到學習Linux的每一秒,其收效都能傳承下去。
這本書沒有講任何語法,但能讓你學到Unix/Linux的思想體系。有些部分我沒整太明白,但這是必經的第一步。這本書是Linux學習之旅的第一站。堅定點,我能理解你的感受,我們共同前進吧。

5星評價,精彩絕倫的閱讀體驗
by Prometheas(美國)

幾乎沒有書能把軟體開發和哲學之間的道道兒說清楚,但Mike Gancarz居然成功了。這本書不單能擴充你的眼界,如果你從事開發的話,還能提升你所開發的軟體的質量。
無論是程式設計師或否,都能欣賞這本書,沒有任何內容要求任何的開發技能。至少,你可以學會像欣賞建築作品那樣去欣賞軟體系統。我就這樣點到為止吧。
我只有一點點投訴,就是對作者的那種幽默感不太感冒,就這一點點了。
我傾力推薦這本書。

4星評價,每個人都有其學習曲線
by Yong Zhi(美國)

作者曾是程式設計師,因此在本書中,他結合了個人經歷和觀察來闡述軟體世界。
我認為本書很大程度上是關於實踐和觀點而非“哲學”的。不過,我不得不同意他的大多數意見。

比如,下面是Mike Gancarz的思維過程:
1. 只有神仙,才能一步到位地設計出正確的軟體。
2. 因此,不要在一開始就考慮所有的問題,先寫出個精悍的規範是正事兒。
3. 構建原型來測試做出的假設。
4. 以迭代的測試/重寫過程來最終獲取正確的設計。
5. 結論:Unix就是從原型演化出來的。

如果感興趣的話,可以細緻看看作者怎麼論述以下9條準則的:
1. 小即是美。
2. 每個程式應該只完成好一項功能。
3. 儘快建立原型。
4. 可移植性優先於效率。
5. 以純文字儲存資料。
6. 利用軟體的槓桿作用。
7. 使用shell指令碼提升槓桿和可移植性。
8. 避免強制性使用者介面。
9. 把每個程式都做成過濾器。

Mike Gancarz的敘事方式,在類似“優秀程式設計師編寫優秀程式碼,非凡程式設計師借用優秀程式碼”等段落表露無遺。(引用了書中一大段,請直接看書吧。)如果這樣的論述還不夠清楚,作者還會搬出滾石樂隊和貓王來類比。這本書正是使用了大量啟發性的故事來揭示軟體工程師的喜惡,並糾正他們的偏見。

4星評價,兼收幷蓄的文化
by W Boudville(Top 1000 Reviewer)

Unix和Linux可被認為是能互換的。通用的Linux命令都跟此前相應的Unix版本擁有共同的名字。Linux整體而言真的跟Unix沒什麼差別,Mike Gancarz詳細地解釋了這一點。本書討論了兩者之間的相似性和差異點。最大的差異在於Unix是專有的系統。不過,即便在Linux出現之前,Unix的很多shell指令碼和命令,也都移植到另外的Unix系統上了。從Unix過渡到Linux,其實並沒有開發文化上的大動盪。
本書的一些章節宣揚了應該以純文字而非特定二進位制格式來儲存資料。注意啊!這本書應該多說幾句來強調這一點的。XML目前已被廣泛採用,完全因為它是純文字。HTML的情況也是一樣。閱讀和編輯的便利性,推動了HTML的成功。
本書還討論了為什麼可移植性的重要性遠高於執行效率。例如,shell指令碼的可移植性遠超過跑得稍微快點的C程式,而兩者的輸出效果是一致的。同樣的比較,也適用於Java程式碼和原生的二進位制程式碼。

相關文章