• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            sherrylso

            C++博客 首頁 新隨筆 聯(lián)系 聚合 管理
              18 Posts :: 0 Stories :: 124 Comments :: 0 Trackbacks

                    作為程序員,一直困擾我的一個問題是:一名優(yōu)秀的程序員,應該是注重面向?qū)ο蠓治瞿芰Φ呐囵B(yǎng),還是注重算法分析能力的培養(yǎng)。我相信,這也是一個很多人面臨的問題。我的感覺是:很多system level的程序員更加側(cè)重于算法,而application level的程序員,更多的傾向于討論面向?qū)ο蟆4蠹乙部梢钥吹剑芏嘀鸌T公司的面試,比如google,比如微軟,很喜歡考察程序員的算法方面的能力。而自從設計模式理論風靡IT界以來,好像這些狀況有些改變,他們開始考察設計模式相關的問題,考察程序員面向?qū)ο蟮姆治瞿芰Α2豢煞裾J的是,設計模式理論,其基于面向?qū)ο蟮睦碚摷夹g,提供了開發(fā)者非常實效,有用的解決問題的模式。依賴于問題的上下文,應用設計模式,開發(fā)者可以開發(fā)出更加"面向?qū)ο?的系統(tǒng)。
               設計一個復雜的系統(tǒng)的本質(zhì),就是:將復雜的問題分解成小的,為我們所理解的問題,然后分而治之。人類的智力是有限的,當我們在面對一個復雜問題的時候,總會習慣于首先將他分解,分解到問題足夠的簡單,足夠為我們所理解,解決。事實上,無論是面向?qū)ο螅€是算法,它們都是分解復雜問題的方法與手段。是采用面向?qū)ο蟮姆椒ㄈシ治觯€是使用算法的分析方法,完全是由客觀的主體決定的。非常遺憾的是,這兩類分析方法是互斥的,排他的,你是不可能同時使用這兩種方法的分析解決問題。我們先看一個簡單的例子:
            問題的定義:client和server使用TCP/IP進行一個簡單的交互。
            算法的分解方法如下:


            問題空間被分解成為幾個執(zhí)行步驟,accept,connet,send,recieve。
            面向?qū)ο蟮姆纸夥椒?/u>如下:


            問題空間被分解成為幾個對象:c_connector, 主要負責建立TCP連接,在連接成功后,會得到一個c_socket_stream對象,該對象負責主要負責發(fā)送和接收網(wǎng)路數(shù)據(jù)。c_acceptor,負責監(jiān)聽網(wǎng)絡連接請求,在一個TCP連接成功建立后,返回給調(diào)用者一個c_socket_stream。
            兩者的區(qū)別在于:兩者分解方法的著重點是不同的,算法的分析方法強調(diào)的是事物內(nèi)部各類事件之間的順序,依賴,耦合關系。算法所關心的是事件本身,例如上例中:它關心的是send,recv這樣發(fā)生在事物內(nèi)部的事件,以及它們之間的調(diào)度關系。面向?qū)ο蟮姆治龇椒ㄔ谟趶娬{(diào)的是事物內(nèi)部各類客觀的主體,以及它們之間的相互協(xié)助。
            從這點上可以看到:在分解一個問題的時候,算法偏重于微觀,面向?qū)ο髠?cè)重于宏觀;算法偏重于細節(jié),面向?qū)ο髠?cè)重于整體。可以看到,我們很容易得出這樣的結論:當面對一個復雜的問題的時候,我們的直覺會告訴我們,我們會更加傾向于使用面向?qū)ο蠓椒ɡ碚搧矸治鰡栴}。這也是幾十年來面向?qū)ο蟮能浖嵺`經(jīng)驗告訴我們的真理。在計算機應用開發(fā)領域,面向領域問題本身的復雜性(這包括許多方面:比如你的需求在不斷變化,你的應用方式在不斷變化等等),決定了其更適合使用面向?qū)ο蟮姆椒▉矸治鰡栴}。面向?qū)ο蟮能浖到y(tǒng)會更加的富有彈性,更加的能適應這種快速的變化。
                 如何做面向?qū)ο蟮脑O計分析?關鍵在于:
                 1) 對復雜問題的抽象,將復雜的問題抽象成為一組對象,就是我們熟知的objects。object是面向?qū)ο筌浖到y(tǒng)的行為主體。抽象也意味著我們應該忽略細節(jié)的東西,注重整體的東西。
                 2)組織這些objects,使他們形成具有一定結構的整體。比如:通過繼承,使它們成為父子關系,通過組合,使它們具有合作依賴關系。通過組織這些objects,我們更加能清楚地看到這些這些objects公共的行為和屬性。這就形成了面向?qū)ο筌浖玫幕A。
                很多人說:算法是程序設計的靈魂,但是我們也不能忘記;面向?qū)ο螅瑤椭覀兡軌蚋尤菀桌斫鈫栴}復雜性的本質(zhì)。或許算法與面向?qū)ο蟮淖罴训慕Y合點在于: 使用面向?qū)ο蟮姆椒ǚ纸鈫栴},而使用精良的算法解決問題。

            posted on 2007-06-24 22:31 愛上龍卷風 閱讀(1879) 評論(7)  編輯 收藏 引用

            Feedback

            # re: 面向?qū)ο蠓治龇椒ㄅc算法 2007-06-24 23:11 eXile
            算法分析和面向過程的分析好象還不太一樣吧?
              回復  更多評論
              

            # re: 面向?qū)ο蠓治龇椒ㄅc算法 2007-06-25 12:48 clichengui
            不太對吧  回復  更多評論
              

            # re: 面向?qū)ο蠓治龇椒ㄅc算法 2007-06-25 23:13 愛上龍卷風
            算法本身的定義是:一種循序漸進解決問題的過程,一種為在有限步驟內(nèi)解決問題而建立的可重復應用的計算過程。
            如果我們用算法的思維方式來分解問題,會使我們拘泥于細節(jié)。
            而面向過程,那是方法論上的定義,不是這里所討論的。
            更確切地講,這里是討論的是:
            面向?qū)ο蟮姆纸夥椒?vs algorithmic 分解方法



              回復  更多評論
              

            # re: 面向?qū)ο蠓治龇椒ㄅc算法 2007-06-26 09:33 子寒
            “非常遺憾的是,這兩類分析方法是互斥的,排他的,你是不可能同時使用這兩種方法的分析解決問題” 不是這樣的吧 不同層次的問題 用不同的方法  回復  更多評論
              

            # re: 面向?qū)ο蠓治龇椒ㄅc算法 2007-06-26 22:40 愛上龍卷風
            不過在"分解問題"這個層次上,從思維方式的角度考慮,我們可以用面向?qū)ο蟮乃季S方式,或者算法式的思維方式  回復  更多評論
              

            # re: 面向?qū)ο蠓治龇椒ㄅc算法 2007-06-28 09:41 SuperPlayeR
            建議閱讀一下《Unix編程藝術》
              回復  更多評論
              

            # re: 面向?qū)ο蠓治龇椒ㄅc算法 2008-01-07 23:36 abettor.org
            我的感覺是:很多system level的程序員更加側(cè)重于算法,而application level的程序員,更多的傾向于討論面向?qū)ο蟆?br>
            ——同意這句。
            有時候感覺那些所謂“GOOGLE面試題”太矯情了,而有些人的對象設計的又太牽強了。  回復  更多評論
              

            久久综合久久综合亚洲| 久久91综合国产91久久精品| 色8激情欧美成人久久综合电| 久久精品人妻一区二区三区| 午夜精品久久久久久久无码| 久久亚洲私人国产精品vA | 久久精品亚洲乱码伦伦中文| 国产精品亚洲综合久久| 久久久亚洲欧洲日产国码aⅴ | 久久免费看黄a级毛片| 久久久久国产精品熟女影院 | 99久久超碰中文字幕伊人| 国产毛片久久久久久国产毛片| 亚洲欧美日韩精品久久亚洲区 | 青青草原1769久久免费播放 | 亚洲AV无码久久| 日韩亚洲国产综合久久久| 91精品国产综合久久久久久| 色天使久久综合网天天| 国产美女久久精品香蕉69| 亚洲国产精品无码久久青草| 欧美久久精品一级c片片| 精品国产青草久久久久福利| 精品乱码久久久久久夜夜嗨| AV色综合久久天堂AV色综合在| 精品久久久久成人码免费动漫| 久久人人爽人人精品视频| 97久久精品人人做人人爽| 精品久久久久久综合日本| 国产午夜免费高清久久影院| 亚洲精品乱码久久久久久蜜桃图片 | 日本亚洲色大成网站WWW久久| 99久久精品国产一区二区三区| 人妻少妇久久中文字幕| 人妻精品久久无码专区精东影业| 思思久久好好热精品国产| 香蕉99久久国产综合精品宅男自 | 亚洲国产精品无码久久九九 | 久久久久亚洲AV无码专区桃色| 国产精品免费久久久久久久久| 国产精品久久久久…|