天天看點

Unix哲學

mcllroy:四分之一世紀的unix哲學 

       douglas mcilroy是unix系統上管道機制的發明者,也是unix文化的締造者之一。他歸納的unix哲學如下:

<b>程式應該隻關注一個目标,并盡可能把它做好。讓程式能夠互相協同工作。應該讓程式處理文本資料流,因為這是一個通用的接口。</b>

規則一:你永遠不會知道你的程式會在什麼地方耗費時間。程式的瓶頸常常出現在意想不到的地方,是以在你确信找到瓶頸後再動手優化代碼吧。

規則二:測試代碼。隻有在你詳細測試了代碼,并且發現一部分代碼耗費了絕大部分的運作時間時再對程式作速度優化。

規則三:功能全面的算法(fancy algorithm)在處理小規模問題時效率很低,這是因為算法時間效率中的常量很大,而問題往往規模很小。除非你知道你遇到的常常是複雜的情況,否則就讓代碼醜陋但是簡單而高效吧。

規則四:功能全面的算法比簡單的算法更容易産生bug,更難實作。盡量使用簡單的算法和資料結構。

規則五:資料決定一切。如果選擇的資料結構能很好的管理資料,算法部分往往不言自明。記住,資料結構,而非算法,才是程式設計的關鍵。

mike gancarz:unix哲學

一:小即是美。

二:讓程式隻做好一件事。

三:盡可能早地建立原型。

四:可移植性比效率更重要。

五:資料應該儲存為文本檔案。

六:盡可能地榨取軟體的全部價值。

七:使用shell腳本來提高效率和可移植性。

八:避免使用可定制性低下的使用者界面。

九:所有程式都是資料的過濾器。

此外還有十條原則則并不為所有人認同,甚至還是争論的焦點(如宏核心和微核心之争)

一:應該允許使用者定制操作環境。

二:讓作業系統核心小而輕。

三:使用小寫字母并盡量簡短。

四:節約紙張,保護樹林。

五:沉默是金。

六:并行地思考。

七:部分加部分大于整體。

八:尋找問題的帕雷托法則。

九:程式随需求而增長(worse is better)。

十:層級地思考。

糟糕的更好

richard p. gabriel提議unix的一個關鍵優勢是他稱作“糟糕的更好”的設計哲學。在“糟糕的更好”的設計風格下,接口和實作的簡單性比系統的任何其他屬性都更重要,包括準确性、一緻性和完整性。gabriel主張這種設計風格擁有關鍵的進化優勢,盡管他也懷疑一些結果的品質。