這可不是我寫的,我只是看到覺得不錯,才貼的哦。
:
不要以為這個題目是聳人聽聞,但就目前的形勢來看c/c++是需要退出舞台或者說的婉轉一點是需要更新換代了.
我想在未來的一兩年裡,作為程序員等級評判的標准之一c/c++(不管是mfc還是bcb)將會讓位給三種編程語言,1.sun的Java2.Windows平台上的c#3.XML
為什麼這麼說呢,我認為最大理由是目前的應用程序正在從基於獨立的操作系統,傳向基於internet平台.
我們以前開發應用程序都是依賴於平台的功能調用,mfc,bcb都是這樣.而現在日益火熱的internet編程卻最不想關心的就是某一個平台的調用,譬如說要實現b2b的電子商務那麼就需要做不同平台的集成,如果我是程序員我最care的就是如何實現商務邏輯
而不是各種平台之間的通信和管理.那麼我們最迫切需要的就是一種與各種平台調用無關的語言,這中語言只注重程序邏輯的設計而不涉及平台的調用.而我們熟悉的c/c++卻恰恰不是為這個而設計的(赫赫這也不能怪c/c++在70年代誰能知道現在internet的情況呢).c/c++的最初設計目的是為了設計unix產生一種介於匯編和高級語言之間的一種開發高效而性能不低的語言.他要比其他任何高級語言都要關心系統的物理結構,譬如一直是毀譽攙半的指針.指針之所以強大就是應為涉及了系統物理內存的管理.他可以使得程序員和系統之間成為一種半透明狀態.但是就是這種半透明的狀態讓指針帶來了更多的不穩定性.
c/c++在面向Internet的編程中卻無任何優勢可言.跨平台的電子商務軟件最害怕顧及各種平台之間的天差地別的系統調用,最害怕時不時的由於內存洩漏而crash.c/c++的優勢在這裡卻成為了劣勢.即使在windows平台上開發基於Windows dna的solution
用的最多的還是vb做的dcom而不是vc的atl做的dcom,因為c/c++雖然高效但是太容易
出錯,如果不是很小心的釋放內存nt很快就會資源不足.
java就是最先看到這種情況,他用jvm實現了平台無關用內存回收實現了穩定健壯.但是相當多的c/c++程序員抱怨java太慢了.的確即使到java2速度仍然是一個大問題.我曾經是一個c/c++堅決擁護者在許多論壇裡和java程序員打筆仗.但是我逐漸意識到面對與internet平台而不是特定的操作系統的時候java的速度問題往往是一個小小的瑕疵.我們可以想象那一個電子商務網站會用我們手頭的pc做服務器,他們不是sun的e1000就是ibm的risc6000.在這種平台上Java這點速度問題只是a peice of cake.程序員只需要專注與商務邏輯的編程,而不必要關心數組是否越界,對象內存是否釋放更不需要關心是不是unix和Windows的系統調用不一樣.
微軟的c#可以說是一種Java與c/c++的雜合體,他可以回收內存,可以平台無關.但是
他又可以實現一些java沒有的功能譬如在標記的程序段內用指針自己管理內存,可以實現操作符的重載等等.為什麼要這樣做我想也許c#還肩負了一定的面向操作系統開發的任務例如winform.他基本上的思想和java類似,但是實現的方法又不一樣他不通過jvm解釋中間代碼,而是吧源代碼編譯成p代碼然後通過CLS庫和JIT在平台上及時編譯為100%的本地代碼來執行.他的pe代碼是獨立於平台的,但是cls和jit卻根據不同的平台而設計.因此c#的平**立有點類似於c/c++在不同平台上的移植使得c#比java來的更快.而且微軟還許諾cls和jit不僅針對c#還可以針對任何語言譬如pascal,smaltalk,basic因此將來有可能所有的編程語言都是可以平台無關的(ms真是毒,所有的語言都平台無關Java還有什麼優勢呢,據說ms正在開發基於pascal smaltalk的ASP+).
XML很多人可能認為與Html相類似的語言和c/c++,java,c#完全不在一個檔次上的語言.其實不然.我們知道不管是c#還是java都是通過統一地層計算來實現平台無關.那就必須在性能上付出一點代價.而XML卻能夠實現不同的語言之間的調用.譬如說一個網占用Java用bean實現一個出貨功能,另一個網站用dcom實現一個入庫功能 .如果這個網站需要實現b2b,用一般的方式就是在他們之間寫轉換程序.而xml通過標記語言來描述各自的借口特性.兩端通過解析XML文本來實現互相的調用,無需任何中間轉換程序
只要一張xml文本就能實現bean和dcom之間的通訊(要說清楚其中的機理,需要很多xml概念如果有興趣可以到msdn.microsoft.com/XML或者www.s3c.org去看看).目前ms的.Net中最核心的技術soap就是完全基於XML的遠過程調用.
介紹了那麼多可能有點跑題,其實我最想說的就是21世紀的程序員應該從面向操作系統的傳統方法中走出來,學習一點如何面向Internet平台編程的技術和概念.不要在無畏的那種c/c++工具好之類的地方爭論.我想不出一兩年不管是bcb還是mfc都要淘汰,
到那個時候要爭論的不是bcb好還是mfc好而是c#好還是Java好.至於XML那是不管sun和ms以至於世界任何大的IT公司包括Intel,hp都在奮力研究的技術.