top
Loading...
關于兩代語言.C/C++,java/c#
這可不是我寫的,我只是看到覺得不錯,才貼的哦。

不要以為這個題目是聳人聽聞,但就目前的形勢來看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都在奮力研究的技術,不學習可能就要被淘汰.至于c/c++可能就會淪落到現在匯編的地位在某些系統效能敏感的地方還能見得到.
如果是編程語言的初學者那么我建議學習java同時關注c#,他們首先比c/c++簡單沒有復雜的宏,指針,摸版等等讓人摸不招頭腦的概念.而且是完全面向對象,比c/c++的半調子面向對象清楚的多好學的多.(我推薦目前學習java,畢竟c#還沒有發布而且剛發布的beta版的編譯器要求高的嚇人需要win2000 adv server沒有128M內存的別想跑.話說回來c#和java一摸一樣沒有什么太大的區別學好了java將來的c#將會信手拈來)
對于目前的windows下的編程者來說學習mfc的價值還是有一點的但是不是太大.至少可以熟悉windows內在機理.但是我還是推薦關注一下c#將來的windows.net都是基于c#而不是mfc.而且c#要比mfc簡單的多實現一個同樣的windows桌面應用c#的開發速度是mfc的兩到三倍而且幾乎看不見性能的損失. visual studio 7.0中 vc將是一個次要的開發工具最主要的開發工具就是c#和vb7.0.至于borland我想是不可能不跟著ms走至少windows平臺上是這樣說不定明年就有一個c# builder出來作為borland的主打產品而不是c++builder了.說一句玩笑話wenny說不定很快會把這里變成www.c#help.net了

北斗有巢氏 有巢氏北斗