Unix哲學

 1.McIlroyA Quarter Century of Unix

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

程序應該只關注一個目標,並儘可能把它做好。讓程序能夠互相協同工作。應該讓程序處理文本數據流,因爲這是一個通用的接口。

更加簡化的版本是:做一件事,做好它。雖然只有第三條是特指Unix系統的,但Unix開發者們常常同時強調這三個信條。

2.PikeNotes on Programming in C

羅勃·派克在他的《Notes on Programming in C》中提到了以下格言。雖然這些規則是關於程序設計的,但作爲Unix哲學絲毫不爲過:

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

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

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

規則四:功能全面的算法比簡單的算法更容易產生Bug,更難實現。儘量使用簡單的算法和數據結構。

規則五:數據決定一切。如果選擇的數據結構能很好的管理數據,算法部分往往不言自明。記住,數據結構,而非算法,纔是編程的關鍵。

規則六:沒有第六條規則。

Pike的第一、二條規則重申了高德納的著名格言:“過早的優化是一切罪惡的根源。” Pike的第三、四條規則被肯·湯普遜改述成:“疑惑不定之時最適合窮舉。”事實上,這兩條規則也是KISS原則的具體表現。規則五在之前Fred Brooks的人月神話中也被提及。Jon Bentley的《Programming Pearls》中也有一章闡述了相同的設計哲學。此規則作爲“如果你的數據結構很好,那麼控制它的算法就無關痛癢了”的例子常常被簡化成“簡約地寫代碼,聰明地用數據”。第六條規則當然只是Pike針對蒙提·派森之小品Bruces sketch的幽默發揮而已了。

3.Mike GancarzUNIX哲學

1994年,X Window系統開發組的成員Mike Gancarz根據他自己的Unix系統經驗以及和其他領域使用Unix系統的資深程序員們的討論結果,寫成了《The UNIX Philosophy》,提出了9條訓格之言:

一:小即是美。

二:讓程序只做好一件事。

三:儘可能早地創建原型。

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

五:數據應該保存爲文本文件。

六:儘可能地榨取軟件的全部價值。

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

八:避免使用可定製性低下的用戶界面。

九:所有程序都是數據的過濾器。

此外還有十條原則則並不爲所有人認同,甚至還是爭論的焦點(如宏內核和微內核之爭):

一:應該允許用戶定製操作環境。

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

三:使用小寫字母並儘量簡短。

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

五:沉默是金。

六:並行地思考。

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

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

九:程序隨需求而增長(Worse is better)。

十:層級地思考。

 4.糟糕的更好

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

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