自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++老矣,尚能飯否?

原創(chuàng)
開發(fā) 后端
C++ 11的發(fā)布,讓大家知道原來C++語言還有更新?lián)Q代的情況。在Java 7等語言新版本不斷的時候,C++似乎步伐慢了一些。究竟是C++老矣,還是程序員們不關心C++的與時俱進?

【51CTO獨家特稿】中國人讀“C++”時存在兩種讀音,一種讀作“C加加”,另一種讀作“C plus plus”。兩種讀音似乎都沒錯,只是遵從不同的標準罷了。如同C++有兩種讀法一樣,目前C++陣營甚至沒有一個完整的標準,只有最符合和接近C++標準的編譯器GNU GCC 4.6.1和微軟的Visual Studio 2010 SP1。C++這個在Tiobe編程語言排行榜中躋身三甲的語言,為何連完整的標準都沒有?

C++之父 

C++之父 Bjarne Stroustrup

C++之父Bjarne Stroustrup的簡歷上只有一句話“C++締造者”,這樣的成就是榮耀無比的。但似乎C++似乎過于低調,讓很多C++程序員都沒有新消息可以接收。Java有Oracle等大公司推動、.NET有微軟推動、HTML 5有Google等推動、包括PHP有眾多用戶和社區(qū)推動,那C++有誰在推動呢?

C++從20世紀80年代面世,經歷了以下三個階段的發(fā)展

第一階段從1980年代到1995年。這一階段C++語言基本上是傳統(tǒng)類型上的面向對象語言,并且憑借著接近C語言的效率,在工業(yè)界使用的開發(fā)語言中占據了相當大份額;   

第二階段從1995年到2000年,這一階段由于標準模板庫(STL)和后來的Boost等程序庫的出現,泛型程序設計在C++中占據了越來越多的比重性。當然,同時由于Java、C#等語言的出現和硬件價格的大規(guī)模下降,C++受到了一定的沖擊;   

第三階段從2000年至今,由于以Loki、MPL等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發(fā)展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最復雜的一員。

Borland C++ Builder 

Borland已隕落

相信很多程序員跟51CTO記者一樣,在大學里學習過《C++語言程序設計基礎》。聽著老師們指著譚浩強的《C++程序設計》,不厭其煩的講解char、int等數據類型的取值范圍,指針指向地址取值的問題。在這過程中我們接觸的第一個IDE(編譯器)是Borland公司的C++ Builder,盡管他已經淪落到被人收購的境地。2009年5月6日,英國軟件商Micro Focus宣布,公司將以7500萬美元現金收購Borland軟件公司,一代軟件開發(fā)工具先驅者隕落了。

不管我們用的是Borland公司還是微軟的VC環(huán)境,很少有程序員關心C++的標準和版本問題。我們經常能聽到Java或.NET程序員談論Java 7或者.NET 3.5等版本的新特性,但有誰關心過C++的新版本?

51CTO記者隨機對一些C++程序員進行了調查,有50%的程序員表示對開發(fā)語言的新版本有興趣,但不會用到實際工作中。只有當所在公司要求他們統(tǒng)一進化到新版本時,才會使用新版本。有10%的程序員會從繁忙的工作中抽出時間來學習新版本,并獨自運用到開發(fā)工作中。剩下40%的程序員表示天天加班,根本沒有時間看所謂的新版本,到時候現學吧。

這樣的調查結果讓我們了解了國內程序員對編程語言新版本的態(tài)度。從51CTO發(fā)布的新聞《掀起C++ 11的神秘面紗》中,我們聽到了不少C++的程序員對于C++ 11的悲觀論調,甚至預言未來的C++ 11進不了編程語言排行榜的前十。

C++真的老了?

現在最好找工作的程序員是哪一類?根據51CTO編輯在智聯(lián)招聘網站,以北京地區(qū)為范圍,搜索到不同開發(fā)語言工作崗位數量如下:

PHP 5212
Java 11824
C++ 9252
ASP.NET 2383

可以看出C++程序員的需求是旺盛的,甚至超越了因電子商務而紅火的PHP程序員。C++并不因為版本的問題而遭到拋棄,廉頗老矣,尚能飯否的應該是VB這樣的語言。因為在智聯(lián)招聘里,VB這個關鍵詞只有可憐巴巴的827個職位。

看來C++還是很多程序員的飯碗,大家一致用行動證明C++并沒有老去,并沒有被人所遺忘。只是我們身在C++中,并不太關心它的進步和發(fā)展,只要用C++能處理好手頭上的工作,哪管C++ 11的未來?

為什么新手不選擇C++?

很多新人喜歡Java或者.NET,因為他們開發(fā)起來相對簡單,甚至說高效。以往C++的優(yōu)勢在于對硬件資源的合理分配,特別是代碼行超過三萬以后,C++的系統(tǒng)消耗優(yōu)勢更加明顯,這也是為什么很多大公司熱衷于C++做大型開發(fā)的原因。

