Unix哲學(Unix程式設計藝術)

風靈使發表於2019-01-05

Doug Mcilroy:

1.讓每個程式就做好一件事。如果有新任務,就重新開始,不要往原程式中加入新功能而搞得複雜。

2.假定每個程式的輸出都會成國另一個程式的輸入,哪怕那個程式還是未知的。輸出中不要有無關的資訊干擾。避免使用嚴格的分欄格式和二進位制格式輸入。不要堅持使用互動式輸入。

3.儘可能早地將設計和編譯的軟體投入試用,哪怕是作業系統也不例外,理想情況下,應該是在幾星期之內。對拙劣的程式碼別猶豫,扔掉重寫。

4.優先使用工具而不是拙劣的幫助來減輕程式設計的負擔。工欲善其事,必先利其器。

5.一個程式只做一件事,並做好。程式要能協作。程式要能處理文字流,因為這是最通用的介面。

Rob Pike:

1.你無法斷定程式會在什麼地方耗費執行時間。瓶頸經常出現在想不到的地方,所以別急於胡找個地方改程式碼,除非你已證實那兒就是瓶頸所在。

2.估量。在你沒對程式碼進行估量,特別是沒找到最耗時的那部分之前,別去優化速度。

3.花哨的演算法在n很小時通常很慢,而n通常很小。花哨演算法的常數複雜度很大。除非你確定n總是很大,否則不要用花哨演算法(即使n很大,也優先考慮第2條)

4.花哨的演算法比簡單演算法更容易出bug、更難實現。儘量使用簡單的演算法配合簡單的資料結構。

5.資料壓倒一切。如果已經選擇了正確的資料結構並具把一切都組織得井井有條,正確的演算法也就不言自明。程式設計的核心是資料結構,而不是演算法。

給我看流程圖而不讓我看(資料)表,我仍會茫然不解;如果給我看(資料)表,通常就不需要流程圖了;資料表足夠說明問題了。

6.原則6:沒有原則6

Ken Thompson:

模組原則:使用間潔的介面拼合簡單的部件。
清晰原則:清晰勝於機巧。

拿不準就窮舉。

組合原則:設計時考慮拼接組合。
分離原則:策略同機制分離,介面同引擎分離。
簡潔原則:設計要簡潔,複雜度能低則低。
吝嗇原則:除非確無它法,不要編寫寵大的程式。
透明性原則:設計要可見,以便審查和除錯。
健壯原則:健壯源於透明與簡潔。
表示原則:把知識疊入資料以求邏輯質樸與健壯。
通俗原則:介面設計避免標新立異。
緘默原則:如果一個程式沒什麼好說的,就沉默。
補救原則:也現異常時,馬上退也並給出足夠錯誤資訊。
經濟原則:寧花機器一分鐘,不花程式設計師一秒鐘。
生成原則:避免手工hack,儘量編寫程式去生成程式。
優化原則:雕琢前先要有原型,跑之前先學會走。
多樣原則:決不相信所謂“不二法門”的斷言。
擴充套件原則:設計著眼未來,未來部比預想來得快。

相關文章