六星云課堂:還在說學(xué)C和C++沒前途?TIOBE榜單為你揭曉答案!
C/C++ 語言雖然年頭最老,但在世界語言排行榜中仍然穩(wěn)居前列。近期 TIOBE 公布了 5月度榜單,其中的 C# 在所有編程語言中最受開發(fā)者歡迎,C++成為 TIOBE 榜單 TOP 3 的強(qiáng)有力競爭者。同時與去年相比,C++現(xiàn)在是最快增長的語言。C++ 語言廣泛的用于基礎(chǔ)軟件、桌面系統(tǒng)、網(wǎng)絡(luò)通信、音頻視頻、游戲娛樂等諸多領(lǐng)域,是世界上使用最廣泛的編程語言之一。在眾多的編程語言中,C 和 C++ 語言是最深入的技術(shù),以至于很少有機(jī)構(gòu)可以開設(shè) C/C++ 課程,因此導(dǎo)致在當(dāng)前軟件行業(yè)中,C/C++ 程序員成為“稀缺級”軟件人才。

所謂“物以稀為貴”,稀缺就是核心競爭力,稀缺就意味著有很多待遇優(yōu)厚的職位。具備 C/C++ 開發(fā)技能的工程師在行業(yè)內(nèi)屬于“稀缺”人才,而精通 Unix 和 Windows 雙系統(tǒng)開發(fā)技能的 C/C++ 工程師則更加稀缺!
而且隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,C/C++技術(shù)在網(wǎng)絡(luò)通信(移動網(wǎng)絡(luò)、互聯(lián)網(wǎng)、Zigbee 等專用網(wǎng)絡(luò))、多媒體處理、智能識別等領(lǐng)域得到了進(jìn)一步的推動和發(fā)展。它們逐漸被用于醫(yī)療設(shè)備軟件中,嵌入式語言(C 和 C++ 等)越來越流行,前途一片光明。
但很多人對C++語言都存在誤解,以為C++就是C語言的擴(kuò)展,包括我自己,最開始學(xué)習(xí)C++時也是這么認(rèn)為的,一是因?yàn)槊痔窳?,然后C++面向過程部分,基本上如出一轍,各種思想基本一致,也難怪初學(xué)者會這么想。然后后面多了面向?qū)ο蟛糠忠约耙恍┢渌呒壍膬?nèi)容,所以就理所當(dāng)然的認(rèn)為是C語言的擴(kuò)充,直到深入學(xué)習(xí)后,也看到了大師們的看法,結(jié)合自己的思考,才真的體會到這種誤解了。
C語言的靈魂是指針,掌握指針,C語言你可以說是學(xué)會了。但是,C++中,指針只不過是其中很小的一部分,我們不能否認(rèn)指針在C++的重要性,但是,指針已經(jīng)不是C++的核心了,而只是基礎(chǔ)的部件而已。從這來看,C++確實(shí)不是C語言的擴(kuò)展了。C++是借鑒了C語言,從C語言發(fā)展而來,但是C++走的太遠(yuǎn)太遠(yuǎn),以至于變樣了,回到家里,C都有點(diǎn)認(rèn)不得它了。C++已經(jīng)發(fā)展成了一門全新的語言了。
面向?qū)ο蠛头盒途幊淘谒枷塍w系中有一點(diǎn)點(diǎn)的沖突,對象是將數(shù)據(jù)封裝成一個整體,有對象的方法來操作,而泛型編程卻是使數(shù)據(jù)和方法分離,中間使用一個橋梁,讓數(shù)據(jù)和方法進(jìn)行連接操作,使操作更加靈活和強(qiáng)大。泛型編程在C++標(biāo)準(zhǔn)模板庫STL中體現(xiàn)的淋漓盡致。但是,這面向?qū)ο蠛头盒途幊趟枷雲(yún)s是不統(tǒng)一的,因此也就有人在批評C++的發(fā)展是不是有點(diǎn)混亂,有點(diǎn)自相矛盾不成體系,有點(diǎn)四不像。其實(shí),從面向過程結(jié)合面向?qū)ο?,C++就已經(jīng)有點(diǎn)想通吃了,想做到一個語言無所不能,以至于后面的泛型編程的出現(xiàn)。當(dāng)然,各部分之間是有聯(lián)系的,不然就真的不能成為一個體系了,只不過聯(lián)系不太緊密,比較疏松罷了。也正是C++想大一統(tǒng)的想法,才導(dǎo)致C++變得復(fù)雜,讓很多初學(xué)者望而卻步。這也是很自然的事情。
但是,話說回來,要真正學(xué)得很深入,不管是什么語言,都是要學(xué)很多東西的。只不過一個順序而已。Java是純面向?qū)ο笳Z言,上手也快,但是要真正深入,同樣要會面向過程,要懂得泛型編程等等,后面照樣也是要花大量時間深入的,而C++只是上手比較難,但是上手后,一切都順利了。想想,C++有點(diǎn)一站全的意思,其他語言有的,它都有,只不過一些概念名稱不一樣而已。C++學(xué)會了,其他語言幾乎可以秒掉。當(dāng)然C++要學(xué)得很深入。雖然C++是很強(qiáng)大,但是前期的準(zhǔn)備是要好的,這就是我為什么總是強(qiáng)調(diào)基礎(chǔ)的重要性,C++要的要的是這個。
C++從底層做起,沒有扎實(shí)的基礎(chǔ),很難撐得起一片天空,所以要花大量時間學(xué)習(xí)C++的基礎(chǔ),基礎(chǔ)學(xué)好,高級的特性,以及更高層的思想就能夠輕松拿下。而其他語言就上手容易,但是深入很難,各種語言,到達(dá)終點(diǎn)的路徑是一樣長的,只是一個前緊后松和一個前松后緊的過程罷了。所以在選擇語言時,C++作為長遠(yuǎn)的發(fā)展,幾乎是最好不過的一個選擇了。當(dāng)然這個只是建議。
所以,想學(xué)好C++,必須腳踏實(shí)地,沉下心來學(xué)習(xí),不能急躁,否則學(xué)不下去,也會不好,到時候說C++學(xué)了沒用,那就是你自己的不對了。C++語言里,沒有做不到的,只有想不到的。C++同時也是學(xué)無止境的,C++中無高手,是一些大師的信仰。但是,這個所謂的高手,肯定是那種出神入化的,不過,初學(xué)者的我們,暫時也不奢求達(dá)到那個地步,能夠?qū)W到幾層功力,實(shí)際解決問題是完全不成問題的。
還有一點(diǎn),提醒一下,目前的操作系統(tǒng),基本上是用C和C++以及匯編語言寫的,Windows系統(tǒng)中,程序的運(yùn)行,首先是運(yùn)行C運(yùn)行庫,然后再啟動程序的入口點(diǎn)函數(shù),也就是所謂的主函數(shù)。主函數(shù)退出,程序也并沒有真的退出,而是調(diào)用了C運(yùn)行庫,最后才終止的。具體過程,以后大家深入了必然會了解到。
在此只是給大家一個信號,C++和C都是很有前途的,不要懷疑。如果你想以編程語言立生,建議你先學(xué)習(xí)C語言打好基礎(chǔ)。C與C++是一門通用計算機(jī)編程語言,是面向過程的語言,其語法結(jié)構(gòu)及其嚴(yán)謹(jǐn),且應(yīng)用十分廣泛。而且只要將C語言甚至C++研究透徹了的話,學(xué)習(xí)其他語言就會輕松很多。
所以,既然選擇了一門語言,就要堅持踏實(shí)的學(xué)下去,不要有任何猶豫,有沒有用就看自己學(xué)的怎么樣,而不是語言本身的問題。
以上就是本次分享的全部內(nèi)容,想學(xué)習(xí)更多C++技巧,歡迎持續(xù)關(guān)注六星云課堂!