reference :
先講兩個很老的小故事。
第乙個故事。
有一家日本最大的化妝品公司,收到了使用者的投訴。使用者抱怨買來的肥皂盒是空的。這家公司為了防止再發生這樣的事故,很辛苦地發明了一台x光檢查器,能夠透視每乙個出貨的肥皂盒。
同樣的事故,發生在一家小公司。他們的解決方法是買一台強力的工業電扇,對著肥皂盒猛吹,被吹走的就是空肥皂盒。
第二個故事。
美國太空總署(nasa)發現在太空失重狀態下,航天員無法用墨水筆寫字。於是,他們花了大量經費,研發出了一種可以在失重狀態下寫字的太空筆。猜猜看,**人是怎麼解決的?(答案在本文結尾處。)
這幾天,我在看unix,發現很多人在談"unix哲學",也就是開發unix系統的指導思想。
wikipedia上列出了好幾個版本,不同的人有不同的總結。發明管道命令的doug mcilroy總結了三條,而eric s. raymond則在the art of unix programming一書中,一口氣總結了17條(英文版,中文版)。
但是我發現,所有人都同意,"簡單原則"----盡量用簡單的方法解決問題----是"unix哲學"的根本原則。這也就是著名的kiss(keep it ******, stupid),意思是"保持簡單和笨拙"。
下面就是我對"簡單原則"的筆記。如果你想最簡單地完成一項程式設計任務,我認為可以從四個方面入手:
1. 清晰原則。
**要寫得盡量清晰,避免晦澀難懂。清晰的**不容易崩潰,而且容易理解和維護。重視注釋。不為了效能的一丁點提公升,而大幅增加技術的複雜性,因為複雜的技術會使得日後的閱讀和維護更加艱難。
2. 模組原則。
每個程式只做一件事,不要試圖在單個程式中完成多個任務。在程式的內部,面向使用者的介面(前端)應該與運算機制(後端)分離,因為前端的變化往往快於後端。
3. 組合原則。
不同的程式之間通過介面相連。介面之間用文字格式進行通訊,因為文字格式是最容易處理、最通用的格式。這就意味著盡量不要使用二進位制資料進行通訊,不要把二進位制內容作為輸出和輸入。
4. 優化原則。
在功能實現之前,不要考慮對它優化。最重要的是讓一切先能夠執行,其次才是效率。"先求執行,再求正確,最後求快。"(make it run, then make it right, then make it fast.)90%的功能現在能實現,比100%的功能永遠實現不了強。先做出原型,然後找出哪些功能不必實現,那些不用寫的**顯然無需優化。目前,最強大的優化工具恐怕是delete鍵。
答案是,**人用鉛筆。
分類:
linux
demoblog
關於Unix哲學
先講兩個很老的小故事。第乙個故事。有一家日本最大的化妝品公司,收到了使用者的投訴。使用者抱怨買來的肥皂盒是空的。這家公司為了防止再發生這樣的事故,很辛苦地發明了一台x光檢查器,能夠透視每乙個出貨的肥皂盒。同樣的事故,發生在一家小公司。他們的解決方法是買一台強力的工業電扇,對著肥皂盒猛吹,被吹走的就是...
關於Unix哲學
這幾天,我在看unix,發現很多人在談 unix哲學 也就是開發unix系統的指導思想。wikipedia上列出了好幾個版本,不同的人有不同的總結。發明管道命令的doug mcilroy總結了三條,而eric s.raymond則在the art of unix programming一書中,一口氣...
Unix哲學基礎
摘自 unix程式設計藝術 unix哲學起源於ken thompson早期關於如何設計乙個服務介面簡潔 小巧精幹的作業系統的思考,隨著unix文化在學習如何盡可能發掘thompson設計思想的過程中不斷成長,同時一路上還從其它許多地方博採眾長。unix哲學說來不算是一種正規設計方法。它並不打算從電腦...