C語言要學(xué)嗎?
網(wǎng)友解答: 從系統(tǒng)學(xué)習(xí)的角度考慮學(xué)習(xí)C語言還是很有必要,畢竟懂得底層功能的實現(xiàn),對于系統(tǒng)的了解軟件框架還是有幫助?,F(xiàn)在很多主流的編程語言的底層大多是基于C語言構(gòu)建出來的,了解底層的實現(xiàn),
從系統(tǒng)學(xué)習(xí)的角度考慮學(xué)習(xí)C語言還是很有必要,畢竟懂得底層功能的實現(xiàn),對于系統(tǒng)的了解軟件框架還是有幫助。現(xiàn)在很多主流的編程語言的底層大多是基于C語言構(gòu)建出來的,了解底層的實現(xiàn),對于深刻了解底層代碼的實現(xiàn)有非常強烈的借鑒意義。
另外,從歷年的編程榜單也能看出來C有必要學(xué)習(xí)!
歷史排名(1988-2018)
C語言一直排名在第一、第二的位置,和Java一直不相上下!
編程語言“名人榜”( 2003-2017)
網(wǎng)友解答:知名開源軟件分享平臺GitHub公布了2017年最活躍語言排行榜,Javascript一騎絕塵繼續(xù)蟬聯(lián)冠軍。而C語言則排在第十位,較2016年度還下降了一位,甚至連嚴(yán)格意義上來講不能算編程語言的CSS也排在了它前面。乍一看面對許多新興時髦的編程語言,已經(jīng)45歲高齡的C語言顯得有點過時,但GitHub畢竟不能完全代表整個軟件產(chǎn)業(yè),以開源軟件圈的標(biāo)準(zhǔn)來衡量一門編程語言的流行度,還是存在一偏差的。
而更為專業(yè)和權(quán)威的SCI期刊《IEEE Spectrum》則把C語言排在了第一位,炙手可熱的Java, C#和Javascript語言則在第二陣列。所以,C語言并不是一門面臨淘汰的計算機語言,反而C語言絕對不會浪費你的時間和精力,它有許多的優(yōu)點值得你來學(xué)習(xí)和掌握,主要有五個方面:
一、能夠更深入的了解計算機
你可能已經(jīng)聽說C是一種“較低級的語言”,在編程行業(yè)里,所謂的“級別”是描述編程語言與計算機的本機指令集有多接近的一個描述。級別越低,與機器代碼的距離就越近。級別越高,語言就越抽象,與機器代碼的關(guān)系就越松散。
C語言相對其他更高級的語言,諸如Java和C#,它是一種抽象的、較低級的語言。你可以編寫代碼直接操控硬件設(shè)備,比如直接訪問內(nèi)存。而在更高級的語言如Java中,語言本身無法接觸硬件層面的操作,清理和釋放內(nèi)存一般只能通過垃圾收集器。
雖然這是C語言難于入門的原因之一,也是C程序員更傾向于計算機思維工作方式的原因。為了編寫更好的C語言代碼,程序員必須像計算機那樣思考,比如內(nèi)存管理、輸入輸出流、字節(jié)順序等等。 C語言能讓你更好的了解計算機到底是怎么工作的。
還有比C語言更低級的編程語言,例如匯編語言,但C語言在保留了低級語言的大部分功能的同時,還抽象得足以讓人讀懂代碼,而不是匯編語言那樣,對于初學(xué)者來說代碼看上去和天書沒有什么兩樣。
二、更容易掌握其它語言
許多資深程序員都會向初學(xué)者表明,一旦掌握了某種計算機語言,那在學(xué)習(xí)其他語言的時候會比較容易。但是這種容易程度是有區(qū)別的,例如掌握了Java語言,再來學(xué)習(xí)Pascal語言可能并沒有那么容易。但如果初學(xué)者是從C語言開始入門的,那么再學(xué)習(xí)其它語言會容易得多,因為許多現(xiàn)代語言的設(shè)計風(fēng)格,都是和C語言相近似的。另一方面,從低級一點的語言向高級一點的語言過渡是比較輕松的,但反之就困難很多。
換個角度,像C#語言是當(dāng)前最流行的編程語言之一,特別是在游戲開發(fā)領(lǐng)域(著名的Unity引擎使用C#語言),盡管C#是一門足夠抽象并簡單易用的語言,但許多初學(xué)者在學(xué)習(xí)C#的時候,還是經(jīng)常會覺得很困惑,因為他們往往并沒有很好的理解抽象編程的內(nèi)含,而通過學(xué)習(xí)C語言,則能讓新手們更好的掌握這一點。
C語言是現(xiàn)代編程語言的基礎(chǔ),當(dāng)你深入了解了C語言,你就會發(fā)現(xiàn)每一種現(xiàn)代編程語言都是在C語言基礎(chǔ)上的高級擴展。
三、寫出更優(yōu)秀的程序
相對于更高級的語言,C語言的低級特性也有它的缺點,那就是更復(fù)雜和乏味。
如果把編程比喻成制作煎餅果子的話,在高級語言的開發(fā)環(huán)境下,通常系統(tǒng)已經(jīng)為你準(zhǔn)備好了雞蛋、火腿腸、面餅和各種調(diào)料,你只需要簡單的把這些東西加工一下就能生產(chǎn)出味道不錯的美食了。但在C語言中,你不但要自己養(yǎng)母雞,收集雞蛋,而且還要準(zhǔn)備各種原材料來親手加工成火腿腸及調(diào)料,最后,你還要自己琢磨出制作煎餅果子的每一個步驟,才能得到你想要的東西。
一方面,能親手控制制作煎餅果子的每一個細(xì)節(jié)是很棒的體驗,你甚至可以發(fā)明一些截然不同的作法來烹飪一款全新的、獨一無二的煎餅果子,這些C語言都能滿足你。而高級語言通常只能制作出覺見的味道,盡管這個味道嘗起來可能比你親手制作的要好很多。如果你只是想以最快的速度制作出一款最常見煎餅果子,那么高級語言才是更好的選擇,這也是為什么會產(chǎn)生高級語言的原因之一。
同時,大多數(shù)現(xiàn)代的高級語言之所以被發(fā)明出來,往往就是為了解決另一種語言的缺點和不足,比如C++在C語言的基礎(chǔ)上增加了面向?qū)ο蟮奶匦?,Java又在C++的基礎(chǔ)上更簡潔易懂,而C#則在Java語言的基礎(chǔ)上加入了更多的現(xiàn)代元素。學(xué)習(xí)C語言,能讓你更好的了解高級語言為什么會采取某些特定的設(shè)計方式,并更好的利用高級語言提供的便利性。
四、非常規(guī)的應(yīng)用
大多數(shù)現(xiàn)代編程語言主要用于三件相同的事:業(yè)務(wù)應(yīng)用程序、Web和移動應(yīng)用程序以及數(shù)據(jù)分析。在這幾個領(lǐng)域,高級語言顯然更有用武之地,因為這些應(yīng)用通常并不需要接觸計算機的硬件細(xì)節(jié)。更快的開發(fā)速度和更高的可控性是高級語言的重要優(yōu)勢。
但是如果你想開發(fā)直接與硬件相關(guān)的軟件,就需要一種更低級語言。C語言則是這一領(lǐng)域最常用的語言。顯著的應(yīng)用包括操作系統(tǒng)、驅(qū)動程序、編譯器、嵌入式系統(tǒng)、游戲引擎等等。
例如,Linux內(nèi)核是用C語言和匯編編寫的。像Python、PHP、Perl和Ruby這樣的流行語言也是用C語言實現(xiàn)的。你知道甚至C語言編譯器本身也是用C編寫的嗎?由于許多嵌入式系統(tǒng)都有嚴(yán)格的資源限制,所以C語言常常是首選語言,因為它的開銷很小。
五、提高你的就業(yè)機會
有兩種方式可以保持在軟件開發(fā)行業(yè)的就業(yè)優(yōu)勢,一是精通某種最流行、最熱門的編程語言,二是在相對冷門的領(lǐng)域深耕。
高需求的職位涉及許多方面,比如Java、Python和Javascript都是炙手可熱的技能,但在一些歷史遺留系統(tǒng)方面,C語言程序員則更受歡迎,因為這些系統(tǒng)雖然古老,但往往應(yīng)用在非常重要的場合,比如銀行、電力系統(tǒng)等場合。面對C語言程序員日益減少的局面,在這些冷門行業(yè)里,雇主往往更愿意花重金聘請相關(guān)的技術(shù)人員。
大部分的培訓(xùn)機構(gòu)和在線培訓(xùn)網(wǎng)站都提供更多的高級語言訓(xùn)練課程,但有時候?qū)W習(xí)C語言反而能給你帶來更多的工作機會。