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

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

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

    posts - 176, comments - 240, trackbacks - 0, articles - 7

        數(shù)學(xué)上的有效性與物理中的有效性是不同的,例如對于密碼學(xué)問題,如果通過窮舉法破解密碼成功時(shí),經(jīng)過這些密碼加密的數(shù)據(jù)已經(jīng)過了有效期限,此時(shí)我們在數(shù)學(xué)上定義窮舉法不是一種有效的破解方法。但是物理層面上我們說只要一種方法比另一種方法能夠更快的解決問題,我們就說第一種方法比第二種方法有效,而無論密碼被破解的時(shí)候該密碼是否已經(jīng)過了有效期限。

        我所表述的論題并不是說特定的領(lǐng)域結(jié)構(gòu)無法在某個(gè)特定的通用語言中有效實(shí)現(xiàn)。我想很多人對我的話語都有些誤解。
    如果我們認(rèn)為一種通用語言是比較穩(wěn)定的,則它一般選擇只內(nèi)置一些通用的不帶有領(lǐng)域特定含義的概念. 而缺乏領(lǐng)域知識,或者說因?yàn)橥ㄓ谜Z言故意的摒棄領(lǐng)域依賴, 它在處理領(lǐng)域相關(guān)的問題的時(shí)候并不是有效的.這種有效性不是數(shù)學(xué)含義上的,而是可以進(jìn)行物理度量的.
    現(xiàn)在ErLang對通信領(lǐng)域具有良好的支持,你可以說它對于通信領(lǐng)域的結(jié)構(gòu)是有效的。但是顯然在ErLang中編寫界面就不如面向?qū)ο笳Z言得心應(yīng)手。在ErLang中實(shí)現(xiàn)界面結(jié)構(gòu)的時(shí)候,它對于界面結(jié)構(gòu)的表述就不是那么符合我們直觀的,對我們的實(shí)現(xiàn)過程來說就不是那么經(jīng)濟(jì)的。因此在界面結(jié)構(gòu)的實(shí)現(xiàn)上,目前我們可以說ErLang相對于面向?qū)ο笳Z言而言就是不那么有效的。也許你會(huì)說ErLang做XX發(fā)展之后怎見得就更差。但是如果允許引入未來這一具有無限可能性的因子,我們基本上無法針對現(xiàn)實(shí)的情況作出判斷。例如我們目前并無法證明廣義相對論相對于牛頓力學(xué)是更加精確的,如果允許在太陽星系中增加越來越多的隱蔽的攝動(dòng)星體的話。按照庫恩的科學(xué)革命論,每一個(gè)科學(xué)時(shí)代都具有著自己的科學(xué)范式,它總是具有著充分的自我辯護(hù)能力。范式的更新意味著格式塔的崩潰?;仡櫄v史,哥白尼剛提出日心說的時(shí)候,并不是在計(jì)算精度,計(jì)算簡潔性上真的遠(yuǎn)勝托勒密的地心說,只是日心說的哲學(xué)隱喻撼動(dòng)了人心。

        我說實(shí)際上現(xiàn)在的通用語言也是無法有效承載Domain Specific Structure的,這并不是意指在通用語言中無法針對特定應(yīng)用作出特定擴(kuò)展來支持特定的結(jié)構(gòu),而是說Domain Specific Structure是任意多的,作為通用語言它不應(yīng)該把越來越多的結(jié)構(gòu)內(nèi)置在語言中(這不是很多人對ruby的希冀嗎),這么做對它來說首先是不經(jīng)濟(jì)的。同時(shí)某些特殊的結(jié)構(gòu)在一定的場景下是有用的,但是把它抽象出來擴(kuò)展到通用領(lǐng)域的時(shí)候,會(huì)出現(xiàn)有效性的喪失。例如現(xiàn)在我的系統(tǒng)中只需要10個(gè)相互依賴的線程,如果我們定死了10這個(gè)數(shù)字,顯然我們可以發(fā)展一種這個(gè)領(lǐng)域特有的高效的一些算法結(jié)構(gòu)。而抽象到通用語言中的時(shí)候,顯然我們只能假設(shè)線程數(shù)是任意大,或者是充分大的,而無法充分利用10這一領(lǐng)域信息,因此在這個(gè)意義上我說通用語言不是有效的。

        傳統(tǒng)上數(shù)學(xué)使用的一種逼近范式是:當(dāng)n趨于無窮大的時(shí)候,偏差趨于無窮小?,F(xiàn)在物理學(xué)對數(shù)學(xué)的一種常見要求卻是:當(dāng)n限定在有限數(shù)量范圍的時(shí)候(例如10以內(nèi)),我們?nèi)绾尾拍鼙M量減少偏差。這要求對小樣本數(shù)學(xué)進(jìn)行深入的研究,它所具有的物理內(nèi)涵也是不同的。

        在物理的視角下,我們所關(guān)心的不是世界在終極的意義上能否分解為函數(shù)的復(fù)合,不是要導(dǎo)向一種宗教式的頂禮膜拜,而是強(qiáng)調(diào)要尊重自己所直接感受到的,充分利用我們因?yàn)樵谶@個(gè)世界上存在而獲得的直觀意象,發(fā)掘自己的直覺,這樣我們才能在無限復(fù)雜的世界上借助有限的信息做出選擇。

    posted @ 2007-12-09 17:19 canonical 閱讀(1367) | 評論 (1)編輯 收藏

       因?yàn)樵谡J(rèn)識上物質(zhì)和意識的兩分,傳統(tǒng)上哲學(xué)便分為唯物和唯心兩大流派。唯物主義因?yàn)榉钦軐W(xué)的緣故在國內(nèi)占據(jù)主導(dǎo)地位。但在哲學(xué)上卻從未平息過思想的紛爭。胡塞爾的現(xiàn)象學(xué)試圖重新回歸形而上學(xué),摒棄物質(zhì)和意識的二元論,將它們統(tǒng)一到現(xiàn)象這個(gè)一元概念之中。我個(gè)人的思想基本是唯物主義的(畢竟少年時(shí)受過太多官方的教育),但是對我們目前所掌握的所有知識卻持有溫和的懷疑。
      
       當(dāng)一個(gè)非哲學(xué)家說到“客觀規(guī)律是客觀存在的”的時(shí)候,這是以他者的態(tài)度,從上帝的第三只眼看世界。但是我們此時(shí)此刻卻存在于此一世界,因而不可避免的要卷入這滾滾紅塵當(dāng)中。為什么我們在應(yīng)用分析和綜合方法之后,能夠通過螺旋式上升的路徑逼近終極的真理?這就如同說一個(gè)迭代總會(huì)收斂,而且必然收斂在正確的結(jié)果之上。我們所認(rèn)識到的一切為什么不能是為了應(yīng)用方便而不自覺采用的機(jī)會(huì)主義的產(chǎn)物?所有可能的哲學(xué)都是我們在此生有限的存在中所無法證實(shí)或證偽的。當(dāng)我開始質(zhì)疑為什么我們不能是離(我們在有限時(shí)空范圍內(nèi)認(rèn)為的)本質(zhì)愈近,離真實(shí)愈遠(yuǎn)的時(shí)候,這不過是用一種無意義置換了另一種無意義,但是一個(gè)人的觀點(diǎn)卻因?yàn)樗那楦械淖⑷攵鴮λ@出不同。我們?nèi)绾尾拍苡杏職猓辛α浚蟹椒ㄔ谟邢薜臅r(shí)空中創(chuàng)造出變化?
       
        人類千年的智慧傳承到我們這些普通的接受者手中的時(shí)候,它們都不可避免的陳腐了,庸俗了。當(dāng)我們在說到這些真理的時(shí)候,我們的喉舌已經(jīng)脫離和思想的聯(lián)系。這些永真的話語在唇齒間跳動(dòng)的時(shí)候甚至不能在我們的思想中激起微小的漣漪,它們不過是鸚鵡學(xué)舌。

        道是無情卻有情。有人說我們對規(guī)律的揭示是分析,實(shí)驗(yàn)和直覺的產(chǎn)物??墒侵庇X是什么?這里的邏輯類似于“如果A則B,否則其他一切情況則X"。所謂的直覺是一切非直覺的補(bǔ)集,實(shí)際上涵蓋了我們所有豐富的情感歷程和生存體驗(yàn)。理性卻需要非理性來拯救。我們的行為總是受到情感的驅(qū)使。例如我在blog上寫下一篇關(guān)于函數(shù)式語言的文章,一些技術(shù)愛好者紛紛發(fā)表議論,這是否是理智推演的結(jié)果?來的時(shí)候一腔熱情,去的時(shí)候是否真的帶走了什么事實(shí)?這樣的事情每時(shí)每刻都在我們的世界中發(fā)生。我現(xiàn)在并不喜歡"XX之道"的提法,其實(shí)所論與道無關(guān),只是利用了傳統(tǒng)上對于道的敬畏,綁架了我們真摯的情感,卻沒有帶來任何真實(shí)的體驗(yàn)。多情使得我們成為被忽悠的對象。
       
        活著,用海德格爾的話說,一個(gè)字“煩”,用薩特的話說,兩個(gè)字“惡心”,用普羅大眾的話說,三個(gè)字“不想死”。但如何去活?中國人將個(gè)人的命運(yùn)化入了家國的綿延,按李澤厚的話說,實(shí)現(xiàn)了心理學(xué)和倫理學(xué)的統(tǒng)一,在生的途中實(shí)現(xiàn)對情感的構(gòu)建和塑造,這并不是單純的個(gè)人生命體驗(yàn),也不是宗教中神秘性的情感迷狂或心靈凈化。


    posted @ 2007-12-09 15:33 canonical 閱讀(1416) | 評論 (4)編輯 收藏

        我在前面的文章中列舉了大量物理學(xué)相關(guān)的例子來試圖說明采用物理視角的必要性,但是可能因?yàn)槲锢硎聦?shí)大家不熟悉,結(jié)果直接被無視了. 在本文中我想有必要舉一個(gè)軟件領(lǐng)域的例子。只是在實(shí)際思考的過程中,我主要還是基于物理概念進(jìn)行推理.
       
        首先我所謂“現(xiàn)在的通用語言”,它并不意指“現(xiàn)在至未來所有通用語言之合集”,而是指“目前正在被使用的某一種通用語言”,這種差別便體現(xiàn)了我所強(qiáng)調(diào)的不同的價(jià)值觀和不同的視角。不是一種覆蓋一切的全稱判斷,而是在特定物理約束下的物理實(shí)體。
       
        現(xiàn)在無論我們設(shè)計(jì)什么大型系統(tǒng),一般總是要優(yōu)先考慮微內(nèi)核設(shè)計(jì)。但是很顯然,如果我們的編程控制能力極強(qiáng)(強(qiáng)大到不現(xiàn)實(shí)的地步),我們可以把所有的代碼實(shí)現(xiàn)為一個(gè)大的整體。一個(gè)整體的好處是勿用質(zhì)疑的,否則Linux Torvalds就不會(huì)有信心和Tanenbaum PK。但即使是Linux, 隨著系統(tǒng)越來越龐大,在內(nèi)核中也補(bǔ)充了很多模塊管理策略。我并不把這種情況看作是一種現(xiàn)在技術(shù)能力不到位所造成的結(jié)果,而是把它看作是在現(xiàn)實(shí)的物理約束下所促成的一種必然的選擇。
       
        按照類似的邏輯,我認(rèn)為在通用語言層面不應(yīng)該導(dǎo)入越來越多的特征,實(shí)際上也不可能把所有可能的結(jié)構(gòu)方式都內(nèi)置在語言中(這種不可能不是數(shù)學(xué)意義上的不可能)。這會(huì)破壞一種語言的純潔性,使得它極難維護(hù)和發(fā)展。為了擴(kuò)大通用語言的有效應(yīng)用范圍,一種顯然的方式是在語言中定義一些支持結(jié)構(gòu)再次抽象的機(jī)制,通過可插拔的方式實(shí)現(xiàn)與domain相關(guān)的知識的融合。ruby這樣的語言提供了大量的元編程機(jī)制, Witrix平臺中tpl模板語言也發(fā)展了一系列編譯期結(jié)構(gòu)構(gòu)造技術(shù), 但是顯然它們都不能說是結(jié)構(gòu)抽象技術(shù)的終極形態(tài). 目前我對所有通用語言所提供的結(jié)構(gòu)抽象和結(jié)構(gòu)組裝能力都是不滿意的,因此在Witrix中發(fā)展了一些領(lǐng)域特定的結(jié)構(gòu)融合手段.例如根據(jù)"繼承"關(guān)系的結(jié)構(gòu)詮釋(繼承可以看作是兩個(gè)一維集合之間的覆蓋關(guān)系), 我們擴(kuò)展了extends的結(jié)構(gòu)操作方式, 定義了廣義的extends算子. 這些特定的結(jié)構(gòu)關(guān)系目前在領(lǐng)域特定的BizFlow語言中體現(xiàn), 它們在通用語言中是難以想象的, 而把它們放置在通用的語言中也是不合適的(這種復(fù)雜的結(jié)構(gòu)融合操作如果不能結(jié)合領(lǐng)域知識進(jìn)行直觀的理解, 必將導(dǎo)向一種思維的混亂). 這就是我所謂"現(xiàn)在的通用語言無法有效承載Domain Specific Structure"的含義. 這種說法其實(shí)類似于"集合論是無法包容所有數(shù)學(xué)結(jié)構(gòu)的". 我們在集合論中只研究最普遍的關(guān)系,而特定的結(jié)構(gòu)在特定的學(xué)科中研究.
       
        關(guān)于ErLang的例子, 我的原意是用來說明結(jié)構(gòu)問題是獨(dú)立的,它是和具體語言無關(guān)的.即基于消息傳遞發(fā)生數(shù)據(jù)關(guān)聯(lián)的超輕量級進(jìn)程模型這一結(jié)構(gòu)不是和ErLang語言綁定的. 為此我特意加了一段說明:"這里不是要證明某種語言中無法描述這些結(jié)構(gòu),而是說結(jié)構(gòu)是客觀存在的,它并不是要在基礎(chǔ)語言層面得到充分解決的". 即使在語言層面我們并不解決這個(gè)結(jié)構(gòu)問題, 它仍然客觀存在著,我們?nèi)匀豢梢杂闷渌募夹g(shù)手段去定義,去解決. 解決了這個(gè)結(jié)構(gòu)問題就必然會(huì)帶給我們價(jià)值,而無論我們使用何種實(shí)現(xiàn)語言.

        "什么原因,什么樣的約束條件,導(dǎo)致了現(xiàn)在的通用語言是無法有效承載消息傳遞發(fā)生數(shù)據(jù)關(guān)聯(lián)的超輕量級進(jìn)程模型". 這一命題并不是我原文中論點(diǎn)的合理推論.我并不是要說某一種特定的領(lǐng)域結(jié)構(gòu)無法在一種特定的通用語言中得到支持.而是說如果我們認(rèn)為一種通用語言是比較穩(wěn)定的,則它一般選擇只內(nèi)置一些通用的不帶有領(lǐng)域特定含義的概念. 而缺乏領(lǐng)域知識,或者說因?yàn)橥ㄓ谜Z言故意的摒棄領(lǐng)域依賴, 它在處理領(lǐng)域相關(guān)的問題的時(shí)候并不是有效的.這種有效性不是數(shù)學(xué)含義上的,而是可以進(jìn)行物理度量的. 現(xiàn)在也有很多人認(rèn)為ErLang并不是真正的通用語言,它是針對通信領(lǐng)域進(jìn)行了特定結(jié)構(gòu)調(diào)整的, 是內(nèi)置了領(lǐng)域特定結(jié)構(gòu)的. 而目前在ErLang上建立GUI的努力也并不算是成功.
       
        在前文中我舉了一個(gè)例子試圖說明:"在限定的物理約束下,我們的選擇范圍會(huì)大大縮小". "比如說我現(xiàn)在有無窮多種方式從北京跑到上海,但是如果限定只允許用1升汽油,那么我們的選擇就近乎于0". 這里并不是要說明加上物理約束之后,我們便沒有任何選擇了.而是說物理約束對無窮多的可能方式起了限定選擇的作用, 它最終造成我們在具體的物理場景下可能只有非常有限的選擇. 例如現(xiàn)在允許用100升汽油, 有多少種運(yùn)輸方式可以滿足我們的要求? 如果允許1000升呢? 但是如果不考慮所有物理約束, 我們是否能夠證明說: 飛機(jī)和拖拉機(jī)的運(yùn)輸能力是完全一致的, 因?yàn)樗鼈兌寄軓谋本╅_到上海.

        我的觀點(diǎn)是結(jié)構(gòu)問題是獨(dú)立存在的,它具有自身的價(jià)值, 研究它也需要建立特定的價(jià)值觀. 一個(gè)結(jié)構(gòu)可以體現(xiàn)為語言上的某種語法特征, 也可以通過框架等實(shí)現(xiàn), 或者表現(xiàn)為某種設(shè)計(jì)模式,某種編程技巧. 我們在思考結(jié)構(gòu)問題的時(shí)候并不是從特定語言的機(jī)制出發(fā)的, 當(dāng)語言不直接支持的時(shí)候我們可以發(fā)展特定的實(shí)現(xiàn)技術(shù)支持它. 在未來的日子里某個(gè)結(jié)構(gòu)可能被證明具有普適的價(jià)值,它會(huì)被吸收到某個(gè)通用語言中成為所有程序的支撐結(jié)構(gòu), 但是更多的結(jié)構(gòu)永遠(yuǎn)都不會(huì)進(jìn)入通用語言, 而是居留在某個(gè)特定的領(lǐng)域. 通用語言的發(fā)展并不是完全基于抽象的數(shù)學(xué)分析而進(jìn)行的, 它可以從更加豐富的物理世界中吸取營養(yǎng). 當(dāng)一種結(jié)構(gòu)進(jìn)入通用語言的時(shí)候, 它所帶來的絕對不只是一組數(shù)量關(guān)系,而是同時(shí)帶來一系列經(jīng)過實(shí)踐檢驗(yàn)的物理詮釋.

        我所謂的領(lǐng)域并不是指業(yè)務(wù)領(lǐng)域, 而是結(jié)構(gòu)領(lǐng)域, 一個(gè)可以定義特定結(jié)構(gòu)的物理場景. 一個(gè)特定的結(jié)構(gòu)仍然可以支撐著任意多的具體應(yīng)用. 例如CRUD操作可以作為數(shù)據(jù)管理模型. BizFlow作為界面和單實(shí)體的交互模型.

        函數(shù)式語言為我們提供了一種具體的技術(shù)工具, 但是在現(xiàn)實(shí)的開發(fā)中, 為了有效的處理結(jié)構(gòu)問題, 顯然我們需要多種視角的組合, 而不是把所有可想見的圖景都純化為函數(shù). 我們對世界的體驗(yàn)是多樣化的. 這就是我所謂"世界比函數(shù)的集合要復(fù)雜"的含義.

    posted @ 2007-12-09 00:16 canonical 閱讀(1206) | 評論 (0)編輯 收藏

    有一位網(wǎng)友,今年大二,詢問我怎樣才能成為技術(shù)高手. 我并不確定如何定義所謂的技術(shù)高手, 但是既然問到我, 便列舉一下可能相關(guān)的事實(shí).

    首先請明確以下事實(shí):
    A. 掙錢能力和技術(shù)能力相關(guān),但不成正比。
    B. 他人的信任與信賴和技術(shù)能力無關(guān)。
    C. 泡妞能力和技術(shù)能力可能負(fù)相關(guān),請謹(jǐn)慎面對。

       沒有人知道未來是什么樣子. 也沒有人能夠保證自己永遠(yuǎn)都是技術(shù)大潮中的弄潮兒. 如果你只是擔(dān)心知識的老化, 擔(dān)心能否長期的保有一份工作. 那么只需要不失去別人的信任,越來越熟練的做好本職工作就可以了。任何工作中當(dāng)時(shí)用到的知識永遠(yuǎn)都只是很少的部分,只要?jiǎng)e人給你機(jī)會(huì)重新學(xué)習(xí),你的人生經(jīng)驗(yàn)就會(huì)是你最寶貴的財(cái)富。

       大二的小孩不要每天盡整些沒用的東西。認(rèn)真學(xué)好自己的專業(yè)課。做軟件開發(fā)并不需要什么高深的知識,但是接受知識傳承,得到全面教育的時(shí)機(jī)卻是一去不回的。

       不要怕學(xué)得多,更不要自以為學(xué)得多。我在學(xué)校的時(shí)候,橫掃圖書館的哥們并不少。

        讀了書并不意味著懂得了道理。用自己的語言能否講述學(xué)過的內(nèi)容?能否用個(gè)簡圖勾勒Unix內(nèi)核的結(jié)構(gòu)?學(xué)過一門語言到底它有什么不同,能否勾勒發(fā)展的脈絡(luò)?你學(xué)過的東西并不是你的東西. 你既無法消費(fèi)它,也無法販賣它. 在書本以外你是否真的意識到這些知識的存在性? 最重要的問題是, 你創(chuàng)造的東西在哪里?

        讀書開始的時(shí)候半知半解是正常的。這就如同張無忌背七傷拳經(jīng),總有一天你會(huì)懂得,只是需要不時(shí)的去回味。數(shù)學(xué)典籍中經(jīng)常有這樣的說法,本書內(nèi)容是封閉的,只需要某某領(lǐng)域知識,但是掌握它需要數(shù)學(xué)成熟性。成熟是需要時(shí)間的。

        讀書不是以數(shù)量取勝。一個(gè)領(lǐng)域中類似的書只要細(xì)讀一本,完整的讀下來,讀的時(shí)候多方參照,做簡短的筆記。讀一些原始的文獻(xiàn),讀大師的原著。盡量選用英文的經(jīng)典教材。懂一點(diǎn)學(xué)科的歷史,知道什么是文化。了解一些學(xué)術(shù)界的八卦,吹牛的時(shí)候多一些談資。
         
        學(xué)習(xí)任何一個(gè)領(lǐng)域都需要深入, 需要掌握大量的相關(guān)細(xì)節(jié), 因?yàn)橹挥羞@樣才能夠不再被細(xì)節(jié)問題所干擾, 而集中精力于真正的思想核心.  

        拳不離手,曲不離口。連Knuth老兄都在勤奮的敲程序,所以請不要找借口, 先編上十幾二十萬行代碼再說話。編寫而不是抄寫。

       天下沒有免費(fèi)的午餐。不付出相應(yīng)的成本,無法得到相應(yīng)的回報(bào)。學(xué)習(xí)沒有捷徑,只有方法。只是方法正確并不能保證你走到終點(diǎn),毅力,機(jī)緣都是不可或缺的。你是否能夠1天10小時(shí)以上持續(xù)地考慮同一個(gè)問題,是否能夠保持同樣的注意力堅(jiān)持到每本書的最后一頁, 是否一年365天對新鮮事物總是保有一份天真的好奇。

       在工作中除了抽象的思想和具體的技術(shù)知識之外,還有大量小的trick. 例如調(diào)用equals的時(shí)候把常量放在前方if(MY_CONST.equals(myVar)).
     一般不可能通過書本學(xué)習(xí)掌握所有這些技巧,只能在編程的實(shí)踐中觀察總結(jié),更多的時(shí)候是要你主動(dòng)思考,重新去發(fā)現(xiàn)這些方法。一個(gè)人的工作效率很大程度上是受其工作習(xí)慣所制約的,你是否在隨時(shí)隨地的改進(jìn)自己的工作?

        怎樣才能做技術(shù)高手?這個(gè)問題我并不知道答案。公司里所需要的也不是技術(shù)高手,而是能夠解決問題的人。不過如何培養(yǎng)合格的程序員,在公司內(nèi)部也有兩種看法。adun說要給他們指明職業(yè)發(fā)展的方向,關(guān)心他們遇到的困惑。這是P大的浪漫主義情懷。X羅說要給他們可以完成但是不易完成的任務(wù),等待大浪淘沙后的結(jié)果。這是T大的現(xiàn)實(shí)主義精神。

        開源是不可阻擋的歷史洪流,我們只能改變自己的思維方式,調(diào)整自己的行為目標(biāo)來適應(yīng)它。

        面對未來的挑戰(zhàn),Alan Kay有一句名言:The best way to predict the future is to invent it。如果你不知道該怎么創(chuàng)造,那就先從捏造開始練習(xí)吧----事物之間總是可以建立關(guān)聯(lián)的。

    posted @ 2007-12-08 03:14 canonical 閱讀(4147) | 評論 (20)編輯 收藏

        現(xiàn)在講軟件工程的, 所談?wù)摰亩喟胧琼?xiàng)目工程, 即如何在有限的時(shí)間內(nèi)配置使用有限的資源在單個(gè)項(xiàng)目中達(dá)到既定的目標(biāo). 傳統(tǒng)上, 在這一領(lǐng)域基于預(yù)測和計(jì)劃的瀑布方法曾經(jīng)占據(jù)主流, 但是隨著項(xiàng)目的日益復(fù)雜化, 各種基于演化(evolution)思想的工程方法在實(shí)證中逐漸發(fā)展起來. 在時(shí)空跨度更大的軟件工程領(lǐng)域, 例如延展到軟件的不同版本以及多個(gè)相似項(xiàng)目的工程中, 演化更是逐漸取得了無可置疑的主導(dǎo)地位. 但是, 從另一個(gè)方面說, 目前所有這些軟件工程方法所推崇的演化實(shí)際上都是非常有限的, 它們通過迭代(iteration)所能夠描述的演化過程都只是片斷性的, 例如一個(gè)項(xiàng)目中的演化, 一個(gè)軟件產(chǎn)品的演化, 最大的莫過于一整條軟件產(chǎn)品線的演化. 所有這些演化過程都面臨著一個(gè)天然的屏障: 商業(yè)公司.在公司內(nèi)部, 知識或代碼可以由開發(fā)人員攜帶到下一個(gè)項(xiàng)目, 或者從一個(gè)小組傳播到另外一個(gè)小組, 在新的基礎(chǔ)上繼續(xù)演化的進(jìn)程. 但是核心的知識或者代碼一般只能通過商業(yè)交易傳達(dá)到其他公司, 這是一條非常受限制的途徑. 而一個(gè)單個(gè)公司所開發(fā)的軟件包, 即使是平臺級的產(chǎn)品, 如果只是內(nèi)部使用, 受限于該公司所從事的業(yè)務(wù)領(lǐng)域, 其所面臨的使用檢驗(yàn)也是非常有限的. 而且出于經(jīng)濟(jì)上的原因, 單個(gè)公司往往無力支撐多個(gè)實(shí)現(xiàn)同樣功能的解決方案, 因而它傾向于消滅軟件中的多樣性, 這有可能會(huì)進(jìn)一步限制演化的進(jìn)程.  
        開源(OpenSource)軟件為軟件演化創(chuàng)造了新的可能性.商業(yè)友好的開源軟件可以被不同的公司自由的運(yùn)用于不同的業(yè)務(wù), 因而可以參與到不同的局部演化過程中. 在應(yīng)用的過程中, 開源軟件面臨著巨大的重構(gòu)壓力(這往往是超越了應(yīng)用最廣泛的封閉源碼軟件包的), 有可能保持更快的演化速度. 而通過對開源軟件的回饋, 對開源軟件的改進(jìn)可以傳播到時(shí)空范圍跨度巨大的軟件開發(fā)過程中. 而且基于源碼的開放性, 開發(fā)人員的知識交流也隨之開放起來. 類比于Darwin進(jìn)化論, 我們可以說開源驅(qū)動(dòng)了整個(gè)軟件業(yè)界的共同進(jìn)化(co-evolution).
        多年前, Eric Raymond在著名的文章"大教堂和市集"中 http://263.aka.org.cn/Docs/c&b.html, 提出了開源的工程價(jià)值, 但其所關(guān)注的重點(diǎn)仍然只是單個(gè)軟件如何在開源的模式下演化, 從今天的觀點(diǎn)看來, 這篇戰(zhàn)斗檄文已經(jīng)顯得有些局促了. 開源所造就的巨大演化空間遠(yuǎn)遠(yuǎn)超越了軟件工程所能夠提供的. 開源軟件現(xiàn)在已經(jīng)在商業(yè)開發(fā)領(lǐng)域站穩(wěn)了腳跟,也漸漸超越了單個(gè)公司能夠控制的范圍. 可以說開源軟件的發(fā)展是無可逆轉(zhuǎn)的, 我們已經(jīng)不會(huì)也不應(yīng)該再回復(fù)到原先的封閉世界中.

    posted @ 2007-12-08 02:58 canonical 閱讀(1514) | 評論 (0)編輯 收藏

       每當(dāng)我在文字中對函數(shù)式語言有些不敬之意時(shí),便好像動(dòng)了某些人的奶酪,以至我的言辭總在被曲解后遭到排斥。我想這就是因?yàn)橐暯遣町愡^大所造成的. 但是謙虛謹(jǐn)慎是傳統(tǒng)的美德, 不能容納他人的觀點(diǎn)只會(huì)妨礙自己在某些方向的探索。
       首先請不要輕易懷疑我的知識水平。當(dāng)然如果總無法聚集起足夠的注意力來理解別人話語中的細(xì)節(jié),我也無話可說。
       容納他人的觀點(diǎn)就意味著不要總在自己的話語體系中試圖找到反例. 一個(gè)人總是受限于他的知識范圍,因此他也經(jīng)常在自己的知識范圍內(nèi)篡改曲解別人的意見。我從未說過 "一個(gè)具體的問題是現(xiàn)有的通用語言無法描述的". 我說的是"現(xiàn)實(shí)開發(fā)中所需要處理的結(jié)構(gòu)問題并不是在語言層面得到充分解決的", "現(xiàn)在的通用語言也是無法有效承載Domain Specific Structure的". 請注意我對定語和動(dòng)詞的選擇。其實(shí)我已經(jīng)舉了大量的例子來進(jìn)行說明,但可能因?yàn)榇蠖鄶?shù)人不是物理背景,對相關(guān)的內(nèi)容不熟悉,所以直接無視了。這也很對,符合物理學(xué)的精神。

       可能大多數(shù)人都知道函數(shù)式語言和命令式語言都是和圖靈機(jī)等價(jià)的,因此它具有某種終極能力,懷疑它無異于懷疑我們世界存在的基礎(chǔ)。但是請注意,這種等價(jià)性是數(shù)學(xué)性的。它潛在的要求是無限的能量和時(shí)間消耗。如果在限定的物理約束下,我們會(huì)發(fā)現(xiàn)我們的選擇范圍會(huì)大大縮小。所以我說"函數(shù)式語言和命令式語言的計(jì)算能力相同,但是在具體的情形下它們的描述能力是不同的". 比如說我現(xiàn)在有無窮多種方式從北京跑到上海,但是如果限定只允許用1升汽油,那么我們的選擇就近乎于0。飛機(jī)和汽車的運(yùn)輸能力是相同的嗎。物理學(xué)的一個(gè)基本精神在于一種物理性的約束是始終存在的。而事實(shí)上,我們在實(shí)際工作中也總是在各種有限的物理?xiàng)l件下工作。

       也許有些人認(rèn)為這種區(qū)分是無關(guān)緊要的,我們只關(guān)心某種終極的東西。但是物理學(xué)中有著太多的例證,說明在有限約束下,整個(gè)系統(tǒng)呈現(xiàn)出完全不同的性質(zhì)。在通信領(lǐng)域我們都知道Shannon定理,它的物理詮釋是在有噪聲的信道上可以有效的進(jìn)行準(zhǔn)確的信息傳遞。但是這一詮釋只能在有限的數(shù)學(xué)精度(遠(yuǎn)大于我們實(shí)際需求的精度)上成立, 在絕對準(zhǔn)確的數(shù)學(xué)意義上,這是不可能的事情。

       你覺得現(xiàn)在的通用語言做起領(lǐng)域相關(guān)的東西來很方便嗎,這就是我所謂無法有效承載的含義。在這里我也沒有否認(rèn)"未來的牛語言可以輕松搞定目前難題"的可能性。

       因?yàn)樗械能浖O(shè)計(jì)最終都要落實(shí)到某種代碼實(shí)現(xiàn)上,所以怎么會(huì)有什么神秘的軟件結(jié)構(gòu)是現(xiàn)有的語言無法描述的呢。但是ErLang中那種高并發(fā),支持錯(cuò)誤恢復(fù)的程序結(jié)構(gòu)是在其他語言中能夠輕松實(shí)現(xiàn)的嗎。很多人不是在潛意識中認(rèn)為ErLang的成功是函數(shù)式語言排他性的成功嗎,不是認(rèn)為命令式語言無論如何實(shí)現(xiàn)不了ErLang的程序結(jié)構(gòu)的嗎。很顯然,在命令式語言中是無法直接實(shí)現(xiàn)ErLang中的程序結(jié)構(gòu)的,否則它就變成了函數(shù)式語言,但是所有發(fā)生在ErLang世界中的事實(shí)都一樣可以發(fā)生在命令式語言的世界中。ErLang語言的編譯器可以是使用命令式語言實(shí)現(xiàn)的,在終極的意義上,語言之間能有什么區(qū)別呢?

       我說"實(shí)際上現(xiàn)在的通用語言也是無法有效承載Domain Specific Structure的", 這還有另一層含義。通用語言設(shè)計(jì)總是要考慮到內(nèi)置結(jié)構(gòu)的某種通用性,設(shè)計(jì)時(shí)能夠憑依的信息較少,因此不可能直接制造某種復(fù)雜的領(lǐng)域相關(guān)的結(jié)構(gòu)。而目前已知的通用語言中提供的結(jié)構(gòu)抽象的手段也不夠強(qiáng)大(實(shí)際上我認(rèn)為任何語言都不會(huì)強(qiáng)大到內(nèi)置所有結(jié)構(gòu),也無法提供所有的結(jié)構(gòu)抽象手段), 相當(dāng)于是把領(lǐng)域結(jié)構(gòu)問題推給程序員解決。這就如同C語言把內(nèi)存管理推給程序員解決一樣。現(xiàn)在ruby比較流行不就是因?yàn)樗軌騽?dòng)態(tài)處理很多結(jié)構(gòu)問題嗎,但是它現(xiàn)在所作的一切就是足夠的了嗎。難道二十年之后再來看這個(gè)語言,不能夠發(fā)現(xiàn)它存在著巨大的改進(jìn)空間嗎。我們目前在Witrix中通過tpl模板語言,bizflow extends等機(jī)制,結(jié)合整體框架設(shè)計(jì)實(shí)現(xiàn)了一些與ruby不同的結(jié)構(gòu)構(gòu)造方法。這些手段都極大的增強(qiáng)了我們面對領(lǐng)域問題時(shí)的信心,也確保了我們的領(lǐng)域知識是技術(shù)層面上可積累的。但是即使這樣,我對程序發(fā)展的現(xiàn)狀就是滿意的嗎?難道不存在更加豐富的結(jié)構(gòu)知識等待我們?nèi)グl(fā)現(xiàn)嗎?一般人總是習(xí)慣接受已經(jīng)存在的現(xiàn)實(shí),在有限的職業(yè)生涯中把它們當(dāng)作不變的真理,卻沒有耐心的去思考如何去改變。

      我認(rèn)為很多結(jié)構(gòu)問題不是需要在語言層面得到解決的,而是應(yīng)該在獨(dú)立的結(jié)構(gòu)層(平臺,框架)進(jìn)行解決。這意味著沒有必要在語言層面直接內(nèi)置某種特定的結(jié)構(gòu),內(nèi)置某種特定的結(jié)構(gòu)抽象手段。這基本類似于說不要把集合論擴(kuò)大到包含所有的數(shù)學(xué)關(guān)系,請?jiān)趧e的學(xué)科分支中進(jìn)行研究。需要注意的是,我所謂的領(lǐng)域知識不是特定的業(yè)務(wù)知識,而是從業(yè)務(wù)知識中可以分析得到的某種更加通用的普適的結(jié)構(gòu)知識,甚至是可以使用數(shù)學(xué)進(jìn)行精確描述的。

      現(xiàn)代軟件發(fā)展的時(shí)間還很短,與數(shù)學(xué)和物理學(xué)這樣深刻的學(xué)科相比,它無疑是相對幼稚的,是待成長的,是更加的不完美的。在程序構(gòu)建的基本問題上并沒有抽象出什么可以實(shí)際操作的精確規(guī)律。這是所謂Pattern在軟件業(yè)流行的部分原因:我們希望用這種半形式化的方式捕獲某種思考的結(jié)果。但是軟件真的除了基于抽象數(shù)學(xué)的全局的全稱性的證明之外,不能夠在局部進(jìn)行某種更加復(fù)雜,更加嚴(yán)謹(jǐn)?shù)姆治鰡帷?br />
       我們說結(jié)構(gòu)問題是獨(dú)立的,這也意味著它和具體的實(shí)現(xiàn)語言具有某種意義上的分離性。通過一種語言書寫的結(jié)構(gòu)可以在另一種語言中得到表達(dá)。我們可以建立語言中立的技術(shù)結(jié)構(gòu)。一種所謂的結(jié)構(gòu)在概念上具有某種確定的形態(tài),我們可以脫離具體的語言來理解它。例如我說"面向?qū)ο蟮睦^承關(guān)系從結(jié)構(gòu)觀點(diǎn)上看是兩個(gè)一維集合之間的覆蓋關(guān)系". 在java中我們可以直接使用語言提供的繼承機(jī)制,而在C語言中我們就需要建立某種結(jié)構(gòu)體,手動(dòng)維持所有的指針關(guān)聯(lián)。而在Witrix平臺中,我們從繼承的結(jié)構(gòu)詮釋出發(fā),定義了更加復(fù)雜的extends算子,這就需要利用java語言編制特定的parser來實(shí)現(xiàn)了。但是顯然,在思考的時(shí)候我們所有的思維指向是結(jié)構(gòu)本身,而不是任何通用語言的語法。

       在物理學(xué)中,通過攝動(dòng)分析我們可以清楚地意識到:同樣一個(gè)物理現(xiàn)象對應(yīng)的數(shù)學(xué)模型可以是眾多的,但是在特定的參數(shù)區(qū)我們會(huì)選擇某種特定的數(shù)學(xué)表述,并確定其中的待定參數(shù)。

       delta函數(shù)是物理學(xué)家狄拉克引入的,在Schwatz引入分布概念建立廣義函數(shù)論之前,物理學(xué)家們已經(jīng)使用這一函數(shù)工作了很多年。后來Abraham Robinsen利用數(shù)理邏輯方法,建立了非標(biāo)準(zhǔn)分析,通過模型論的方法精確定義了無窮小的概念,從更加直接的角度論證了delta的合理性。但是在物理學(xué)家看來,這些數(shù)學(xué)又有什么區(qū)別呢?物理學(xué)只是按照物理的詮釋進(jìn)行工作,具體的數(shù)學(xué)只是它可選的工具而已。

       物理的真理并不是蘊(yùn)含在數(shù)學(xué)中的,它需要我們獨(dú)立的探索,從與數(shù)學(xué)不同的觀點(diǎn)進(jìn)行思考,檢驗(yàn),最終我們才能做出真正的發(fā)現(xiàn)。廣義相對論可以采用Riemman幾何進(jìn)行描述,但是它的物理詮釋卻是Einstein提出的. 沒有人說Riemann或者Hilbert發(fā)現(xiàn)了廣義相對論。另外一方面,因?yàn)镋instein的工作觸發(fā)了對于微分幾何的更加深入的研究,靠著物理直覺的導(dǎo)引,我們將這一數(shù)學(xué)分支推進(jìn)到了難以想象的深度。"數(shù)學(xué)是無法涵蓋物理學(xué)的". 這不是說最終物理學(xué)無法采用數(shù)學(xué)語言進(jìn)行描述,而是說在這一發(fā)展過程中,所有思想的推動(dòng)來源于物理學(xué)的經(jīng)驗(yàn),來源于我們在這個(gè)物質(zhì)世界上所進(jìn)行的反復(fù)驗(yàn)證。不是在一個(gè)封閉的小屋中,整天擺弄各種數(shù)學(xué)符號,我們就能夠發(fā)明所有的物理公式所對應(yīng)的數(shù)學(xué)。實(shí)際上,現(xiàn)在學(xué)術(shù)界普遍承認(rèn),沒有物理學(xué)的推進(jìn),很多數(shù)學(xué)的進(jìn)展是不可能發(fā)生的。

       物理系每天都在演算著Feynman路徑積分, 但是所有人都知道這是沒有什么嚴(yán)格的數(shù)學(xué)依據(jù)的.目前并無法定義路徑積分的收斂性,但是所有人對此避而不談. 只要形式演算合法,物理預(yù)測符合實(shí)驗(yàn), 合理性的證明只是數(shù)學(xué)家們的事情. 在量子場論中所采用的重整化(Renormalization)方法不過是回避無窮大問題的一種形式手段.我們?nèi)匀粺o法在數(shù)學(xué)層面對所有的演算都給予合理化解釋. 在更多的物理分支中工作,你就會(huì)發(fā)現(xiàn)物理學(xué)家的膽子不是一般的大。也許在未來我們能夠發(fā)現(xiàn)這些物理過程背后數(shù)學(xué)機(jī)制的精確定義, 但也許最終我們也無法找到合適的定義方式. 但這對物理學(xué)家來說, 并不是很大的打擊.因?yàn)橹敢覀兊氖俏锢碇庇X,是獨(dú)立于數(shù)學(xué)的物質(zhì)世界的意象。

       我所想討論的不是某種終極意義上的可能性,不是絕對概念之間的沖突,而是在物理現(xiàn)實(shí)的約束下,我們?nèi)绾尾拍苡行Чぷ鞯膯栴}。我已經(jīng)反復(fù)表述了自己的觀點(diǎn): "結(jié)構(gòu)是可抽象的,是具有獨(dú)立意義的。這就是Witrix所提出的面向結(jié)構(gòu)的設(shè)計(jì)視角。不是強(qiáng)調(diào)對象的所謂業(yè)務(wù)含義,不是強(qiáng)調(diào)某種通用語言(例如ruby)的靈活的語法結(jié)構(gòu)。在這之間存在著厚重的具有物理意義的可以進(jìn)行結(jié)構(gòu)分析的技術(shù)層". 也許有人覺得我說的這是廢話, 但是當(dāng)系統(tǒng)化的執(zhí)行一種思想的時(shí)候,就會(huì)揭示出未預(yù)料到的可能性. 整個(gè)Witrix平臺簡單的說起來就是"面向結(jié)構(gòu)的級列分析", 但是如何找到合適的技術(shù)形式來體現(xiàn)這一思想,卻絕對不是一件平凡的事情. "在Witrix中我們實(shí)現(xiàn)的代碼重用程度和程序整體結(jié)構(gòu)控制能力是超越了目前所有已知的公開技術(shù)的。這不是什么哲學(xué),而是我們在殘酷的商業(yè)競爭中得以生存的資本".http://canonical.javaeye.com/blog/126467

       在我看來,計(jì)算機(jī)領(lǐng)域充斥著純數(shù)學(xué)的深沉遐想和從工程實(shí)踐而來的輕佻常識,還沒有注意到物理學(xué)所能帶來的不同的同樣深刻的視角。我常說,好好學(xué)習(xí)物理是必要的,因?yàn)檫@個(gè)世界遠(yuǎn)比你想象的要復(fù)雜的多。


    posted @ 2007-12-08 02:51 canonical 閱讀(1439) | 評論 (7)編輯 收藏

        我的觀點(diǎn)并不是什么具體的程序結(jié)構(gòu)問題不能用函數(shù)式語言處理.我所要表述的是這和函數(shù)式語言中能否加入結(jié)構(gòu)解決任意復(fù)雜問題無關(guān)。為什么所有的問題不能在集合論中解決,為什么要有獨(dú)立的數(shù)學(xué)學(xué)科。物理學(xué)所有的定律都使用數(shù)學(xué)表述,是否意味著物理學(xué)的真理蘊(yùn)含在數(shù)學(xué)之中。
        我說實(shí)際上現(xiàn)在的通用語言也是無法有效承載Domain Specific Structure的。其實(shí)與以下說法是類似的
    數(shù)學(xué)是無法涵蓋物理學(xué)的,現(xiàn)在的已知的數(shù)學(xué)工具是無法有效承載尚未得到充分探索的領(lǐng)域的物理的
        我說我所關(guān)心的不是語言層面的問題這類似于說不要把所有物理問題都推到數(shù)學(xué)層面去解決。
        我們應(yīng)該研究獨(dú)立的結(jié)構(gòu),應(yīng)該建立單獨(dú)的價(jià)值觀和方法論。不要談及一個(gè)技術(shù)進(jìn)展的時(shí)候就說某某語言好,不是一說到DSL的優(yōu)點(diǎn)就要去抱ruby的大腿。此外,我的觀點(diǎn)也不是去做業(yè)務(wù)分析,不是去如何更好的實(shí)現(xiàn)業(yè)務(wù)到基礎(chǔ)技術(shù)結(jié)構(gòu)的映射。
        不是強(qiáng)調(diào)對象的所謂業(yè)務(wù)含義,不是強(qiáng)調(diào)某種通用語言(例如ruby)的靈活的語法結(jié)構(gòu)。在這之間存在著厚重的具有物理意義的可以進(jìn)行結(jié)構(gòu)分析的技術(shù)層。
        我想說這個(gè)結(jié)構(gòu)層面現(xiàn)在并未得到充分的關(guān)注,我們對于結(jié)構(gòu)的問題并不是非常清楚,對程序結(jié)構(gòu)的穩(wěn)定性更是少有經(jīng)驗(yàn)。我們在Witrix中做了大量的工作,試圖做到如下的圖景:
       永遠(yuǎn)只寫代碼片斷,而所有的代碼片斷組合在一起又構(gòu)成一個(gè)可理解的整體
       對背景不是分解讓其成為可見的部分,而是采用追加的,增刪的方法對背景結(jié)構(gòu)進(jìn)行修正,則我們有可能在沒有完整背景知識的情況下,獨(dú)立的理解局部變化的結(jié)構(gòu)。即背景是透明的,知識成為局部的。
    http://canonical.javaeye.com/blog/126467
        在Witrix中我們實(shí)現(xiàn)的代碼重用程度和程序整體結(jié)構(gòu)控制能力是超越了目前所有已知的公開技術(shù)的。這不是什么哲學(xué),而是我們在殘酷的商業(yè)競爭中得以生存的資本。

    號外:
      不要把具體的技術(shù)和一種技術(shù)思想混為一談。一種實(shí)現(xiàn)總是包容了太多的思想。思想錯(cuò)了,實(shí)現(xiàn)對了。實(shí)現(xiàn)死了,思想活著。

    posted @ 2007-12-06 22:12 canonical 閱讀(1265) | 評論 (1)編輯 收藏

    關(guān)于哲學(xué)的問題是很有意思的,因?yàn)樗且鹱疃嗨枷霙_突的地方。原本[關(guān)于認(rèn)識的悖論]這篇blog是我在重溫維特根斯坦之后反思自己的哲學(xué)觀念所寫下的一些文字。我在具體的推理中是明晰的,但是在哲學(xué)思想方面一直是混亂的,所以估計(jì)對旁人而言它確實(shí)沒有什么可讀性。不過如果有人感興趣愿意討論一下, 我想說明一下我在哲學(xué)方面的幾個(gè)觀點(diǎn):

    1. 哲學(xué)于我而言是嚴(yán)密的邏輯論證,還是浪漫的情感訴求?
    2. 我不認(rèn)為認(rèn)識的終極指向所謂的規(guī)律, 因?yàn)榧词刮覀冋莆樟怂械囊?guī)律(包括規(guī)律的規(guī)律?),仍然解決不了規(guī)律為何存在的問題。
    3. 當(dāng)我們自以為對XX的認(rèn)識越來越清晰,越來越深入的時(shí)候,是否已經(jīng)偏離了XX? 偏執(zhí)的認(rèn)識可以激發(fā)強(qiáng)烈的情感,聚集思維的資源,引導(dǎo)我們穿越未知。但是新的聯(lián)系怎樣從出人意料的地方生長出來?
    4. 維特根斯坦晚年創(chuàng)建了分析哲學(xué)的日常語言學(xué)派。有人說他變成了星宿派,有人說他發(fā)現(xiàn)了新大陸。但是無論如何,自然語言作為人類所創(chuàng)造的思維工具,對人們思維的潛在影響是難以估量的。在人造語言中,借助羅素的類型論我們似乎可以回避問題,但是并無法終極解決邏輯系統(tǒng)的循環(huán)依賴。波利亞在數(shù)學(xué)家中曾經(jīng)做過一個(gè)有趣的調(diào)查,詢問著名的數(shù)學(xué)家在思考的時(shí)候是否會(huì)依賴自然語言,回答各異,但很少有人說嚴(yán)格按照公式進(jìn)行推理。以我個(gè)人而言,思考時(shí)更多的是某種似曾經(jīng)歷的意象,而很少是嚴(yán)格的邏輯表述。創(chuàng)造的依據(jù)是否是事件之間難以言傳的微妙聯(lián)系,抑或是原始的創(chuàng)造力只是源于錯(cuò)誤的巧合?
    5. 西方哲學(xué)從笛卡爾開始,從本體論轉(zhuǎn)向了認(rèn)識論。但是是否現(xiàn)在我們已經(jīng)認(rèn)清了自己的所在?矛盾的產(chǎn)生是事物內(nèi)在的真實(shí)存在的特點(diǎn),還是因?yàn)檎J(rèn)識層面的割裂而人為造成?有多少?zèng)_突是因?yàn)闆]有發(fā)現(xiàn)協(xié)調(diào)方式而造成?分析和綜合之后我們能夠達(dá)到什么?螺旋式上升的比喻讓我感到有些眩暈。
    6. 東方的思維方式不是分析法的,也很難說是歸納法的。這種所謂的整體論難道只是披著神秘外衣的巫術(shù)?現(xiàn)在學(xué)術(shù)界流行的是以西方的思維工具來重新詮釋一切觀念,我的思想中到底受到各方觀點(diǎn)何種影響?難道故老相傳的東西都只成了被研究的客體,成了手術(shù)臺上待解剖的木乃伊?
    7.從我們的詞匯表中抹去那些詞語之后我們將無言以對?例如規(guī)律兩字。

    以上所論的一切都是無價(jià)值的,因?yàn)槠鋵?shí)我只是想問自己一個(gè)問題:明天我的靈感在哪里,如何回答。

    posted @ 2007-12-06 21:02 canonical 閱讀(1007) | 評論 (3)編輯 收藏

    1. 函數(shù)式語言可以合理的看作是泛函分析思想的一種體現(xiàn),從歷史發(fā)展的時(shí)間上看大概也是具有這種可能性的。在Backus的論文中對函數(shù)式語言的一種樂觀的情緒甚至擴(kuò)大到functional algebra can be used to tranform programs and to solve equations whose "unknowns" are programms in much the same way one transform equations in high school algebra。這種信心只能來源于泛函分析和方程論,來自于數(shù)學(xué)分析學(xué)的發(fā)展。將函數(shù)的函數(shù)作為分析對象就構(gòu)成泛函分析。泛函分析的最核心的思想當(dāng)然不等價(jià)于它所研究的那些無窮維空間,不等價(jià)于種種正交基的構(gòu)造。它的思想核心在于函數(shù)的函數(shù)具有獨(dú)立的分析價(jià)值,具有脫離數(shù)量空間的具體的結(jié)構(gòu)。這也是函數(shù)式語言試圖推銷的一種理念。


    2. 最近這些年來一種稱為"范疇"(Category)的東西在計(jì)算機(jī)理論研究中頻頻出現(xiàn)。范疇論是從同調(diào)代數(shù)發(fā)展而來的一種較新的代數(shù)語言,但它顯然也不是可以解決任何問題的靈丹妙藥。多一種表達(dá)方式當(dāng)然在某種程度上可以增進(jìn)我們的理解。但是范疇本身只是研究一種基礎(chǔ)結(jié)構(gòu),它本身并沒有承載所有的物理事實(shí),基于它不可能對所有的規(guī)律一網(wǎng)打盡。不是明白了范疇,就懂了程序。范疇論是一種基礎(chǔ)性的語言,有些人致力于基于范疇論來構(gòu)建數(shù)學(xué)的其他分支,取代集合論的地位。將計(jì)算的本質(zhì)重新歸結(jié)于范疇論是無意義的,它不過是對事實(shí)的另一種陳述方式。說“函數(shù)式語言是基于范疇”是無意義的,因?yàn)檫@和說“所有現(xiàn)代數(shù)學(xué)都基于集合論”一樣。無法發(fā)現(xiàn)新的相互作用關(guān)系,所有的概念都只是同義反復(fù)。不是一拿起數(shù)學(xué),就找到了組織。

    3. 我對函數(shù)式語言并沒有什么反對意見。它是非常重要也非常優(yōu)美的一種技術(shù)思想。但是現(xiàn)在一些函數(shù)式語言的狂熱支持者似乎對函數(shù)世界充滿了烏托邦式的幻想,一種大一統(tǒng)的世界觀讓人迷醉,但是它卻解決不了現(xiàn)實(shí)的問題。所以我說無法認(rèn)同函數(shù)式編程的世界觀。作為一種具體的技術(shù)工具,問題不在于函數(shù)式語言是否體現(xiàn)了計(jì)算的本質(zhì),而在于它是否向我們提供了稱手的兵器?,F(xiàn)在我要計(jì)算兩個(gè)小球相互碰撞的問題,我可以操起廣義相對論,量子力學(xué)啥的開始大干一場,也可以用個(gè)牛頓力學(xué)小試牛刀,甚至可以只用反射關(guān)系擺個(gè)等式。但是在絕大多數(shù)情況下我們都會(huì)說這里面的物理是彈性反射而不是相對論。在理論分析中我們經(jīng)常使用平面波假設(shè),但只要實(shí)際關(guān)心的對象不在波包的邊緣,沒有人會(huì)認(rèn)為平面波不是真實(shí)的物理機(jī)制。理論物理不是理想物理。在具體的參數(shù)設(shè)定下,我們只會(huì)使用特定的物理學(xué)。
       對世界的認(rèn)識并不是非此即彼的。并不是說函數(shù)式語言好它就永遠(yuǎn)都好,要把所有對立面都滅掉。也不是說函數(shù)式不好,命令式就必然的好,就必然的能夠解決問題。函數(shù)式語言的世界觀過分單純而排他,這是我反對的,我同樣無法認(rèn)同面向?qū)ο蟮谋倔w論論調(diào)。就像CISC和RISC架構(gòu)之爭一樣,最終我們在現(xiàn)實(shí)的物理約束下,運(yùn)行的最好的芯片是兩者思想的結(jié)合。這是我們面對物理世界的基本態(tài)度。
      
    4. 函數(shù)式語言中時(shí)間是個(gè)有趣的概念。命令式語言中因?yàn)橘x值語句的存在,使得我們可以觀測到狀態(tài)的變化,因此必然要定義時(shí)間。而函數(shù)式語言是無狀態(tài)的,可以是無時(shí)間概念(對Lazy Caculation的依賴是否體現(xiàn)了深層次上對時(shí)間概念的需求?)。有些人認(rèn)為函數(shù)可以看作是相空間中的遷移函數(shù),是與相對論協(xié)調(diào)的,因而反映了時(shí)間的本質(zhì)等等。相對論主要是解決了物理規(guī)律的協(xié)變性的問題,在此過程中它使人們認(rèn)識到了時(shí)空之間奇異的對稱性。但是廣義相對論的表述中時(shí)間也是可逆的。真正定義了時(shí)間之箭的是熱力學(xué)第二定律。根據(jù)Landauer's principle: 擦除(erase)1比特信息,耗散到環(huán)境中的能量至少是k*T*ln2, 或者說熵增至少是k*ln2. 這意味著只要我們對眼前的黑板不停的寫了擦,擦了寫,就必然無法回到過去。物理世界是復(fù)雜的。

    5. 如果將狀態(tài)看作是可以附著在某個(gè)對象上的標(biāo)記,顯然狀態(tài)的存在性便于我們識認(rèn)概念的唯一性。對象還是那個(gè)對象,只是狀態(tài)標(biāo)記發(fā)生了變化。而如果系統(tǒng)中沒有狀態(tài),則必然產(chǎn)生了一個(gè)新的概念。這在很多情況下是不必要的負(fù)擔(dān)。狀態(tài)的存在使得系統(tǒng)在局部結(jié)構(gòu)上允許出現(xiàn)非常復(fù)雜的變化,函數(shù)式編程的擁躉們對此多有詬病。但是從另一個(gè)方面上說,狀態(tài)使得我們可以基于局部信息處理很多問題而不需要把它擴(kuò)大化為一個(gè)全局匹配問題。

    6. 函數(shù)構(gòu)成函數(shù)似乎是很完備統(tǒng)一的世界。 但是在物理世界中發(fā)生的一切卻復(fù)雜的多。雖然世界可以還原為原子,但是原子構(gòu)成分子,分子構(gòu)成宏觀物質(zhì)時(shí),系統(tǒng)的基本性狀發(fā)生了本質(zhì)性的變化,并不再是統(tǒng)一的形式。每一個(gè)層面上都會(huì)產(chǎn)生獨(dú)立的結(jié)構(gòu)規(guī)律。

    7. 函數(shù)式語言和命令式語言的計(jì)算能力相同(可以相差一個(gè)任意長度的多項(xiàng)式時(shí)間),但是在具體的情形下它們的描述能力是不同的。我所關(guān)心的不是語言層面的問題,因?yàn)檎Z言本身的能力并不足以解決現(xiàn)實(shí)開發(fā)中的所有問題。即現(xiàn)實(shí)開發(fā)中所需要處理的結(jié)構(gòu)問題并不是在語言層面得到充分解決的,這是我們需要做工作的地方。
       關(guān)于現(xiàn)實(shí)中的結(jié)構(gòu)問題,我無意去定義什么萬能的描述能力。你可以用微分幾何,積分幾何,廣義變分等等手段去證明圓盤是某種意義下的周長最短的東西,但是這一切對你發(fā)明輪子并無本質(zhì)上的助益。不過可以說說現(xiàn)實(shí)中的結(jié)構(gòu)。這里不是要證明某種語言中無法描述這些結(jié)構(gòu),而是說結(jié)構(gòu)是客觀存在的,它并不是要在基礎(chǔ)語言層面得到充分解決的。實(shí)際上現(xiàn)在的通用語言也是無法有效承載Domain Specific Structure的。
    A. ErLang大概是目前世界上應(yīng)用最為深入的函數(shù)式語言了。它確實(shí)發(fā)揮了函數(shù)式語言無顯式狀態(tài)變量的優(yōu)勢。但是它對程序構(gòu)建本質(zhì)上的幫助更多的來源于無共享的超輕量級進(jìn)程模型,相當(dāng)于定制了一般操作系統(tǒng)所提供的基本服務(wù)。微軟的一個(gè)實(shí)驗(yàn)性操作系統(tǒng)項(xiàng)目Singularity, 其中也定義了只通過消息傳遞發(fā)生數(shù)據(jù)關(guān)聯(lián)的超輕量級進(jìn)程模型,它使用C#的一個(gè)擴(kuò)展語言,額外增加的功能是消息管道上定義的規(guī)格狀態(tài)機(jī),對消息交互的時(shí)空模式進(jìn)行額外的規(guī)約。這里對我們真正有價(jià)值的是隔離的單元結(jié)構(gòu)。
    B. AOP是程序結(jié)構(gòu)空間中的定位和組裝技術(shù)。在Witrix中我們規(guī)范化了切點(diǎn)處的狀態(tài)空間,并對AOP進(jìn)行了偏置處理.這種結(jié)構(gòu)調(diào)整大大提高了AOP的可用性,使得它成為Witrix中的核心技術(shù)手段之一。
    C. 面向?qū)ο蟮睦^承關(guān)系從結(jié)構(gòu)觀點(diǎn)上看是兩個(gè)一維集合之間的覆蓋關(guān)系。在Witrix中擴(kuò)展了extends所對應(yīng)的結(jié)構(gòu)操作,創(chuàng)造了新的結(jié)構(gòu)融合手段。

    posted @ 2007-12-05 22:09 canonical 閱讀(4330) | 評論 (9)編輯 收藏

        我習(xí)慣于概念層的推演,而且所闡述的東西多數(shù)是我們創(chuàng)造過程中的副產(chǎn)品,與業(yè)內(nèi)常見的觀念實(shí)際上是有著很大差異的。有些人感覺我的文章讀不明白是因?yàn)闆]有采用類似的視角,或者還沒有獨(dú)立思考過很多問題。如果只是從業(yè)內(nèi)已經(jīng)熟知的概念出發(fā)試圖理解我所寫的內(nèi)容,顯然是不可能的事情。所以我常說know something already known.

    如果在編制一個(gè)新的應(yīng)用,存在大量代碼可能是
    myFunc(){
      
    for each x in set
        doSomethingValuable(x);
      
    return packedResult;
    }

    myOtherFunc(packedResult){
      
    for each y in pakedResult
        doSomethingOther(y)
    }

    其實(shí)我們真正關(guān)心的是循環(huán)內(nèi)部的某個(gè)過程,但是我們經(jīng)常可以觀察到它們被某些通用的或者特定的循環(huán)(集合遍歷)操作所包圍著。Witrix的設(shè)計(jì)方式是強(qiáng)調(diào)業(yè)務(wù)關(guān)注點(diǎn),而把所有的匯總操作盡量抽象完成。比如現(xiàn)在界面上顯示一些字段。從抽象的操作上說
      for each field in dsMeta.viewableFields
        show field.viewer

    這一過程在平臺代碼中實(shí)現(xiàn),它是一個(gè)通用的集合操作過程。不同的具體應(yīng)用只是關(guān)心具體字段的展現(xiàn)形式,雖然我們必然需要字段集合,但是它不是我們注意力的重心。
      如果考慮到字段在界面上展示有一個(gè)布局問題,我們所要修改的是集合內(nèi)部的結(jié)構(gòu)方式:
      某種結(jié)構(gòu)循環(huán)方式(dsMeta.字段組成的布局集合)
        show field.viewer

    抽離出集合,實(shí)際上是在最大限度上分離結(jié)構(gòu)問題和內(nèi)容問題。     
       結(jié)構(gòu)是可抽象的,是具有獨(dú)立意義的。這就是Witrix所提出的面向結(jié)構(gòu)的設(shè)計(jì)視角。不是強(qiáng)調(diào)對象的所謂業(yè)務(wù)含義,不是強(qiáng)調(diào)某種通用語言(例如ruby)的靈活的語法結(jié)構(gòu)。在這之間存在著厚重的具有物理意義的可以進(jìn)行結(jié)構(gòu)分析的技術(shù)層。http://canonical.javaeye.com/blog/60758  http://canonical.javaeye.com/blog/126467

    posted @ 2007-12-03 23:54 canonical 閱讀(1163) | 評論 (2)編輯 收藏

    僅列出標(biāo)題
    共18頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
    主站蜘蛛池模板: 美女扒开尿口给男人爽免费视频| 亚洲电影中文字幕| 亚洲avav天堂av在线网毛片| 7723日本高清完整版免费| 久久亚洲AV无码精品色午夜| 99在线免费观看视频| 久久亚洲私人国产精品vA | 污视频网站在线观看免费| 日本v片免费一区二区三区| 亚洲欧洲AV无码专区| 国产精品视_精品国产免费| 精品国产日韩亚洲一区在线| 亚洲国产av无码精品| av午夜福利一片免费看久久| 亚洲欧洲日产国码av系列天堂| 免费观看久久精彩视频| 亚洲电影唐人社一区二区| 免费阿v网站在线观看g| 亚洲欧美乱色情图片| 五月婷婷亚洲综合| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 亚洲大尺度无码专区尤物| 久久免费福利视频| 亚洲人成综合在线播放| 永久免费av无码网站大全| 一级一级一片免费高清| 亚洲AV无码国产精品色午友在线 | 少妇性饥渴无码A区免费| 亚洲精品国产电影午夜| 国产做床爱无遮挡免费视频| 一级中文字幕乱码免费| 亚洲国产精品久久丫| 国产高清免费的视频| 可以免费观看的毛片| 亚洲一卡二卡三卡四卡无卡麻豆| 免费大黄网站在线观| 免费人妻无码不卡中文字幕系| 亚洲久热无码av中文字幕| 国产亚洲色婷婷久久99精品| 国产1024精品视频专区免费| xxxxxx日本处大片免费看 |