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 網路程式設計》15:Unix 域協議程式設計協議
- [譯]從LinkedIn,Apache Kafka到Unix哲學ApacheKafka
- Unix哲學17條原則的新感悟
- unix環境高階程式設計(中)-程式篇程式設計
- Unix環境高階程式設計——第一章-UNIX基礎知識程式設計
- linux/unix程式設計手冊-16_20Linux程式設計
- 《Unix 網路程式設計》05:TCP C/S 程式示例程式設計TCP
- 《UNIX網路程式設計》筆記 - select和poll程式設計筆記
- Unix高階程式設計學習筆記--系統呼叫簡介程式設計筆記
- unix環境高階程式設計(上)-檔案篇程式設計
- 《Unix 網路程式設計》11:名字和地址轉換程式設計
- 推薦一本技術類書籍:Unix環境高階程式設計程式設計
- Unix pthreadthread
- UNIX環境高階程式設計習題——第二章程式設計
- 程式語言設計,程式設計哲學程式設計
- Unix環境高階程式設計——開源的標準化努力程式設計
- 《UNIX網路程式設計》筆記 - 套接字選項/UDP套接字程式設計筆記UDP
- k14s - 遵循Unix哲學的簡單、可組合的Kubernetes工具
- 《Unix 網路程式設計》13:守護程式和 inetd 超級伺服器程式設計伺服器
- 程式導向程式設計哲學程式設計
- 程式設計師的哲學程式設計師
- UNIX環境程式設計-第四章檔案和目錄程式設計
- 玩轉 PHP 網路程式設計全套之 unix 本地域 socket 通訊PHP程式設計
- 萬物互聯——Unix網路程式設計卷二閱讀後記程式設計
- unix環境高階程式設計(下)-高階IO和程式間通訊篇程式設計
- Unix, Linux 和MacOSLinuxMac
- 漫談哲學與程式設計程式設計
- JavaScript DOM 程式設計藝術 學習筆記01JavaScript程式設計筆記
- JavaScript DOM 程式設計藝術 學習筆記 02JavaScript程式設計筆記
- Redux中的程式設計藝術Redux程式設計
- Michael Feathers:程式設計的藝術程式設計
- Java併發程式設計藝術Java程式設計
- 溝通你我,連線世界——Unix網路程式設計卷一閱讀後記程式設計
- 《UNIX環境高階程式設計》(APUE) 筆記第十一章 - 執行緒程式設計筆記執行緒
- UNIX 常用命令
- unix signal : signalfd, eventfd, timerfd
- 禪與JavaScript程式設計藝術,ZenandTheArtofJavaScriptProgrammingJavaScript程式設計NaN
- 程式設計,不止有程式碼,還有藝術程式設計