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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

              面對(duì)未來(lái)的挑戰(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 閱讀(4158) | 評(píng)論 (20)編輯 收藏

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

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

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

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

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

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

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

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

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

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

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

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

             物理的真理并不是蘊(yùn)含在數(shù)學(xué)中的,它需要我們獨(dú)立的探索,從與數(shù)學(xué)不同的觀點(diǎn)進(jìn)行思考,檢驗(yàn),最終我們才能做出真正的發(fā)現(xiàn)。廣義相對(duì)論可以采用Riemman幾何進(jìn)行描述,但是它的物理詮釋卻是Einstein提出的. 沒有人說(shuō)Riemann或者Hilbert發(fā)現(xiàn)了廣義相對(duì)論。另外一方面,因?yàn)镋instein的工作觸發(fā)了對(duì)于微分幾何的更加深入的研究,靠著物理直覺的導(dǎo)引,我們將這一數(shù)學(xué)分支推進(jìn)到了難以想象的深度。"數(shù)學(xué)是無(wú)法涵蓋物理學(xué)的". 這不是說(shuō)最終物理學(xué)無(wú)法采用數(shù)學(xué)語(yǔ)言進(jìn)行描述,而是說(shuō)在這一發(fā)展過(guò)程中,所有思想的推動(dòng)來(lái)源于物理學(xué)的經(jīng)驗(yàn),來(lái)源于我們?cè)谶@個(gè)物質(zhì)世界上所進(jìn)行的反復(fù)驗(yàn)證。不是在一個(gè)封閉的小屋中,整天擺弄各種數(shù)學(xué)符號(hào),我們就能夠發(fā)明所有的物理公式所對(duì)應(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ù)的.目前并無(wú)法定義路徑積分的收斂性,但是所有人對(duì)此避而不談. 只要形式演算合法,物理預(yù)測(cè)符合實(shí)驗(yàn), 合理性的證明只是數(shù)學(xué)家們的事情. 在量子場(chǎng)論中所采用的重整化(Renormalization)方法不過(guò)是回避無(wú)窮大問(wèn)題的一種形式手段.我們?nèi)匀粺o(wú)法在數(shù)學(xué)層面對(duì)所有的演算都給予合理化解釋. 在更多的物理分支中工作,你就會(huì)發(fā)現(xiàn)物理學(xué)家的膽子不是一般的大。也許在未來(lái)我們能夠發(fā)現(xiàn)這些物理過(guò)程背后數(shù)學(xué)機(jī)制的精確定義, 但也許最終我們也無(wú)法找到合適的定義方式. 但這對(duì)物理學(xué)家來(lái)說(shuō), 并不是很大的打擊.因?yàn)橹敢覀兊氖俏锢碇庇X,是獨(dú)立于數(shù)學(xué)的物質(zhì)世界的意象。

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

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


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

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

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

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

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

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

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

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

          1. 函數(shù)式語(yǔ)言可以合理的看作是泛函分析思想的一種體現(xiàn),從歷史發(fā)展的時(shí)間上看大概也是具有這種可能性的。在Backus的論文中對(duì)函數(shù)式語(yǔ)言的一種樂(lè)觀的情緒甚至擴(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。這種信心只能來(lái)源于泛函分析和方程論,來(lái)自于數(shù)學(xué)分析學(xué)的發(fā)展。將函數(shù)的函數(shù)作為分析對(duì)象就構(gòu)成泛函分析。泛函分析的最核心的思想當(dāng)然不等價(jià)于它所研究的那些無(wú)窮維空間,不等價(jià)于種種正交基的構(gòu)造。它的思想核心在于函數(shù)的函數(shù)具有獨(dú)立的分析價(jià)值,具有脫離數(shù)量空間的具體的結(jié)構(gòu)。這也是函數(shù)式語(yǔ)言試圖推銷的一種理念。


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

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

          5. 如果將狀態(tài)看作是可以附著在某個(gè)對(duì)象上的標(biāo)記,顯然狀態(tài)的存在性便于我們識(shí)認(rèn)概念的唯一性。對(duì)象還是那個(gè)對(duì)象,只是狀態(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ù)式編程的擁躉們對(duì)此多有詬病。但是從另一個(gè)方面上說(shuō),狀態(tài)使得我們可以基于局部信息處理很多問(wèn)題而不需要把它擴(kuò)大化為一個(gè)全局匹配問(wèn)題。

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

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

              我習(xí)慣于概念層的推演,而且所闡述的東西多數(shù)是我們創(chuàng)造過(guò)程中的副產(chǎn)品,與業(yè)內(nèi)常見的觀念實(shí)際上是有著很大差異的。有些人感覺我的文章讀不明白是因?yàn)闆]有采用類似的視角,或者還沒有獨(dú)立思考過(guò)很多問(wèn)題。如果只是從業(yè)內(nèi)已經(jīng)熟知的概念出發(fā)試圖理解我所寫的內(nèi)容,顯然是不可能的事情。所以我常說(shuō)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è)過(guò)程,但是我們經(jīng)常可以觀察到它們被某些通用的或者特定的循環(huán)(集合遍歷)操作所包圍著。Witrix的設(shè)計(jì)方式是強(qiáng)調(diào)業(yè)務(wù)關(guān)注點(diǎn),而把所有的匯總操作盡量抽象完成。比如現(xiàn)在界面上顯示一些字段。從抽象的操作上說(shuō)
            for each field in dsMeta.viewableFields
              show field.viewer

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

          抽離出集合,實(shí)際上是在最大限度上分離結(jié)構(gòu)問(wèn)題和內(nèi)容問(wèn)題。     
             結(jié)構(gòu)是可抽象的,是具有獨(dú)立意義的。這就是Witrix所提出的面向結(jié)構(gòu)的設(shè)計(jì)視角。不是強(qiáng)調(diào)對(duì)象的所謂業(yè)務(wù)含義,不是強(qiáng)調(diào)某種通用語(yǔ)言(例如ruby)的靈活的語(yǔ)法結(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 閱讀(1172) | 評(píng)論 (2)編輯 收藏

          僅列出標(biāo)題
          共18頁(yè): 上一頁(yè) 1 2 3 4 5 6 7 8 9 下一頁(yè) Last 
          主站蜘蛛池模板: 和静县| 富平县| 大埔区| 健康| 泰顺县| 巴塘县| 沐川县| 界首市| 汽车| 景宁| 和田县| 屏东县| 霍城县| 元朗区| 澎湖县| 毕节市| 安远县| 沂水县| 辽阳市| 苗栗市| 登封市| 佳木斯市| 通许县| 辽阳县| 田阳县| 黄山市| 扎囊县| 长垣县| 江川县| 丹阳市| 靖远县| 固始县| 芦山县| 饶河县| 南川市| 府谷县| 当雄县| 桓仁| 吴忠市| 岳普湖县| 德惠市|