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

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

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

    隨筆-124  評(píng)論-194  文章-0  trackbacks-0
    今天讀到一些UNIX下的編程哲學(xué),對(duì)自己相當(dāng)?shù)挠袥_擊力,把我覺(jué)得有用并且有道理的,自己組織了一下:

    “編程的核心是數(shù)據(jù)結(jié)構(gòu),而不是算法”,即使最簡(jiǎn)單的程序邏輯人類(lèi)來(lái)驗(yàn)證也很困難,但就算復(fù)雜的數(shù)據(jù),對(duì)人類(lèi)來(lái)說(shuō)也相對(duì)容易推導(dǎo)和建模。五十個(gè)節(jié)點(diǎn)的指針樹(shù)要比五十行程序的流程圖更清楚。

    “編程的本質(zhì)是控制復(fù)雜度”,而流程圖、過(guò)程化、結(jié)構(gòu)化、面向?qū)ο笠约捌渌椒ㄕ撉『?#8220;成功”將復(fù)雜度提升到人腦不能處理的地步。所以,降低整體復(fù)雜度的方法是用清晰的接口把若干簡(jiǎn)單模塊組合成一個(gè)復(fù)雜軟件。

    “簡(jiǎn)潔最美”,最錯(cuò)綜復(fù)雜的美妙設(shè)計(jì),常常使我們的設(shè)計(jì)能力超出排錯(cuò)能力,結(jié)果是代價(jià)高昂的廢品。

    “接口和引擎分離”,把復(fù)雜的GUI界面與后臺(tái)處理分做兩端,中間用簡(jiǎn)單協(xié)議架橋。

    “可見(jiàn)才可掌控”,軟件系統(tǒng)的透明性就是說(shuō),你能一眼看出它在干什么,要能監(jiān)視到內(nèi)部狀態(tài)。

    “撐不下去,馬上退出”,出現(xiàn)異常,補(bǔ)救措施明明又沒(méi)成功,還挺在那里,很久才發(fā)現(xiàn)是最壞的一種情況。要么“響亮的倒塌,要么為工作鏈下一環(huán)程序輸出一個(gè)嚴(yán)謹(jǐn)干凈的正確數(shù)據(jù)”。

    “過(guò)早的優(yōu)化是萬(wàn)惡之源”,先要求運(yùn)行,再求正確,最后再求快。還不知道瓶頸就匆忙優(yōu)化,是唯一一個(gè)比亂加功能更損害設(shè)計(jì)的錯(cuò)誤。“最強(qiáng)大的優(yōu)化工具是DELETE鍵”。

    “善用工具”,教會(huì)電腦生成一些簡(jiǎn)單的代碼;一旦有人解決了某個(gè)問(wèn)題,就直接拿過(guò)來(lái)用,盡可能一切都自動(dòng)化。

    “寧花機(jī)器一分,不花程序員一秒”。有的程序員寫(xiě)程序是“為機(jī)器寫(xiě)”,過(guò)份追求效率。想方設(shè)法讓機(jī)器“少做些事”,因此耽誤大量時(shí)間精力。與此相對(duì)地,我們可以使用一些簡(jiǎn)單直接的,即使是相對(duì)費(fèi)時(shí)的算法,浪費(fèi)了一些“機(jī)器的時(shí)間”,但節(jié)省了程序員的精力。又比如,有的語(yǔ)言,將程序員從內(nèi)存釋放中解脫出來(lái),可以更高效的開(kāi)發(fā),這也是一種珍惜程序員精力,讓機(jī)器多做事的例子。
    BTW:我其實(shí)一直以來(lái)都是做C++的,從前總覺(jué)得這才是最“高效”的語(yǔ)言,一向?qū)AVA和腳本語(yǔ)言不感冒,但漸漸才明白,一把鑰匙開(kāi)一扇門(mén),有時(shí)候,甚至是大多數(shù)時(shí)候,選擇后者才是“高效”的做法。機(jī)器只不過(guò)是通了電一堆晶體管,讓它費(fèi)點(diǎn)力沒(méi)什么。

    綜上所述,4個(gè)字母:KISS--Keep It Simple, Stupid!


    最后,還是把UNIX哲學(xué)的17個(gè)原則完整列一下:
    1、 模塊性原則:寫(xiě)簡(jiǎn)單的,通過(guò)干凈的接口可被連接的部件。
    2、 清楚原則:清楚要比小聰明好。
    3、 合并原則:設(shè)計(jì)能被其它程序連接的程序。
    4、 分離原則:從機(jī)制分離從策略,從實(shí)現(xiàn)分離出接口。
    5、 簡(jiǎn)單原則:設(shè)計(jì)要簡(jiǎn)單;只有當(dāng)你需要的時(shí)候,增加復(fù)雜性。
    6、 節(jié)儉原則:只有當(dāng)被證實(shí)是清晰,其它什么也不做的時(shí)候,才寫(xiě)大的程序。
    7、 透明原則:為使檢查和調(diào)試明顯更容易而設(shè)計(jì)。
    8、 健壯性原則:健壯性是透明和簡(jiǎn)單的追隨者。
    9、 表現(xiàn)原則:把知識(shí)整理成資料,于是程序邏輯能變得易理解和精力充沛的。
    10、最小意外原則:在接口設(shè)計(jì)中,總是做最小意外事情。
    11、沉默原則:當(dāng)一個(gè)程序令人吃驚什么也不說(shuō)的時(shí)候,他應(yīng)該就是什么也不說(shuō)。
    12、修補(bǔ)補(bǔ)救:當(dāng)你必須失敗的時(shí)候,盡可能快的吵鬧地失敗。
    13、經(jīng)濟(jì)原則:程序員的時(shí)間是寶貴的;優(yōu)先機(jī)器時(shí)間節(jié)約它。
    14、產(chǎn)生原則:避免手工堆砌;當(dāng)你可能的時(shí)候,編寫(xiě)可以寫(xiě)程序的程序。
    15、優(yōu)化原則:在雕琢之前先有原型;在你優(yōu)化它之前,先讓他可以運(yùn)行。
    16、差異原則:懷疑所有聲稱(chēng)的“唯一真理“。
    17、可擴(kuò)展原則:為將來(lái)做設(shè)計(jì),因?yàn)樗赡鼙饶阏J(rèn)為來(lái)的要快。

    posted on 2007-12-05 17:52 我愛(ài)佳娃 閱讀(3995) 評(píng)論(12)  編輯  收藏 所屬分類(lèi): 系統(tǒng)設(shè)計(jì)

    評(píng)論:
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-05 19:22 | sitinspring
    “寧花機(jī)器一分,不花程序員一秒”?!

    這句該怎么理解?  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-05 19:24 | 10:10
    編程的核心是數(shù)據(jù)結(jié)構(gòu),而不是算法
    NB  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-05 20:03 | 我愛(ài)佳娃
    “寧花機(jī)器一分,不花程序員一秒”:有的程序員寫(xiě)程序是“為機(jī)器寫(xiě)”,過(guò)份追求效率。與此相反,PERL、JAVA等語(yǔ)言相對(duì)C/C++,將程序員從內(nèi)存釋放中解脫出來(lái),可以更高效的開(kāi)發(fā),而不是一味在乎“機(jī)器上的效率”。
    也就是說(shuō),應(yīng)該最珍惜程序員的精力。  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-05 21:58 | sitinspring
    @我愛(ài)佳娃

    我感覺(jué)應(yīng)該從提高程序可讀性方向理解,而不是說(shuō)Java程序員可以忽視程序效率問(wèn)題.  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-05 22:37 | Matthew Chen
    高效的開(kāi)發(fā),良好的架構(gòu),KISS的哲學(xué),也是java比其他語(yǔ)言更多關(guān)注的東西,畢竟你不如人家快,但語(yǔ)言本身的優(yōu)雅和靈活使你在這方面能比其他語(yǔ)言更容易提升,最后才是效率考慮和優(yōu)化,當(dāng)然,這有一個(gè)大前提,那就是功能架構(gòu)的時(shí)候你就想清楚了正確的方向,因?yàn)榇蟮姆较蛏鲜钦_的,所以可以不用過(guò)早的優(yōu)化。  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-06 09:16 | 我愛(ài)佳娃
    “用清晰的接口把若干簡(jiǎn)單模塊組合成一個(gè)復(fù)雜軟件”,在UNIX上都是將功能切割后,通過(guò)文本流或者IPC在“進(jìn)程”之間傳遞。但,JAVA的項(xiàng)目往往是所有模塊“揉合”在一起,最多是通過(guò)分層或者接口來(lái)切分模塊,還是會(huì)“一損俱損”,在這一點(diǎn)是否有人有實(shí)踐,還是我理解有問(wèn)題?  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-06 10:57 | shaomin
    謝謝
    收下深刻體會(huì)下
      回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-06 16:59 | 東舟
    看看BLOGJAVA的功能  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-06 21:10 | 專(zhuān)注java開(kāi)源
    “寧花機(jī)器一分,不花程序員一秒”?!  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-06 23:53 | Newly_Yu
    值得慢慢回味!先謝謝了  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2007-12-07 09:01 | 我愛(ài)佳娃
    我把“寧花機(jī)器一分,不花程序員一秒”體會(huì)重新更新了一下,可能原來(lái)自己覺(jué)得“太有道理”了,所以沒(méi)有多寫(xiě)什么。  回復(fù)  更多評(píng)論
      
    # re: 感觸最深的幾條設(shè)計(jì)哲學(xué) 2012-07-08 00:45 | 醉中仙
    好東西。  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲国产精品无码专区影院| 久久精品免费观看| 亚洲jjzzjjzz在线观看| 中文字幕精品亚洲无线码二区 | 国产又长又粗又爽免费视频| 免费不卡在线观看AV| 国产免费播放一区二区| 美国毛片亚洲社区在线观看| 亚洲www在线观看| 亚洲综合亚洲国产尤物| 国产∨亚洲V天堂无码久久久| 亚洲午夜av影院| 国产免费黄色大片| 成人免费男女视频网站慢动作| 国产成人精品免费视频大全麻豆 | 不卡一卡二卡三亚洲| 免费永久在线观看黄网站| 免费A级毛片无码免费视| 四虎在线视频免费观看视频| 99久久免费精品视频| 玖玖在线免费视频| a成人毛片免费观看| 成在线人免费无码高潮喷水| 日本黄网站动漫视频免费| 外国成人网在线观看免费视频| 男人天堂免费视频| 免费无码av片在线观看| 国产成人精品免费大全| 亚洲一级毛片免费看| 亚洲制服在线观看| 亚洲国产精品免费观看| 亚洲一久久久久久久久| 亚洲国产美女精品久久久| 国产精品亚洲lv粉色| 国产亚洲精品美女| 亚洲国产成+人+综合| 亚洲国产精品综合久久20| 国产AV旡码专区亚洲AV苍井空| 亚洲欧美成人一区二区三区| 亚洲AV无码专区在线电影成人| 粉色视频免费入口|