談談unix(linux)哲學(轉)

先講兩個很老的小故事。

第一個故事。

有一家日本最大的化妝品公司,收到了用戶的投訴。用戶抱怨買來的肥皂盒是空的。這家公司爲了防止再發生這樣的事故,很辛苦地發明了一臺X光檢查器,能夠透視每一個出貨的肥皂盒。

同樣的事故,發生在一家小公司。他們的解決方法是買一臺強力的工業電扇,對着肥皂盒猛吹,被吹走的就是空肥皂盒。

第二個故事。

美國太空總署(NASA)發現在太空失重狀態下,航天員無法用墨水筆寫字。於是,他們花了大量經費,研發出了一種可以在失重狀態下寫字的太空筆。猜猜看,俄國人是怎麼解決的?(答案在本文結尾處。)

=====================

這幾天,我在看Unix,發現很多人在談“Unix哲學”,也就是開發Unix系統的指導思想。

Wikipedia上列出了好幾個版本,不同的人有不同的總結。發明管道命令的Doug McIlroy總結了三條,而Eric S. Raymond則在The Art of Unix Programming一書中,一口氣總結了17條(英文版中文版)。

但是我發現,所有人都同意,“簡單原則”——儘量用簡單的方法解決問題——是“Unix哲學”的根本原則。這也就是著名的KISS(keep it simple, stupid),意思是“保持簡單和笨拙”。

下面就是我對“簡單原則”的筆記。如果你想最簡單地完成一項編程任務,我認爲可以從四個方面入手:

1. 清晰原則。

代碼要寫得儘量清晰,避免晦澀難懂。清晰的代碼不容易崩潰,而且容易理解和維護。重視註釋。不爲了性能的一丁點提升,而大幅增加技術的複雜性,因爲複雜的技術會使得日後的閱讀和維護更加艱難。

2. 模塊原則。

每個程序只做一件事,不要試圖在單個程序中完成多個任務。在程序的內部,面向用戶的界面(前端)應該與運算機制(後端)分離,因爲前端的變化往往快於後端。

3. 組合原則。

不同的程序之間通過接口相連。接口之間用文本格式進行通信,因爲文本格式是最容易處理、最通用的格式。這就意味着儘量不要使用二進制數據進行通信,不要把二進制內容作爲輸出和輸入。

4. 優化原則。

在功能實現之前,不要考慮對它優化。最重要的是讓一切先能夠運行,其次纔是效率。“先求運行,再求正確,最後求快。”(Make it run, then make it right, then make it fast.)90%的功能現在能實現,比100%的功能永遠實現不了強。先做出原型,然後找出哪些功能不必實現,那些不用寫的代碼顯然無需優化。目前,最強大的優化工具恐怕是Delete鍵。

==================

答案是,俄國人用鉛筆。

 

在衆多的linux發行版中,目前堅持KISS原則最出名就是SlackWare linux系統。它很棒,很適合做個人的工作站或者桌面系統。

目前,最新版的SlackWare linu 13就快發佈於了,今天已經發布RC版本了……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章