Unix哲學(Unix程式設計藝術)
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,儘量編寫程式去生成程式。
優化原則:雕琢前先要有原型,跑之前先學會走。
多樣原則:決不相信所謂“不二法門”的斷言。
擴充套件原則:設計著眼未來,未來部比預想來得快。
相關文章
- Unix程式設計藝術,Unix哲學程式設計
- 每個程式設計師都應該讀《Unix程式設計藝術》程式設計師
- 《Linux/Unix設計思想》作者Mike Gancarz:Linux/Unix哲學的印證(圖靈訪談)Linux圖靈
- [英]《Linux/Unix設計思想》作者Mike Gancerz:Linux/Unix哲學的印證(圖靈訪談)Linux圖靈
- 《Unix 網路程式設計》15:Unix 域協議程式設計協議
- [譯]從LinkedIn,Apache Kafka到Unix哲學ApacheKafka
- Unix哲學17條原則的新感悟
- UNIX系統程式設計的瑞士軍刀 --《UNIX環境高階程式設計》書評程式設計
- UNIX多執行緒程式設計執行緒程式設計
- C 語言程式設計(unix) (轉)程式設計
- Linux/Unix 桌面趣事:ASCII 藝術水族箱LinuxASCII
- UNIX訊號(signal)程式設計 - UNIX高階環境程式設計第10章讀書筆記程式設計筆記
- 《程式設計師程式設計藝術》程式設計師
- 程式語言設計,程式設計哲學程式設計
- unix環境高階程式設計(中)-程式篇程式設計
- UNIX網路程式設計學習(4)--值-結果引數程式設計
- 程式導向程式設計哲學程式設計
- Unix環境高階程式設計——第一章-UNIX基礎知識程式設計
- 程式設計師的哲學程式設計師
- Unix技術網
- 《Unix 網路程式設計》05:TCP C/S 程式示例程式設計TCP
- UNIX網路程式設計 卷2:程式間通訊程式設計
- [書呆子]像Unix那樣去生活——《LInux/Unix設計思想》Linux
- Unix高階程式設計學習筆記--系統呼叫簡介程式設計筆記
- linux/unix程式設計手冊-16_20Linux程式設計
- UNIX網路程式設計 卷2 原始碼使用程式設計原始碼
- 程式設計必知的10個Unix命令技巧程式設計
- Unix(Linux) C程式設計問題精粹 (轉)LinuxC程式程式設計
- Unix(Linux) C程式設計問題精粹(轉)LinuxC程式程式設計
- Unix(Linux)C程式設計問題精粹(轉)LinuxC程式程式設計
- 計算機程式設計藝術計算機程式設計
- UNIX網路程式設計學習(16)--使用poll的TCP伺服器程式程式設計TCP伺服器
- 程式設計藝術家之路程式設計
- 漫談哲學與程式設計程式設計
- Unix下設計動態庫的方法《精通Unix下C語言程式設計與專案實踐》(一)薦C語言程式設計
- unix ,oracle技術區Oracle
- JavaScript DOM 程式設計藝術 學習筆記01JavaScript程式設計筆記
- JavaScript DOM 程式設計藝術 學習筆記 02JavaScript程式設計筆記