<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

       Unix哲學是自下而上,而不是自上而下的,注重實效,立足于豐富的經驗,你不會在正規方法學和標準中找到它。

       Unix管道的發明人Doug McIlroy曾經說過:

    1、讓每個程序就做好一件事,如果有新任務就重新開始,不要往新程序中加入功能而搞的復雜。

    2、假定每個程序的輸出都會成為另一個程序的輸入,哪怕那個程序是未知的。輸出中不要有無關的信息干擾,避免使用嚴格的分欄格式和二進制格式輸入。不要堅持使用交互式輸入。

    3、盡可能早將設計和編譯的軟件投入試用,哪怕是操作系統也不例外,理想情況下應該是幾星期內,對抽劣的代碼別猶豫,扔掉重寫

    4、優先使用工具,而非拙劣的幫助來減輕編程任務的負擔,工欲善其事,必先利其器。


    Rob Pike在《Notes on C programming》中提到:

    原則1:你無法斷行程序會在什么地方耗費運行時間。瓶頸經常出現在想不到的地方,所以別急于胡亂找個地方改代碼,除非你已經證實那兒就是瓶頸所在。

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

    原則3:花哨的算法,在n很小的適合通常很慢,而n通常很小。花哨算法的常數復雜度很大,除非你確定n一直很大,否則不要用花哨算法(即使n很大,也要優先考慮原則2)。

    原則4:花哨的算法比簡單的算法更容易出bug ,更難實現。盡量使用簡單的算法配合簡單的數據結構。

    原則5數據壓倒一切。如果已經選擇了正確的數據結構并且把一切組織得井井有條,正確的算法也就不言自明,編程的核心是數據結構,而不是算法。

    原則6:沒有原則6.


    Ken Thompson對原則4做了強調:

    拿不準就窮舉。


    Unix哲學的17條原則:

    1、模塊原則:簡潔的接口拼合簡單的部件。

    2、清晰原則:清晰勝于機巧。

    3、組合原則:設計時考慮拼接組合。

    4、分離原則:策略同機制分離,接口同引擎分離。

    5、簡潔原則:設計要簡潔,復雜度能低則低。

    6、吝嗇原則:除非卻無他法,不要編寫龐大的程序。

    7、透明性原則:設計要可見,以便審查和調試。

    8、健壯原則:健壯源于透明與簡潔。

    9、表示原則:把知識疊入數據,以求邏輯質樸而健壯。

    10、通俗原則:接口設計避免標新立異。

    11、緘默原則:如果一個程序沒什么好說的,就沉默。

    12、補救原則:出現異常時,馬上退出,并給出足夠錯誤信息。

    13、經濟原則:寧花機器一分,不花程序員一秒。

    14、生成原則:避免手工hack,盡量編寫程序去生成程序。

    15、優化原則:雕琢前先要有原型,跑之前先學會走。

    16、多樣原則:絕不相信所謂“不二法門”的斷言。

    17、擴展原則:設計著眼未來,未來總是比預想來得快。


    Unix哲學之一言以蔽之:KISS

    Keep it simple,stupid!

    應用unix哲學:

    1、只要可行,一切都應該做成與來源和目標無關的過濾器

    2、數據流應盡可能的文本化(這樣可以用標準工具來查看和過濾)。

    3、數據庫部署和應用協議應盡可能文本化(讓人閱讀和編輯)。

    4、復雜的前端(用戶界面)和后端應該涇渭分明

    5、如果可能,用c編寫前,先用解釋性語言搭建原型

    6、當且僅當只用一門編程語言會提高程序復雜度時,混用語言編程才比單一語言編程來得好。

    7寬收嚴發(對接收的東西要包容,對輸出的東西要嚴格)

    8、過濾時,不需要丟棄的消息絕不丟。

    9小就是美。在確保完成任務的基礎上,程序功能盡可能的少。


    最后強調的是態度:

    要良好地運用unix哲學,你就應該不斷地追求卓越,你必須相信,程序設計是一門技藝,值得你付出所有的智慧、創造力和激情。否則,你的視線就不會超越那些簡單、老套的設計和實現;你就會在應該思考的時候急急忙忙跑去編程。你就會在該無情刪繁就簡的時候反而把問題復雜化——然后你還會反過來奇怪你的代碼怎么會那么臃腫,那么難以調試。

    要良好地運用unix哲學,你應該珍惜你的時間絕不浪費。一旦某人已經解決了某個問題,就直接拿來利用,不要讓驕傲或偏見拽住你又去重做一遍。永遠不要蠻干;要多用巧勁,省下力氣在需要的時候用,好鋼用到刀刃上。善用工具,盡可能將一切自動化

    軟件設計和實現是一門充滿快樂的藝術,一種高水平的游戲。如果這種態度對你來說聽起來有些荒謬,或者令你隱約感到有些困窘,那么請停下來,想一想,問問自己是不是已經把什么給遺忘了。如果只是為了賺錢或者打發時間,你為什么要搞軟件設計,而不是別的什么呢?你肯定曾經也認為軟件設計值得你付出激情……

    要良好地運用unix哲學,你需要具備(或者找回)這種態度。你需要用心。你需要去游戲。你需要樂于探索。


    操作系統的風格元素:

    1、什么是操作系統的統一性理念

    2、多任務能力

    3、協作進程(IPC

    4、內部邊界

    5、文件屬性和記錄結構

    6、二進制文件格式

    7、首選用戶界面風格

    8、目標受眾

    9、開發的門坎


    評論

    # re: 《Unix編程藝術》重讀筆記(一)  回復  更多評論   

    2010-03-01 21:54 by hoorace
    發現java中的n多設計思想是從unix編程中繼承的。

    # re: 《Unix編程藝術》重讀筆記(一)  回復  更多評論   

    2010-06-30 13:36 by 今天還是再編程
    同意樓上!

    # re: 《Unix編程藝術》重讀筆記(一)  回復  更多評論   

    2010-07-01 21:48 by 明天又是編程
    應該說這種單想是通用的 ...
    一種思想,一種原理,就有它的適用范圍。

    # re: 《Unix編程藝術》重讀筆記(一)  回復  更多評論   

    2011-11-24 13:21 by nightmare23
    好高深的哲學啊。。。

    # re: 《Unix編程藝術》重讀筆記(一)  回復  更多評論   

    2012-03-23 18:07 by 開啟
    這寫得不錯

    # re: 《Unix編程藝術》重讀筆記(一)  回復  更多評論   

    2012-03-24 11:56 by 瘋狂的烤冰
    發現一個bug:第一行“失效”應該是“時效”吧?

    # re: 《Unix編程藝術》重讀筆記(一)  回復  更多評論   

    2012-03-26 09:29 by dennis
    @瘋狂的烤冰
    不是,是實效,感謝你的指正。
    主站蜘蛛池模板: 三年片在线观看免费观看大全动漫 | 国产在线精品免费aaa片| 日本最新免费不卡二区在线| 亚洲人成电影网站| 在线天堂免费观看.WWW| 亚洲国产午夜电影在线入口| 1000部拍拍拍18勿入免费视频软件| 久久亚洲私人国产精品vA | 免费精品国产自产拍在| 91亚洲视频在线观看| 国产香蕉免费精品视频| 77777亚洲午夜久久多喷| 免费的一级黄色片| 香港经典a毛片免费观看看| 亚洲精品亚洲人成在线观看下载| 免费夜色污私人影院网站电影| 亚洲国产天堂久久综合| 大妹子影视剧在线观看全集免费| 亚洲日韩av无码| 美丽的姑娘免费观看在线播放| 亚洲伊人久久大香线蕉影院| 成熟女人牲交片免费观看视频| 亚洲GV天堂无码男同在线观看| 国产jizzjizz免费视频| 久久一区二区三区免费| 久久精品国产亚洲AV麻豆王友容| 亚洲免费在线视频观看| 亚洲中文字幕久久无码| 亚洲高清偷拍一区二区三区| a毛片在线免费观看| 亚洲另类古典武侠| 亚洲av无码专区在线观看素人| 国产做国产爱免费视频| 亚洲AV成人噜噜无码网站| 国产成人无码免费视频97| 成在人线av无码免费高潮喷水 | 亚洲日本人成中文字幕| 免费人成年轻人电影| 99精品视频在线观看免费播放| 亚洲国产中文在线二区三区免| 四虎1515hm免费国产|