C語(yǔ)言這么難,為何大家都如飛蛾撲火般學(xué)習(xí)?帶你揭秘!

1、C和C++夠笨,逼的程序員自己做很多事。

C其實(shí)大家都知道,是一門(mén)底層語(yǔ)言,保留了指針等匯編特征,與系統(tǒng)底層結(jié)合密切。C++呢,更多的向個(gè)Object C,即面向?qū)ο蟮腃。但這些,其實(shí)并不能夠讓程序員顯得很牛。

個(gè)人的理解,之所以C和C++程序員顯得很牛,其實(shí)原因和大家想像的正好相反,不是因?yàn)镃和C++太強(qiáng)大,而是這兩門(mén)語(yǔ)言太弱智了。

C和C++,由于設(shè)計(jì)時(shí),主要針對(duì)系統(tǒng)底層,操作系統(tǒng)層面的應(yīng)用,因此,其提供的核心基本庫(kù)相對(duì)比較簡(jiǎn)陋,沒(méi)有提供很多華麗的框架,VC的MFC不算啊,那是針對(duì)Windows的,不是C++的基本特性。

這直接導(dǎo)致了C和C++程序員,在進(jìn)行大型開(kāi)發(fā)時(shí),缺乏現(xiàn)成的框架模板可以使用,也沒(méi)有太多的工具庫(kù)可以使用,像Java等其他語(yǔ)言,基本都提供了常見(jiàn)的幾乎所有數(shù)據(jù)結(jié)構(gòu)類,或者工具模塊,不過(guò),C和C++沒(méi)有,搞得C和C++程序員,這群可憐的娃,啥事都喜歡自己做。

2、C和C++夠通用,逼的程序員廣種薄收。

這個(gè)通用,分兩層意思。

一個(gè)是從應(yīng)用角度,C和C++是目前我見(jiàn)到唯一的可以適應(yīng)任何應(yīng)用場(chǎng)合的語(yǔ)言,它對(duì)應(yīng)用通用。起碼,除了匯編語(yǔ)言,C和C++大概是唯一用來(lái)寫(xiě)操作系統(tǒng)的語(yǔ)言了,很多底層的驅(qū)動(dòng)程序,操作系統(tǒng)內(nèi)核級(jí)模塊,只能用C和C++來(lái)開(kāi)發(fā),因此,一個(gè)C和C++程序員,他唯一不知道的,可能就是不知道自己以后會(huì)去寫(xiě)什么平臺(tái)的什么程序,這要求他必須努力學(xué)習(xí)很多語(yǔ)言之外的知識(shí),為下一份工作做好知識(shí)儲(chǔ)備。

第二個(gè)是從跨平臺(tái)來(lái)說(shuō),C和C++又不是很通用,雖然從第一天開(kāi)始,C很說(shuō)很牛叉,是跨平臺(tái)語(yǔ)言。

沒(méi)錯(cuò),作為基本語(yǔ)句,C和C++程序可以到大多數(shù)平臺(tái)的編譯器下開(kāi)發(fā),不過(guò),稍微涉及應(yīng)用一點(diǎn)的庫(kù),差異就很大,比如同樣的socket編程,Windows下和Linux下就有很大差異,什么線程庫(kù)啦,很多,差異都很大。不過(guò),日常工程開(kāi)發(fā),離了這堆庫(kù),程序員估計(jì)也不用做什么事了,因此,很多C和C++程序員自從被騙得上了賊船,沒(méi)辦法,就得面對(duì)無(wú)窮無(wú)盡的學(xué)習(xí),操作系統(tǒng),任務(wù)調(diào)度,內(nèi)存管理,資源管理,很多都得自己來(lái),去理解各個(gè)操作系統(tǒng)的差異性,然后自己寫(xiě)程序來(lái)適應(yīng)。

這么弄下來(lái),搞得C和C++的程序員,無(wú)形中對(duì)于很多語(yǔ)言之外的知識(shí),掌握得就多一點(diǎn)了。

3、C和C++不是一門(mén)應(yīng)用級(jí)的語(yǔ)言,其程序員的要求也不是應(yīng)用程序員的要求

應(yīng)該說(shuō),這已經(jīng)是很大的市場(chǎng)了,足以讓一個(gè)程序員吃一輩子的飯,因此,學(xué)會(huì)了這類語(yǔ)言以及應(yīng)用開(kāi)發(fā),一般已經(jīng)可以再80%~90%的開(kāi)發(fā)市場(chǎng)找到飯碗了。這種事情想多了,不用說(shuō)大家也知道,對(duì)自己的水平無(wú)形中,有一點(diǎn)點(diǎn)促進(jìn),因此,C和C++程序員往往看問(wèn)題會(huì)深入一點(diǎn),善于思考。

