程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++語言真的還有市場價值?

C++語言真的還有市場價值?

編輯:C++入門知識

C++語言讓編程人員和搞開發的人員大大頭疼的問題,即使不用STL,不用類,不用虛擬繼承,甚至不用C++的一切特性,其實學C++很簡單,希望本文能給大家帶來幫助。。。

開篇之前,先略微聲明一下。本文目的不在於為C++辯護或抬舉,當然也不會有為此而抬高或打壓別的編程語言的意圖。所有的,僅僅是有感而發,並且還是從我個人的角度,有所缺失在所難免。如果你是老鳥,其中之缺還望相見一笑;如果你是菜鳥,對於文中的贊美和批評,請擦亮眼睛,別被我忽悠了。

首先我們先要知道一點,C++是一門什麼語言?簡單點來說,C++是一門接近於全能的語言。為什麼說是接近呢?因為C++有一門語言是無法取代的,那就是匯編。再直白點來說,匯編對於寄存器的操作,C++是無法勝任的。不信?你試試用C++來改寫一下PC寄存器看看?沒轍吧?

"接近"可以理解了,那麼"全能"呢?我們知道,C++是兼容C的。不嚴謹地說,我們可以簡單認為C只是C++的一個子集,所以C能做的,C++也能做,這個應該沒有人有異議。為了方便,以下所描述的C++語言,在某些方面也代表C,之所以沒采用C/C++這樣的寫法,僅僅是為了保護鍵盤而已。轉回正題,那C#呢?JAVA呢?它們所能做的,比如網絡方面的應用,B/S的方方面面,怎麼就沒見C++的身影呢?

關於這個問題嘛,我們從另一個角度來看,C#和JAVA的運行基礎是什麼?沒錯,是虛擬機。虛擬機是用什麼寫的?嘿嘿,C++。所以,你完全可以用C++先寫一個虛擬機,然後再在虛擬機上解釋C++語法。是不是很酷?當然,我想現實中是不會有人那麼去做的。就像從深圳到上海,你可以坐飛機去,也可以騎自行車去。兩者都能到達目的地,但我估計沒幾個人會選擇後者。這就是效率問題。

坐飛機,眼一睜一閉,就到了;騎自行車?呃,這時間就不好估計了。所以這領域,該讓C#的,或是JAVA的,就讓它們去折騰吧。至於C++,就讓它干在一旁瞪眼好了,除非你一定想要耍耍酷。

接著,我們就來看看桌面應用吧。所謂的桌面應用,我們狹義一點,就是桌面應用程序。總的來說,目前在這領域,C++確實還能占有一席之地。但這僅有的一席之地,也岌岌可危。在XP之前,因為系統都是沒有預裝.net framework,所以C++的對手無非就是VB和DELPHI,但這兩者根本無法撼動C++這顆大樹。雖然XP也能裝.net framework,但為了一個應用而弄一個體積如此巨大的玩意,卻有那麼一點點的不現實。

但後XP時代,世界就不一樣了。Vista已經預裝了.net framework,更不用說Windows 7。甚至還有傳言,Windows 7的用戶界面就是用C#搞定的。何況,C#還有殺手锏,能和Silverlight完美結合,大大減輕UI的開發難度。看起來,在今後的日子,在這個桌面應用領域,C++日子過得並不舒坦。在這領域,可能C++還能耀武揚威的,也許就剩下大型的3D游戲了。雖然用.net配合OpenGL或Direct3D也能做C++的事,但效率卻會大打折扣。

雖然隨著硬件的不斷提升,可能這折扣會不斷縮小,但畢竟還是存在的。只要折扣存在,那些游戲廠商就不會放棄C++,因為能優化,為何不優化?但,也許也僅僅限於此了。C++,它淚流滿面。

最後呢,就是嵌入式領域。在這裡,是C++的天下,C++是永遠的王者。它不是一個人在戰斗!此刻,它靈魂附體!你見過那些RTOS是用C++以外的語言寫的再次重申,正如前文所說,這裡的C++也代表了C)?至少我印象中沒有。嵌入式linux支持.net?除非微軟的腦袋秀逗了。

也許有人說,WinCE不是可以支持.net麼?支持是可以支持,但並不代表所有的WinCE設備都支持。因為WinCE是可裁剪的操作系統,也許是為了節約內存空間,也許是為了啟動速度,或是由於別的雜七雜八的,甚至莫名其妙的理由,很多廠商根本就不會將.net這個會將系統膨脹至少4M的組件加到產品去。看看WinCE的內核代碼,看看WinCE的BSP包,哪裡有.net代碼的身影?全部清一色的C++

甚至於WinCE的應用程序,微軟的態度也非常明確,在桌面只能.net使用的Silverlight,在WinCE SP3添加之後,卻是更改為了C++接口。王者,絕對的王者,根本就不可能有別的語言在這裡將C++語言撼動!此時,C++站起來了!腰板直了!

  • C++技巧帶給了我們什麼?
  • C++類庫設計的基本構思與方法
  • C++類庫設計的基本構思與方法
  • 透析C++語言編譯問題
  • C++開發說明

說了那麼多,那麼我們的最後,就來看看為什麼大家都說學好C++難吧。如果你對學好C++沒啥興趣,以下的文字估計對你也沒啥營養,你可以完全忽略不計,可以很愉快或很氣憤地將當前網頁給咔嚓掉。

其實學C++很簡單,但難就難在這個"好"字。初學者會發現,入門很簡單,因為C++也沒啥語法;但搞清楚語法後,接下來就犯糊塗了,下一步應該怎麼走呢?只所以產生這種原因,是因為C++太靈活了。對於一種功能,C++有各種各樣的方法,究竟什麼方法才是最合適的?比如說,傳遞給函數的形參,什麼時候該使用指針,什麼時候該使用引用?就連平常得再也不能平常的指針轉型,有C的括號形式。

還有C++語言特有的dynamic_cast和reinterpret_cast,究竟哪個才是該使用的?更不用說分配內存了,既有malloc,還有new,如果算上STL的話,還有一個resize。我想所有的這些,對於初學者而言,如果他看著這些能夠腿不痛腰不酸,那麼我強烈佩服這人的淡定力。

C++語言還有更讓初學者郁悶的是,即使不用STL,不用類,不用虛擬繼承,甚至不用C++的一切特性,也是能夠完成所相應的功能。所以,疑惑了,C++是什麼?也許這時候,很多人就會想,如果選擇是唯一的,那是多麼地幸福啊!因此,很多人就轉向了C#或別的語言),因為對於某些操作,方法是唯一的;即使不是唯一,也沒有C++那麼繁多。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved