• <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>
            隨筆-19  評論-21  文章-0  trackbacks-0
            自動化法則

                計算機原本就該從事簡單重復(fù)的工作。只要把任務(wù)指派給它們,它們就可以一遍又一遍毫不走樣地重復(fù)執(zhí)行,而且速度很快。但卻經(jīng)??匆娨环N奇怪的現(xiàn)象:人們在計算機上手工做一些簡單重復(fù)的工作,計算機則在大半夜里扎堆閑聊取笑這些可憐的用戶。

                我們應(yīng)該利用作為程序員的優(yōu)勢,看到普通用戶無法看到的東西,培養(yǎng)larry所說的“懶惰,急躁和傲慢”讓計算機高效地為我們工作:命令行是如此地高效,腳本是如此地方便,銜接兩個小工具能達到如此神奇的效果。。。

            古代哲人

            1. 亞里斯多德的“事物本質(zhì)性質(zhì)和附屬性質(zhì)”理論:致力本質(zhì)復(fù)雜性,去除附屬復(fù)雜性。你現(xiàn)在想解決問題A,在解決A的問題中遇到了問題B,接著你去解決問題B,戲劇性的是你遇到了很多接二連三的問題C,D,E,或者在很多年后,程序才出現(xiàn)問題C,D,E,可是你的最初問題是A,不是嗎?B,C,D等等都是附屬性質(zhì),當(dāng)這些附屬性質(zhì)越來越多,越來越復(fù)雜的時候,也是開始思考另一個解決A的辦法的時候了。(如果作為學(xué)習(xí),可以試著去解決那些附屬性質(zhì))

            2. 笛米特法則:任何一個對象或者方法,它應(yīng)該只能調(diào)用下列對象:該對象本身,作為參數(shù)傳遞進來的對象,在方法內(nèi)創(chuàng)建的對象。這么做的主要目的是信息隱藏,同時使類的耦合更加松散。

            3. “古老”的軟件傳說。了解歷史才能更好地創(chuàng)造歷史。讀讀那些“古老”的“寶典”(如《程序員修煉之道》《人月神話》《Smalltalk Best Practice Patterns》),會學(xué)到很多有用的東西,或許你會發(fā)出一生驚嘆。“當(dāng)你的老板要求你使用一個低質(zhì)量的代碼庫時,不需要在崩潰中咬牙切齒,告訴他:你正“站在侏儒的肩膀”上的陷阱中,然后他就會明白不僅僅只有你才覺得那是個壞主意。”

            擁抱多語言編程

               “每個語言都有自己擅長的地方”(我的想法)。比如perl特別適合文本處理,用來處理網(wǎng)頁也很好(畢竟有些從服務(wù)器上返回的數(shù)據(jù)就是用perl返回的,所以用perl也會比較合適)。

                計算機語言就像鯊魚,要是保持靜止就會死。

                Java的創(chuàng)造都們實際上創(chuàng)造了兩樣?xùn)|西:Java語言和Java平臺。后者就是我們擺脫歷史包袱的途徑(Java語言的特性包含了一些它本該可以忽略的東西,如Java程序初始化的順序和從0開始的數(shù)組)。讀到本文我才開始理解平臺的深刻意義。

                舉兩個例子(Groovy和Jaskell)說明。

                Groovy是一種開源的編程語言,它給Java帶來了動態(tài)語言的語法和功能,它會生成Java字節(jié)碼,因此可以在Java平臺上運行。在Java之后十多年里浮現(xiàn)出來的各種語言很大程序上影響著Groovy的語法:Groovy支持裝飾,較松散的類型系統(tǒng),“理解”迭代的集合,以及很多現(xiàn)代編程語言的改進特性。而且它可以編譯成純正的Java字節(jié)碼。用Groovy寫成的代碼簡潔且并不比用Java寫的代碼效率低多少,而且能充分借用Java平臺的優(yōu)勢。

                Jaskell是運行在Java平臺上的Haskell版本。Jaskell擁有函數(shù)式程序設(shè)計語言的優(yōu)勢:函數(shù)不改變外界的狀態(tài),純粹的函數(shù)式語言壓根沒有“變量”概念;函數(shù)式語言對多線程的支持比命令式語言要強得多,用函數(shù)式語言更容易寫出強壯的線程安全的代碼,對并發(fā)支持也比較好(我想這是Erlang流行的原因)。同時Jaskell也能借用Java平臺的優(yōu)勢。

                 Java平臺借用這些多語言特性,一定會走得更好,走得更遠。不過,在帶來好處的同時,也帶來了一個問題:多語言應(yīng)用程序更難高度,解決這個問題最簡單的辦法也跟現(xiàn)在一樣:靠嚴格的單元測試來避免在調(diào)試器上浪費時間。

                 多語言開發(fā)風(fēng)格會把我們帶向領(lǐng)域特定語言(Domain-specific Language,DSL)。我們會以一些專門的語言為基礎(chǔ),創(chuàng)造出非常有針對性的,非常專注某一問題域的DSL。抱定一種通用語言不放的年代就快結(jié)束了,我們正在進入一個專業(yè)細分的新時代。大學(xué)時代的Haskell教材還在書架頂上蒙塵嗎?該給它撣撣灰了。

                 ps: 我們也可以以C++為基礎(chǔ),來創(chuàng)造一種DSL,思考。



            鏈接: 卓有成效的程序員




            posted on 2010-07-10 12:40 hex108 閱讀(853) 評論(4)  編輯 收藏 引用 所屬分類: Read the book

            評論:
            # re: 卓有成效的程序員 2010-12-03 02:05 | flagman
            使用C++ template metaprogramming,不就可以定義DSL嗎?

            只是這樣的實現(xiàn),目前的問題是還沒有辦法保證定義出的DSL是type-safe的。  回復(fù)  更多評論
              
            # re: 卓有成效的程序員 2010-12-03 15:32 | hex108
            @flagman

            呵呵,你說的問題是存在的(這個問題我再仔細想想。。。), 3Q ~
            相對于卓有成效的程序員(http://ishare.iask.sina.com.cn/f/10584969.html)里提供的關(guān)于DSL例子 ,我更喜歡《程序員修煉之道》(http://forum.eviloctal.com/thread-33274-1-1.html)第二章12節(jié)領(lǐng)域語言 對 DSL的應(yīng)用。 我這里說的DSL也是想側(cè)重于“新發(fā)明”一種小的語言,在這個小語言里,一條簡單的語句能執(zhí)行復(fù)雜的功能,讓抽像層次更高,比如:sendMail(from,to,content)為發(fā)email的函數(shù), 這樣我們就可以直接調(diào)用sendMail了(感覺好像是提供了庫函數(shù)了。。。)。  回復(fù)  更多評論
              
            # re: 卓有成效的程序員 2011-10-19 19:13 | high PR Backlinks
            thanks for it.  回復(fù)  更多評論
              
            人妻丰满?V无码久久不卡| 青青草原综合久久大伊人导航| 久久精品一区二区三区中文字幕 | 91精品国产色综合久久| 中文字幕精品久久| 色婷婷久久久SWAG精品| 久久99精品国产麻豆婷婷| 国产午夜精品理论片久久 | 99久久精品九九亚洲精品| 国产亚洲欧美精品久久久| 久久精品天天中文字幕人妻| 一本色道久久综合亚洲精品| 亚洲欧美久久久久9999| 久久91精品国产91| 2020国产成人久久精品| 无码任你躁久久久久久老妇App| 国产精品乱码久久久久久软件 | 久久99精品久久久大学生| 伊人 久久 精品| 亚洲AV无码久久精品成人 | 国产99久久久久久免费看 | 久久天天躁夜夜躁狠狠躁2022| 99久久国产精品免费一区二区| 一本色综合网久久| 99re久久精品国产首页2020| 国产精品午夜久久| 伊人久久精品影院| 久久精品国产亚洲AV电影| 国产成人久久777777| 日日狠狠久久偷偷色综合96蜜桃| 要久久爱在线免费观看| 久久香蕉超碰97国产精品| 99久久国产综合精品五月天喷水| 久久久噜噜噜久久中文字幕色伊伊| 亚洲欧洲精品成人久久曰影片| 无码伊人66久久大杳蕉网站谷歌| 狠狠色婷婷综合天天久久丁香| 精品熟女少妇aⅴ免费久久| 久久精品中文字幕一区| 日本免费一区二区久久人人澡| 亚洲伊人久久综合中文成人网|