4、C和C++是高性能應(yīng)用的唯一選擇,這造成程序員必須學(xué)習(xí)優(yōu)化

我們知道,雖然很多語(yǔ)言都可以寫(xiě)游戲,不過(guò),作為大型游戲系統(tǒng),比如暗黑破壞神吧,還有很多網(wǎng)游,出于高性能圖形動(dòng)畫(huà)的需求,必須使用C和C++來(lái)實(shí)現(xiàn),才能保證效率。很多大型網(wǎng)站的后臺(tái)數(shù)據(jù)庫(kù),為了響應(yīng)高吞吐量,高并發(fā)量的客戶請(qǐng)求,也需要使用C和C++進(jìn)行優(yōu)化。這就造成了,C和C++程序員一玩就是大的,必須對(duì)優(yōu)化非常熟悉才行。我們知道,優(yōu)化,有兩個(gè)要求,一是對(duì)各類算法必須很熟悉,可以進(jìn)行算法比較,另外,也是需求分析的專家,可以根據(jù)需求特性,做量身定做的優(yōu)化。這就要求C和C++程序員,經(jīng)常陷入算法比對(duì)之類的任務(wù),而且,也不能僅僅做一個(gè)程序員,還必須時(shí)刻思考客戶需求,對(duì)需求做不斷的再分析,才能找出優(yōu)化之路。

我們知道,任何事情,做多了,就成熟練工了,自然也就來(lái)得快,C和C++程序員就是這個(gè)樣子??赡苓€有很多其他理由,不過(guò),我匆忙間,也就想出這幾條。不過(guò),大家可以看到,日久天長(zhǎng),C和C++程序員,不管是否自愿,但工作和學(xué)習(xí)中,確實(shí)比別語(yǔ)言的程序員在多想,多看,多學(xué),自然而然,就顯得很牛叉了。但大家注意到?jīng)]有,其實(shí)我上面分析的幾點(diǎn),與C和C++其實(shí)沒(méi)有太多的關(guān)系,任何一門(mén)語(yǔ)言的程序員,只要堅(jiān)持上面幾點(diǎn),不斷修煉自己,其實(shí)都可以達(dá)到牛叉的地步。

所謂功夫在詩(shī)外,又所謂窮人孩子早當(dāng)家,C和C++之所以顯得牛人多,并不是這兩門(mén)語(yǔ)言有多好,其實(shí)恰恰相反,是這兩門(mén)語(yǔ)言沒(méi)有給程序員提供太多幫助,而其應(yīng)用環(huán)境又太多太廣太深,逼的程序員在自我不斷的學(xué)習(xí),幾年,十幾年下來(lái),自然顯得比小日子過(guò)的還算不錯(cuò)的其他語(yǔ)言程序員,要深入一點(diǎn)。

我是一名從事了10年開(kāi)發(fā)的老程序員,最近我花了一些時(shí)間整理關(guān)于C語(yǔ)言、C++,自己有做的材料的整合,一個(gè)完整的學(xué)習(xí)C語(yǔ)言、C++的路線,學(xué)習(xí)材料和工具。對(duì)于想學(xué)習(xí)C/C++的小伙伴而言,學(xué)習(xí)的氛圍和志同道合的伙伴很重要!關(guān)注我的專欄,帶你進(jìn)入神秘的代碼世界!歡迎初學(xué)和進(jìn)階中的小伙伴。希望你也能憑自己的努力,成為下一個(gè)優(yōu)秀的程序員。工作需要、感興趣、為了入行、轉(zhuǎn)行需要學(xué)習(xí)C/C++的伙伴可以一起學(xué)習(xí)!”

關(guān)注我的專欄,帶你遨游代碼世界!C語(yǔ)言/C++進(jìn)階之路 - 專題 - 簡(jiǎn)書(shū)

下面這些是C/C++能做的 :

服務(wù)器開(kāi)發(fā)工程師、人工智能、云計(jì)算工程師、信息安全(黑客反黑客)、大數(shù)據(jù) 、數(shù)據(jù)平臺(tái)、嵌入式工程師、流媒體服務(wù)器、數(shù)據(jù)控解、圖像處理、音頻視頻開(kāi)發(fā)工程師、游戲服務(wù)器、分布式系統(tǒng)、游戲輔助等!

最后分享一張C/C++學(xué)習(xí)路線圖給愛(ài)學(xué)習(xí)的小伙伴們

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容