但隨著內存和CPU等硬件設備的降價,硬件資源和性能問題似乎不再成為程序員們考慮的問題。就好像386、486時代的PC用戶還要為那幾十K的內存優(yōu)化費勁一樣,C++程序員那窮盡極致的節(jié)約系統(tǒng)資源,已經被看做是費力不討好,新手們自然不選擇C++了。

其實百度和《魔獸世界》都是C++寫出來的。

看C++ 11的新特性

C++沒有垃圾回收機制,未來似乎也沒有。如果你不小心沒管住內存,那么就要對不起了,內存崩潰的情況不是不可能。在Java和.NET都支持垃圾回收之后,C++ 11還是顯得有些另類。當然我們也是猜測,這樣對內存的精確控制,是不是出于對程序開發(fā)更加精確的考慮?

新的C++ 11里將會支持多線程開發(fā),這個與目前多核CPU技術的發(fā)展密切相關,能極大的提高C++開發(fā)成品的效率。這個新特性應該是與時俱進的改變,還是沒有多少創(chuàng)新性。Visual Studio 2010也已經實現C++并行構建的功能。

Lambda表達式也是此次C++ 11標準中最為人詬病的特性,甚至有C++程序員直言“這Lambda太丑陋了,還不如Java,盡管Java的Lambda也是極其丑陋。”也有清醒的C++程序員認為Lambda表達式在大型項目中的應用還是不錯的,新的語言機制會帶來新的效率,盡管這會有些陣痛。關于Java 7與C#中Lambda表達式的優(yōu)劣,請點擊這里。

借用一位C++程序員的例子來說明Lambda的正面作用,在C++中,STL的很多算法都要求使用者提供一個函數對象。例如for_each函數,會要求用戶提供一個表明“行為”的函數對象。以vector<bool>為例,如果想使用for_each對其中的各元素全部賦值為true,一般需要這么一個函數對象,

  1. class  filler  
  2.   {  
  3.  public :  
  4.   void   operator ()( bool   & i)  const    {i  =   true ;}   
  5. } ;  

這樣實現不但麻煩,而且不直觀。而如果使用lambda,則允許用戶使用一種直觀和見解的方式來處理這個問題。以boost.lambda為例,剛才的問題可以這么解決:

  1. for_each(v.begin(), v.end(), _1  =   true ); 

面對Java和.NET這樣的后起之秀,C++的轉身似乎顯得慢了一些。在移動開發(fā)和WEB應用紅火的今天,C++的聲音似乎小了一些,希望這次C++ 11的新聞不會被Java 7和HTML 5給淹沒了。

C++ 11標準放出,罵的人比捧的人要多。一是認為原有的C++老標準已經滿足需要,二是認為新標準加入的新功能讓初學者更不能適應。這兩種意見有道理,就如同Windows XP已經很方便了,Windows 7全新的操作讓很多人不適應一樣。

[[34610]] 

搞C++要有革命熱情

一切只能等C++ 11真正出臺,讓更多的C++程序員用到C++ 11才能有說服力。僅憑媒體放出的一些新特性恐怕還不足以讓大家完全了解C++ 11的真面目。51CTO編輯認為,C++ 11能把C++這款“老”編程語言帶到一個新的高度,C++還會是排名三甲的編程語言。

【編輯推薦】

  1. 一個實用主義者的觀點:如何學習使用C++
  2. 程序員新招:Java與C++混合編程
  3. C++和Java 的缺省初始化問題
  4. 淺析C++數據類型取值范圍
  5. Visual Studio 2010中C++的四大變化

 

責任編輯:彭凡 來源: 51CTO
相關推薦

2018-11-12 08:30:47

IT技術面試

2023-12-21 13:56:41

PHP語言程序員

2011-07-04 13:29:34

技術周刊

2020-02-17 14:56:24

JrebelJava生態(tài)系統(tǒng)技術

2025-01-07 08:00:00

2020-10-25 08:55:00

代碼開發(fā)工具

2015-11-24 15:17:57

谷歌回歸中國

2021-02-01 11:23:13

IBM云計算

2018-10-30 15:32:07

數據庫NoSQLNewSQL

2011-07-14 17:45:06

CC++

2010-01-21 14:07:14

CC++聲明

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2010-01-26 15:51:06

C++變量

2011-07-15 00:47:13

C++多態(tài)

2010-01-28 13:45:06

C++數組

2010-01-20 10:19:55

C++數組

2010-01-28 16:31:54

C++類型

2010-01-21 13:33:44

C++基類

2010-01-27 17:16:52

C++構造函數
點贊
收藏

51CTO技術棧公眾號