剛接到公司的通知,要求确定明年的教育訓練的方向(c/c++和java二選一),也是以後的工作方向。我是一個應屆的畢業生,剛和公司簽定了就業協定,是一家主要電信計費的公司,簽約時間是,五年挺長的是以要謹慎考慮,c/c++還是java呢?這段時間剛好在csdn上又看到關于c/c++和java語言的論戰,這次不像以前那樣隻是看看熱鬧而已,這可是的關于自己的終生大事啊!還是和以前一樣,雙方是誰也說服不了誰。求人不如求己,我從網上收集的資料,寫了這篇文章表達了自己的看法,我想這對自己理清思路有用,希望對别人也有用。 c++ ,java 和c# 誰是英雄 ? guojianlee:http://blog.csdn.net/vargas 每次的語言論戰中,C方的總會說:jdk是用c語言寫的,是以java速度比不上C。另一方說C++過于複雜,不利與軟體開發,而且在分布式軟體和網際網路應用中java有明顯的優勢。在我看來這樣比較并不能确定一個語言的未來的發展的趨勢,并不能斷定誰取代誰,和矮子比高,和高的人比矮,java和c比類庫,是比不出結果的。我想這也是為什麼每次語言論戰都是不了了之的原因。在我分析看來的影響語言發展和前途的主要有兩個的因素: 1. 語言和專業的領域有很大的關系。沒有人會去比較 java會不回代替lisp。c語言在作業系統,圖形處理方面,工業控制,嵌入式系統的優勢,肯定大于java。c#,java在internet上的應用肯定強于c++。語言都比較明顯領域特征,不一定說某個語言天生就是就為某個領域而生的,特别像java ,c#,c/c++表達方式通用的語言。如果那種語言沒有領域的特征隻能說明它不成熟。從本質上來說其實應該說是語言是帶有時代特征的,在計算機科學中每個時代都自己的技術上的主題,而一種語言的能夠誕生,能發展,并且成熟,就說明了它符合這個時代的主題,順應了時代的潮流,就像java并不是為網絡時代而設計了,但她身上有某中特質符合這個時代,并且随着時代的發展一起發展,也使她越發的有時代特征,也就是領域特征。發展是要繼承的,c語言也要編譯成機器碼才能運作,jdk是c語言寫的,将來有可能在java的基礎會建立出更進階的語言來。有點像進化論。 2. 語言與作業系統有很大關系。C#根植window,ms和sun的關系也使jre與windows的相容性不好,特别是在企業應用方面。這也導緻java伺服器運作在大多運作linux/unix上。 現對讨論的範圍做如下限定: 語言:c/c++,c#,java 作業系統:windows,linux/unix; 應用領域:傳統應用,桌面程式,網際網路; 傳統應用包括:驅動開發,圖形處理,工業控制,底層通信協定,嵌入式系統 桌面程式:主要指有界面個人的應用程式 這樣劃分可能不科學,但個人能裡有限,不可能做全面的分析。 從領域的影響力和應用的規模上來看應該是,桌面程式 < 傳統應用 < 網際網路;
桌面程式 | 傳統應用 | 網際網路應用 | |
windows | c/c++ > C# > java | c/c++ | C# >java |
Linux/unix | c/c++ > java | c/c++ | java |
在個人的pc機上,windows的普及率是99%,可以忽略linux/unix下的桌面程式影響,而在這領域,由于MFC停止發展,c++ crl不受寵,c#在桌面程式領域将進一步奪取c++的地盤,所占的比例會加大,而java份額将會被c#完全奪走。但vista釋出也增加了一定變數,有可能的釋出更加劇了這一趨勢,也有可能使使用者堅持使用winxp或由于gome同樣有vista風格分流部分使用者到linux,這樣會給c++保留一定的份額,但總體上還c#占優。 在傳統領域裡c/c++有着不可替代的作用,雖然受到java的威脅,但從現在來看,特别是c語言在整個領域的使用比列相對來說應該是比較穩定的。從下圖c語言的近幾年排名情況也可以證明我的觀點,圖檔是摘自 http://www.tiobe.com/tpci.htm ,關于語言的受歡迎程度的排名網站。

而在網際網路方面,1999的資料顯示,有部分的程式員從windows轉移到linux下從事java,的電子商務反面的開發,使在windows下從事開發的程式比例,從65%下降到40%, 而從事web程式開發比例從,18%上升到40%。由于2000 微軟釋出.net,到現在為止在windows程式員比例應該大緻保持不變,而從事web開發的程式員,肯定是有所上升,60%可能還是一個保守的估計,可見網際網路應用在計算機應用中,在擴大,在将來可能“互聯就是計算機”。2005年底windows在的伺服器上的收益超過unix,這一比例會進步加大。從以上的資料可以看出,在将來的幾年内,C#和java的比例都會增長,但C#增長的肯定将超過java。雖然java想借住開源的力量,來為自己的發展加力,這将會吸引部分c/c++開源者加入到java社群中,但由于c/c++應用比較固定,效果不會明顯,是以總體的趨勢應該不變的。而且我想不久微軟在開源上也會有所動作的。 綜上所述:總體來看,在網際網路應用中c# 和java占的比例會加大,但c#發展會超過java,但不會殺死java,主要原因是有作業系統這個鴻溝,而且我看mono的目的也隻是想能在linux中運作C#桌面程式。由于windows在pc上絕對的霸主的地位,c#無疑将是最佳的桌面程式編寫語言,這一領域c++還是有一定份額的。在傳統領域c/c++還是老當益壯,除非整個計算機體系發生翻天覆地的改變,不然這一局面不會馬上改變。如果非要分出個勝負來應該是 c# > java > c/c++ 但這隻是從整體使用的比例來看的,各個領域還是不一樣的。 我的問題解決了,我給公司回了email,c/c++,我的選擇是c/c++,希望自己沒有選錯,也希望這篇文章對你有用! 參考資料: http://blog.csdn.net/WAST/archive/2007/01/18/1486363.aspx http://www.eweek.com/article2/0,1895,1930217,00.asp http://ometer.com/desktop-language.html http://www.tiobe.com/tpci.htm http://news.com.com/news/0-1003-200-345955.html