<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    Rss & SiteMap

    曙海教育集團論壇 http://www.bjzhda.cn

    曙海教育集團論壇
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
    [瀏覽完整版]

    標(biāo)題:目前主流開發(fā)技術(shù)的分析和總結(jié)

    1樓
    wangxinxin 發(fā)表于:2010-12-10 15:09:35
    主流的程序設(shè)計語言:C++、Delphi(ObjectPascal)、Java、C#

      桌面應(yīng)用程序框架:MFC、VCL、QT、JavaAWTSWING、.Net

      企業(yè)應(yīng)用程序框架:WindowsDNA(ASP、COM、COM+)、J2EE、.NetFramework

      開發(fā)工具:VisualBasic、Delphi、VisualC++、C++Builder、VisualC#

      *程序設(shè)計語言:C++Delphi(本來應(yīng)該是ObjectPascal,但為了簡單,我就語言和工具混為一談吧)JavaC#(雖然他剛剛推出,但因為微軟為之傾注了大量心血,一定會成為一種重要的開發(fā)語言)

      *桌面應(yīng)用程序框架:MFCVCL

      *企業(yè)應(yīng)用程序框架:WindowsDNAJ2EE.Net

      *COM技術(shù):我單獨提出這項技術(shù),是因為它無法簡單的被視為語言、桌面應(yīng)用程序框架或企業(yè)應(yīng)用程序框架,它與這些都有關(guān)系。

      2.1 程序設(shè)計語言

      2.1.1 C++語言的演進

      最初要從二進制代碼和匯編說起,但那太遙遠了。我們就從面向過程的語言說起吧(包括BasicCFortranPascal)。這種面向過程的高級語言終于把計算機帶入了尋常的應(yīng)用領(lǐng)域。其中的C語言因為它的簡單和靈活造就了Unix和Windows這樣的偉大的軟件。

      面向?qū)ο蟮恼Z言是計算機語言的一個合乎邏輯的進化,因為在沒有過多的影響效率、簡單性的前提下提供了一種更好的組織數(shù)據(jù)的方法,可使程序更容易理解,更容易管理——這一點可能會引出不同意見,但事實勝于雄辯,C++終于讓C語言的領(lǐng)地越來越小,當(dāng)今還活著的計算機語言或多或少的都具備面向?qū)ο蟮奶卣鳎赃@一點并不會引起太多困惑。C++的成功很大程度要歸因于C,C++成為它今天的樣子是合乎邏輯的產(chǎn)物。因為在面向過程的時代,C幾乎已經(jīng)統(tǒng)一天下了。今天著名的語言象JavaC#都從C借鑒了很多東西,C#本來的意思就是C++++。其實C++曾經(jīng)很有理由統(tǒng)一面向?qū)ο蟪绦蛟O(shè)計語言的天下來著,但可惜的是,C++太復(fù)雜了。即使是一個熟練的程序員,要你很清楚的解釋一些問題你也會很頭痛。舉幾個還不是那么復(fù)雜的例子來說:

      對=的重載成員轉(zhuǎn)換函數(shù)拷貝構(gòu)造函數(shù)轉(zhuǎn)化構(gòu)造函數(shù)之間有什么區(qū)別和聯(lián)系呢?

      定義一個類成員函數(shù)private:virtualvoidMemFun()=0;是什么意義呢?

      int(*(*x(int))[4])(double);是什么意思?

      還有其他的特征,比如說可以用來制造一種新語言的typedef和宏(雖然宏不是C++的一部分,但它與C++的關(guān)系實在太密切了),讓你一不小心就摔跤的內(nèi)存問題(只要new和delete就可以了嗎?有沒有考慮一個對象存放在容器中的情況?)……諸如此類,C++是如此的復(fù)雜以至于要學(xué)會它就需要很長的時間,而且你會發(fā)現(xiàn)即使你用C++已經(jīng)好幾年了,你還會發(fā)現(xiàn)經(jīng)常有新東西可學(xué)。你想解決一個應(yīng)用領(lǐng)域的問題——比如說從數(shù)據(jù)庫里面查詢數(shù)據(jù)、更改數(shù)據(jù)那樣的問題,可是你卻需要首先為C++頭痛一陣子才可以,是的,你精通C++,你可以很容易的回答我的問題,可是你有沒有想過你付出了多大的代價呢?我不是想過分的譴責(zé)C++,我本人喜歡C++,我甚至建議一個認(rèn)真的開發(fā)普通的應(yīng)用系統(tǒng)的程序員也去學(xué)習(xí)一下C++,C++中的一些特性,比如說指針運算模板STL幾乎讓人愛不釋手,宏可以用幾個字符代替很多代碼,對系統(tǒng)級的程序員來說,C++的地位是不可替代的,Java的虛擬機就是C++寫的。C++還將繼續(xù)存在而且有旺盛的生命力。

      2.1.2 Java和C#

      Java和C#相對于C++的不同最大的有兩點:第一點是他們運行在一個虛擬環(huán)境之中,第二點是語法簡單。對于開發(fā)人員而言,在語法和語言機制的角度可以把Java和C#視為同一種語言。C#更多的是個政治的產(chǎn)物而不是技術(shù)產(chǎn)物。如果不是Sun為難微軟的話,我想微軟不會費盡心力推出一個和Java差不多的C++++,記得Visual J++嗎,記得WFC嗎?看看那些東西就會知道微軟為Java曾經(jīng)傾注了多少心血。而且從更廣泛的角度來說,兩者也是非常相似的——C#和Java面對的是同樣的問題,面向應(yīng)用領(lǐng)域的問題:事務(wù)處理、遠程訪問、Webservice、Web頁面發(fā)布、圖形界面。那么在這一段中,我暫且用Java這個名字指代Java和C#兩種語言——盡管兩者在細(xì)節(jié)上確實有區(qū)別。Java是適合解決應(yīng)用領(lǐng)域的問題的語言。最大的原因Java對于使用者來說非常簡單。想想你學(xué)會并且能夠使用Java需要多長時間,學(xué)會并且能夠使用C++要多長時間。由于Java很大程度上屏蔽了內(nèi)存管理問題,而且沒有那么多為了微小的性能提升定義的特殊的內(nèi)容(比如說,在Java里面沒有virtual這個關(guān)鍵字,Java也不允許你直接在棧上創(chuàng)建對象,Java明確的區(qū)分bool和整型變量),他讓你盡量一致的方式操作所有的東西,除了基本數(shù)據(jù)類型,所有的東西都是對象,你必須通過引用來操 作他們;除了這些之外,Java還提供了豐富的類庫幫助你解決應(yīng)用問題——因為它是面向應(yīng)用的語言,它為你提供了多線程標(biāo)準(zhǔn)、JDBC標(biāo)準(zhǔn)、GUI標(biāo)準(zhǔn),而這些標(biāo)準(zhǔn)在C++中是不存在的,因為C++并不是直接面向解決應(yīng)用問題的用戶,有人試圖在C++中加入這些內(nèi)容,但并不成功,因為C++本身太復(fù)雜了,用這種復(fù)雜的語言來實現(xiàn)這種復(fù)雜的應(yīng)用程序框架本身就是一件艱難的事情,稍后我們會提到這種嘗試——COM技術(shù)。漸漸的,人們不會再用C++開發(fā)應(yīng)用領(lǐng)域的軟件,象MFCQTCOM這一類的東西最終也將退出歷史舞臺。

      2.1.3 Delphi

      Delphi是從用C++開發(fā)應(yīng)用系統(tǒng)轉(zhuǎn)向用Java開發(fā)應(yīng)用系統(tǒng)的一個中間產(chǎn)物。它比C++簡單,簡單的幾乎象Java一樣,因為它的簡單,定義和使用豐富的類庫成為可能,而且Delphi也這么做了,結(jié)果就是VCL和其他的組件庫。而另一方面,它又比運行于虛擬環(huán)境的Java效率要高一些,這樣在簡單性和效率的平衡之中,Delphi找到了自己的生存空間。而且預(yù)計在未來的一段時間之內(nèi),這個生存空間將仍然是存在的。可以明顯的看出,微軟放棄了這個領(lǐng)域,他專注于兩方面:系統(tǒng)語言C++和未來的Java(其實是.Net)。也許這對于Borland來說,是一件很幸運的事情。如果我能夠給Borland提一些建議的話,那就是不要把Delphi弄得越來越復(fù)雜,如果那樣,就是把自己的用戶趕到了C++或Java的領(lǐng)地。在虛擬機沒有最終占領(lǐng)所有的應(yīng)用程序開發(fā)領(lǐng)域之前,Delphi和Delphi的用戶仍然會生存得很好。

      2.2桌面應(yīng)用程序框架

      目前真正成功的桌面應(yīng)用程序框架只有兩個,一個是MFC,一個是VCL,還有一些其他的,但事實上并未進入應(yīng)用領(lǐng)域。遺憾的是我對兩個桌面應(yīng)用程序框架都不精通。但這不妨礙我對他做出正確的評價。

      2.2.1MFC

      MFC(還有曾經(jīng)的OWL)是SDK編程的正常演化的結(jié)果,就象是C++是C的演化結(jié)果一樣。MFC本身是一件了不起但不那么成功的作品,而且它過時了。這就是我的結(jié)論。MFC凝聚了很多天才的智慧——當(dāng)然,OWL和VCL也一樣,侯捷的《深入淺出MFC》把這些智慧擺在了我們的面前。但是這件東西用起來估計不會有人覺得很舒服,如果你一直在用Java、VB或者Delphi,再回過頭來用MFC,不舒服的感覺會更加強烈。我不能夠解釋MFC為什么沒有能夠最終發(fā)展成和VCL一樣簡單好用的桌面程序框架,也許是微軟沒精力或者沒動力,總之MFC就是那個樣子了,而且也不會再有發(fā)展,它已經(jīng)被拋棄了。我有時候想,也許基于C++這種復(fù)雜的語言開發(fā)MFC這樣的東西本身就是錯誤的——可以開發(fā)這樣的一個框架,但不應(yīng)當(dāng)要求使用它的人熟悉了整個框架之后才能夠使用這個系統(tǒng),但很顯然,如果你不了解MFC的內(nèi)部機制,是不太可能把它用好的,我不能解釋清楚為什么會出現(xiàn)這種現(xiàn)象。

      2.2.2VCL

      相比之下VCL要成功的得多。我相信很多使用VCL的人可能沒有像MFC的用戶研究MFC那樣費勁的研究過VCL的內(nèi)部機制。但這不妨礙他們開發(fā)出好用好看的應(yīng)用程序,這就足夠了,還有什么好說的呢?VCL給你提供了一種簡單一致的機制,讓你可以寫出復(fù)雜的應(yīng)用程序。在李維的Borland故事那篇文章中曾經(jīng)說過,在Borland C++ 3.1推出之后Borland就有人提出開發(fā)類似C++ Builder一類的軟件,后來竟未成行。是啊,如果C++ Builder是在那個時候出現(xiàn)的,今天的軟件開發(fā)領(lǐng)域?qū)窃趺礃拥氖澜缒兀空娴牟荒芟胂蟆R苍S再過一段時間,這些都將不再重要。因為新生的語言如Java和C#都提供了類似于VCL的桌面應(yīng)用程序框架。那個時候,加上Java和C#本身的簡單性,如果他們的速度有足夠塊,連Delphi這種語言也要消失了,還有什么好爭論的呢?只是對于今天的桌面程序開發(fā)人員來說,VCL確實是最好的選擇
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

    Copyright © 2000 - 2009 曙海教育集團
    Powered By 曙海教育集團 Version 2.2
    Processed in .01563 s, 2 queries.
    主站蜘蛛池模板: 国产日产一区二区三区四区五区| 日本成人在线免费观看| 四虎网站1515hh四虎| 91视频综合网| 奶特别大的三级日本电影| 么公的又大又深又硬又爽视频 | 女人让男人桶的小视频| 久久精品日日躁夜夜躁欧美| 欧美日韩1区2区| 午夜老司机免费视频| 草草久久久无码国产专区| 国产精品天天干| www.99色| 成人三级在线观看| 久久精品国产亚洲av日韩| 欧美交换配乱吟粗大| 免费国内精品久久久久影院| 美妇又紧又嫩又多水好爽| 国产精品爽黄69天堂a| 一区二区视频在线免费观看| 成年人免费视频软件| 亚洲AV无码成人专区| 欧美性大战久久久久久片段| 免费看欧美成人性色生活片| 经典三级四虎在线观看| 国产成人免费高清激情明星| 91福利小视频| 国产麻豆天美果冻无码视频| 三极片在线观看 | 亚洲午夜久久久影院伊人| 激情综合色五月六月婷婷| 国产999精品久久久久久| 韩国免费A级作爱片无码| 国产精品宾馆在线| av潮喷大喷水系列无码| 好紧我太爽了再快点视频| 久久久久亚洲精品男人的天堂| 日本高清在线不卡| 亚洲不卡中文字幕| 欧美乱妇高清无乱码在线观看| 人人妻久久人人澡人人爽人人精品|