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

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

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

    再駁Java消亡論和回應(yīng)java消亡論的支持者

    9月14日,我在CSDN上看到了透明的一篇謬文 http://blog.csdn.net/gigix/archive/2006/09/11/1210180.aspx,論調(diào)十分之荒謬。所以,我在公司里冒著被老板發(fā)現(xiàn)的危險(xiǎn),即興寫了一篇短文http://blog.csdn.net/shendl/archive/2006/09/14/1222587.aspx ,予以駁斥。 CSDN的編輯把它和透明的那篇文章放在了一起。跟貼者甚眾,令我沒想到的是,我的文章居然被不少跟貼者駁斥,而且語言極盡諷刺、挖苦之能事。 我并不反對(duì)就技術(shù)問題爭(zhēng)論,也不是不允許別人就我的文章和觀點(diǎn)與我辯論。相反,我一向都非常歡迎同行指正我的錯(cuò)誤,能夠使我有所提高。 但是,多年與人打交道的經(jīng)驗(yàn)讓我深深地相信這樣一個(gè)真理:“你永遠(yuǎn)無法說服不想被你說服的人?!? 這次眾多駁斥我的跟貼再一次驗(yàn)證了這樣一個(gè)真理。 我的文章由于成文比較倉促,所以確實(shí)在文筆上有一些漏洞,遣詞造句也不是很妥當(dāng)。但我認(rèn)為,一個(gè)嚴(yán)肅的辯論者,是不會(huì)咬文嚼字的尋找對(duì)方文法上的弱點(diǎn)的。否則的話,除了數(shù)學(xué)公理之外,沒什么話可以說了! 對(duì)于這樣的人,在我眼里,并不是在污辱我的智商(盡管他是這樣以為的),而是在侮辱他自己的智商。這說明他完全不具備與人交流的能力。 如果一定要咬文嚼字,那么所有判斷句都不可以在文章里用了。Java會(huì)消亡嗎?廢話,一定會(huì)。宇宙都會(huì)消亡,什么能不消亡? 論點(diǎn): 透明的意思是,3-5年內(nèi),Ruby將占據(jù)企業(yè)級(jí)應(yīng)用市場(chǎng)的主流。也就是JavaEE和今天的Ruby換個(gè)位子。我認(rèn)為,這是不可能的。Java平臺(tái)至少能夠繼續(xù)占據(jù)、企業(yè)級(jí)應(yīng)用市場(chǎng)主流地位10年。 Java平臺(tái)優(yōu)勢(shì)和對(duì)動(dòng)態(tài)OO的支持 有人說我不懂Ruby,也不懂Java。這我就不敢茍同了。我是不懂Ruby,但并不代表我不懂Ruby,Python,Smalltalk語言為代表的動(dòng)態(tài)面向?qū)ο笳Z言的機(jī)制。對(duì)于Java,我也許不比某些人懂得多,但也絕不會(huì)比一般的Java程序員懂得少。 我對(duì)Ruby的認(rèn)識(shí),僅僅是今年5月Martin Fowler先生在上海交大作的一次演講中Martin Fowler的Ruby編程演示。我還略為研究過Smalltalk和Python的語法。但是它們的類庫,我沒有研究過。 因?yàn)椋疫€不打算靠它們吃飯,那厚厚的專用類庫對(duì)我而言是沒有價(jià)值的。 Spring的AOP實(shí)現(xiàn)需要使用“反射”這種動(dòng)態(tài)技術(shù)。這也是促成我當(dāng)年研究Smalltalk和Python這樣的動(dòng)態(tài)面向?qū)ο笳Z言的原因。我也十分折服于動(dòng)態(tài)面向?qū)ο缶幊碳夹g(shù)的強(qiáng)大能力。我一直認(rèn)為動(dòng)態(tài)OO技術(shù)在未來,將在編程中發(fā)揮越來越大的作用,也一直希望JVM能夠增加更多的動(dòng)態(tài)技術(shù)。我還曾經(jīng)寫過文章為動(dòng)態(tài)OO技術(shù)搖旗吶喊過,此初衷依然不改! Java作為一個(gè)平臺(tái)也確實(shí)有這樣的能力,而且也正在向這個(gè)方面發(fā)展,JVM將會(huì)支持更多的動(dòng)態(tài)OO技術(shù)。 .NET平臺(tái)當(dāng)年推出之時(shí),就以支持多種靜態(tài)面向?qū)ο缶幊陶Z言為賣點(diǎn)。VB.NET,C#,Delphi,托管C++這4種主流的面向?qū)ο缶幊陶Z言都可以在.NET平臺(tái)上運(yùn)行。 同樣都是靜態(tài)面向?qū)ο缶幊陶Z言,它們之間除了關(guān)鍵字不同之外,有什么本質(zhì)上的區(qū)別嗎?沒有!VB.NET和C#是我所熟悉的兩種.NET語言。它們之間本質(zhì)上確實(shí)沒什么區(qū)別。唯一的區(qū)別是,.NET平臺(tái)的技術(shù)更新時(shí),C#會(huì)先得到支持,VB.NET要晚一些。比如,事件機(jī)制,.NET1.1時(shí),VB.NET用的是類似于Java1.0時(shí)的機(jī)制,C#用的是Java更新版本的機(jī)制。我想,應(yīng)該是因?yàn)槲④涀钪匾旵#的緣故吧。 .NET平臺(tái)同時(shí)支持多種類似的語言,雖然在市場(chǎng)上有吸引VB,C++,Delphi,Java等程序員的作用,但在技術(shù)上卻導(dǎo)致了開發(fā)資源的浪費(fèi)。一種技術(shù),要提供多個(gè)語言的實(shí)現(xiàn)。這比Java平臺(tái)只支持Java這一種靜態(tài)面向?qū)ο缶幊陶Z言要低效的多。我在發(fā)現(xiàn)了微軟優(yōu)先關(guān)照C#之后,就決定從VB.NET上轉(zhuǎn)到C#上,以免吃虧!自從Delphi投入.NET平臺(tái)之后,日漸式微,這也是一個(gè)平臺(tái)上不需要多種類似語言的明證!可以預(yù)見,.NET平臺(tái)上C#獨(dú)大的趨勢(shì)還會(huì)繼續(xù)下去。 .NET支持多種類似語言的另一個(gè)問題是,分裂了開發(fā)者社區(qū)。VB.NET,C#,Delphi,還有J#,托管C++,它們的語言原理和能力實(shí)際上都差不多,都是靜態(tài)面向?qū)ο笳Z言,但是,由于語法不同,就分裂成了幾個(gè)開發(fā)者社區(qū),彼此交流都不方便。 在我上一篇文章的評(píng)論者中,有人說我說錯(cuò)了,Java平臺(tái)上除了Java之外還有Beanshell等語言。拜托!兄弟,你的理解力沒什么問題吧?我說的是Java平臺(tái)上只有一種官方支持的靜態(tài)面向?qū)ο缶幊陶Z言。就是和.NET比較而言的。 Java平臺(tái)官方支持C++,C#,VB.NET,Delphi,J#嗎? Beanshell是一種動(dòng)態(tài)面向?qū)ο笳Z言,而且Sun官方可沒有支持它! 現(xiàn)在,Java平臺(tái)正在增強(qiáng)對(duì)動(dòng)態(tài)編程能力的支持。目前,開源社區(qū)提供了Beanshell,JRuby,JPython,Groovy等面向?qū)ο缶幊陶Z言。我相信,最后,在Java平臺(tái)上也會(huì)只剩下一種主流的動(dòng)態(tài)面向?qū)ο缶幊陶Z言。未來,Java平臺(tái)上會(huì)剩下兩種主流的編程語言:靜態(tài)面向?qū)ο缶幊陶Z言類型是Java;動(dòng)態(tài)面向?qū)ο缶幊陶Z言是上面中的一種,也許是Groovy,也許是JRuby。 將來,我們Java程序員將有2件編程利器:Java和動(dòng)態(tài)OO語言。對(duì)于編程問題,將能夠更加游刃有余!底層的API類庫,既可以是Java,也可以是其它動(dòng)態(tài)OO語言所編寫。反正都一樣是.class文件,Java和動(dòng)態(tài)OO語言都可以調(diào)用。 這就是未來!Ruby和Python這兩種平臺(tái)將會(huì)繼續(xù)慘淡的過日子,也許不會(huì)消亡,但成不了主流。不是因?yàn)樗鼈兊恼Z法不好,機(jī)制不行,而是因?yàn)樗鼈內(nèi)鄙貸ava平臺(tái)上那樣多的API,也缺少熟悉這些API的程序員。 它們的靈魂將會(huì)飛到Java平臺(tái)上,以JRuby,JPython的形式生存下來,在Java平臺(tái)上發(fā)展起來。 靜態(tài)OO語言和動(dòng)態(tài)OO語言的優(yōu)劣 接下來,再談一談靜態(tài)OO語言和動(dòng)態(tài)OO語言的優(yōu)劣的問題。 我欣賞動(dòng)態(tài)OO語言,smalltalk雖然出現(xiàn)的很早,開發(fā)者甚少,但是在它的社區(qū)中卻誕生許多著名的程序員和設(shè)計(jì)模式等思想。MVC模式,XP極限編程等我所尊敬的技術(shù)都出自smalltalk。 但是,靜態(tài)OO語言一直占據(jù)著主流的地位,也不是沒有原因的。除了編譯型語言的執(zhí)行速度比解釋型語言快之外,靜態(tài)OO語言還有其它的優(yōu)勢(shì)。速度的快慢,在今天來看,并不是十分重要。Java比C++慢一些,但現(xiàn)在測(cè)試下來,C++最多比Java快一倍而已(不要跟我說某一個(gè)程序速度差很多,我這里指的是一般的程序,不作特別的優(yōu)化和劣化處理)。只要速度不是相差一個(gè)數(shù)量級(jí),就不是問題。 靜態(tài)OO語言意味著更嚴(yán)格的語法,更多的編輯和編譯時(shí)的檢查步驟。更強(qiáng)的糾錯(cuò)能力,不正是編程語言發(fā)展的一個(gè)標(biāo)準(zhǔn)嗎?不是可以更好的提高效率嗎? 5月份那次看Martin Fowler先生演示編寫Ruby程序,IDE弱弱的報(bào)錯(cuò)能力讓Martin先生也傷了不少腦筋! 不錯(cuò),Ruby不需要給變量聲明類型。想指向哪個(gè)類型,就指向哪個(gè)類型。但是,指錯(cuò)了呢?只有在運(yùn)行時(shí)才能發(fā)現(xiàn)類型指錯(cuò)了。如果這是個(gè)復(fù)雜的程序,有很多執(zhí)行路徑呢?如果測(cè)試人員沒能夠窮盡所有這些可能的路徑呢?這個(gè)錯(cuò)誤豈不是會(huì)漏給用戶? 不錯(cuò),借助于測(cè)試驅(qū)動(dòng)開發(fā),是可以降低出錯(cuò)幾率。但是,測(cè)試驅(qū)動(dòng)開發(fā)也不是測(cè)試的銀彈,不能保證能夠找出所有的錯(cuò)誤。而且,靜態(tài)編程語言也可以使用測(cè)試驅(qū)動(dòng)開發(fā)技術(shù)。 市場(chǎng)預(yù)測(cè) 我預(yù)測(cè),未來3-5年,Java平臺(tái)和.NET平臺(tái)都會(huì)增加對(duì)動(dòng)態(tài)OO語言的支持力度,它們上面的動(dòng)態(tài)OO語言將會(huì)達(dá)到實(shí)用化的程度。而Python和Ruby將會(huì)繼續(xù)維持現(xiàn)在這樣的市場(chǎng)規(guī)模。仍然處于邊緣。Python和Ruby的解釋器平臺(tái)不會(huì)得到多大范圍的應(yīng)用。就像今天,Web2.0的那些小網(wǎng)站帶來了Web2.0的概念,但最后是門戶網(wǎng)站Yahoo,Sina等占據(jù)了Web2.0的市場(chǎng)。 DSL特定領(lǐng)域語言 接下來,說說DSL特定領(lǐng)域語言的問題。Matin Fowler最近轉(zhuǎn)調(diào)了。我記得原來他非常支持XML格式的作用。但是,最近他說Ruby是最合適的DSL語言。盡管我仍然十分敬佩Martin Fowler先生,但是對(duì)他的這個(gè)觀點(diǎn),我不敢茍同。我認(rèn)為,DSL語言還是應(yīng)該使用xml格式,而不是使用Ruby這種類英語的編程語言來描述。 DSL可以說是一種“元數(shù)據(jù)”。用來描述程序。現(xiàn)在有2種元數(shù)據(jù):標(biāo)注和配置文件。 1.標(biāo)注是.net首先引入的。Java在5.0之后也引入了。標(biāo)注寫在源代碼中,和關(guān)鍵字一樣,只是標(biāo)注是可以自定義的。 標(biāo)注的優(yōu)點(diǎn)是,簡(jiǎn)單。缺點(diǎn)是表達(dá)能力不強(qiáng)。 2.配置文件,一般又分為3種:屬性文件,一般文本文件和xml文件。 屬性文件中的數(shù)據(jù)是以“名—值”對(duì)的形式表示的。缺乏數(shù)據(jù)之間的關(guān)系結(jié)構(gòu)。表達(dá)能力不強(qiáng)。 文本文件,就是直接在文本中按照規(guī)定的語法寫上一段文本。類似自然語言,只是語法的限制很強(qiáng)。語法檢查,是一個(gè)大問題。如果沒有按照語法寫,就會(huì)發(fā)生運(yùn)行時(shí)錯(cuò)誤。 Xml文件,是層次結(jié)構(gòu)的。它的前身是層次數(shù)據(jù)庫。它的格式嚴(yán)謹(jǐn),語法容易驗(yàn)證,規(guī)則容易定義。只是稍微復(fù)雜一點(diǎn),需要寫上元素名。 但是,總的來說,XML文件格式的DSL還是功能最強(qiáng)大,語法驗(yàn)證能力最強(qiáng),目前也是首先的DSL語言的載體。 除了使用元數(shù)據(jù)之外,直接使用編程語言也是可以實(shí)現(xiàn)高等級(jí)的功能的。如,傳統(tǒng)的不使用xml配置文件的Java編程。Java作為一種編譯語言,需要編譯,不使用xml等配置,就不是很方便。 而Ruby作為解釋型語言,直接修改源代碼是非常方便的。我想這大概就是Martin Fowler先生關(guān)于使用Ruby作為DSL的原因吧。 但是,使用DSL語言的用戶,他懂Ruby嗎?懂編程嗎?愿意查看和修改源代碼嗎?我們中國的用戶懂英語嗎? 我認(rèn)為,DSL使用XML文件還是首選! OO就是銀彈! 最后,談?wù)勱P(guān)于OO的問題。有網(wǎng)友說我“言必OO?OO就是銀彈嗎?”。這里我回答他:OO就是銀彈! 我Blog上的副標(biāo)題是:“以O(shè)O為中心,堅(jiān)定不移的走Spring道路”。 面向?qū)ο缶幊蹋o我們帶來了多少API類庫。Int,String等基本的數(shù)據(jù)類型,以及順序、條件、循環(huán)3種控制流這樣簡(jiǎn)單、細(xì)粒度的元素,通過類被封裝了起來,今天已經(jīng)能夠通過層層疊疊的類支持對(duì)現(xiàn)實(shí)世界的種種對(duì)象的模擬和抽象。 借助于類庫,眾多的DSL特定領(lǐng)域語言已經(jīng)被廣泛使用。今天的java程序員使用了更多的配置文件(這就是DSL)來編程。如Ant配置文件,Hibernate配置文件,Spring配置文件等等。 最近,我正在學(xué)習(xí)jBPM。jBPM也是一個(gè)Java類庫。通過Java類,它提供了一個(gè)DSL語言框架。我們能夠使用xml配置文件,編寫DSL語言:jpdl,bpel規(guī)范的。實(shí)現(xiàn)工作流、BPM等。 當(dāng)然,除了OOP之外,還有AOP。但是,AOP只是OOP的補(bǔ)充。OOP能夠?qū)崿F(xiàn)絕大部分的抽象模擬任務(wù)。 認(rèn)為OO無用的程序員,可能工作在嵌入式開發(fā)等與硬件有關(guān)的工作領(lǐng)域。他們的編程領(lǐng)域中,業(yè)務(wù)邏輯比較簡(jiǎn)單,不需要過多的抽象層次。 但是,這并不能成為否定OO作用的理由。你用不著OO,并不代表OO沒用,并不代表OO不是銀彈。 OO已經(jīng)給我們帶來了多大的變化啊!Java的成功就是一例。 還是毛主席的那句話:“沒有調(diào)查,就沒有發(fā)言權(quán)”。對(duì)此我也是深有體會(huì)的,曾經(jīng)也犯過很多錯(cuò)。對(duì)于自己不懂的領(lǐng)域,硬是認(rèn)為別人的說法荒謬。后來,自己真正了解了那個(gè)領(lǐng)域之后,才知道“今是而昨非”??!

    posted on 2006-09-25 08:53 Sheldon Sun 閱讀(556) 評(píng)論(2)  編輯  收藏

    評(píng)論

    # re: 再駁Java消亡論和回應(yīng)java消亡論的支持者 2006-09-25 09:51 asdf

    您的排版再這么差,Java可真的就要馬上消亡了  回復(fù)  更多評(píng)論   

    # re: 再駁Java消亡論和回應(yīng)java消亡論的支持者 2006-09-27 16:49 Sheldon Sun

    @asdf
    不怪我啊, 我粘貼過來就這樣了。。。 ……^_^  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 最近2019年免费中文字幕高清| 久久精品成人免费观看97| 2021精品国产品免费观看| 亚洲av无码av制服另类专区| 99久久成人国产精品免费| 亚洲精品无码专区在线在线播放| 国产在线播放线91免费| 亚洲区小说区图片区QVOD| 国产色无码精品视频免费| 亚洲AV无码精品无码麻豆| 一级做a爰全过程免费视频| 亚洲国产精品成人精品软件| 美女视频黄的全免费视频| 亚洲一区二区三区播放在线| 色www永久免费视频| 美女裸免费观看网站| 亚洲午夜福利717| 美丽的姑娘免费观看在线播放| 亚洲娇小性xxxx| 国产伦精品一区二区三区免费下载| 老司机午夜免费视频| 中文字幕亚洲图片| 91免费福利精品国产| 亚洲人成网站色在线观看| yy6080久久亚洲精品| 99久久精品毛片免费播放| 亚洲精品视频专区| 日韩在线视频免费看| 精品人妻系列无码人妻免费视频| 亚洲视频一区在线| 国产成人精品免费直播| 国产情侣久久久久aⅴ免费| 亚洲成人免费在线观看| 五月天婷亚洲天综合网精品偷| 最近免费mv在线观看动漫| 色婷五月综激情亚洲综合| 亚洲男人第一无码aⅴ网站| 国产精彩免费视频| kk4kk免费视频毛片| 亚洲另类自拍丝袜第1页| 在线观看国产区亚洲一区成人 |