C語言要學嗎?


知名開源軟體分享平台GitHub公布了2017年最活躍語言排行榜,Javascript一騎絕塵繼續蟬聯冠軍。而C語言則排在第十位,較2016年度還下降了一位,甚至連嚴格意義上來講不能算編程語言的CSS也排在了它前面。乍一看面對許多新興時髦的編程語言,已經45歲高齡的C語言顯得有點過時,但GitHub畢竟不能完全代表整個軟體產業,以開源軟體圈的標準來衡量一門編程語言的流行度,還是存在一偏差的。

而更為專業和權威的SCI期刊《IEEE Spectrum》則把C語言排在了第一位,炙手可熱的Java, C#和Javascript語言則在第二陣列。所以,C語言並不是一門面臨淘汰的計算機語言,反而C語言絕對不會浪費你的時間和精力,它有許多的優點值得你來學習和掌握,主要有五個方面:

一、能夠更深入的了解計算機

你可能已經聽說C是一種「較低級的語言」,在編程行業里,所謂的「級別」是描述編程語言與計算機的本機指令集有多接近的一個描述。級別越低,與機器代碼的距離就越近。級別越高,語言就越抽象,與機器代碼的關係就越鬆散。

C語言相對其他更高級的語言,諸如Java和C#,它是一種抽象的、較低級的語言。你可以編寫代碼直接操控硬體設備,比如直接訪問內存。而在更高級的語言如Java中,語言本身無法接觸硬體層面的操作,清理和釋放內存一般只能通過垃圾收集器。

雖然這是C語言難於入門的原因之一,也是C程序員更傾向於計算機思維工作方式的原因。為了編寫更好的C語言代碼,程序員必須像計算機那樣思考,比如內存管理、輸入輸出流、位元組順序等等。 C語言能讓你更好的了解計算機到底是怎麼工作的。

還有比C語言更低級的編程語言,例如彙編語言,但C語言在保留了低級語言的大部分功能的同時,還抽象得足以讓人讀懂代碼,而不是彙編語言那樣,對於初學者來說代碼看上去和天書沒有什麼兩樣。


二、更容易掌握其它語言

許多資深程序員都會向初學者表明,一旦掌握了某種計算機語言,那在學習其他語言的時候會比較容易。但是這種容易程度是有區別的,例如掌握了Java語言,再來學習Pascal語言可能並沒有那麼容易。但如果初學者是從C語言開始入門的,那麼再學習其它語言會容易得多,因為許多現代語言的設計風格,都是和C語言相近似的。另一方面,從低級一點的語言向高級一點的語言過渡是比較輕鬆的,但反之就困難很多。

換個角度,像C#語言是當前最流行的編程語言之一,特別是在遊戲開發領域(著名的Unity引擎使用C#語言),儘管C#是一門足夠抽象並簡單易用的語言,但許多初學者在學習C#的時候,還是經常會覺得很困惑,因為他們往往並沒有很好的理解抽象編程的內含,而通過學習C語言,則能讓新手們更好的掌握這一點。

C語言是現代編程語言的基礎,當你深入了解了C語言,你就會發現每一種現代編程語言都是在C語言基礎上的高級擴展。

三、寫出更優秀的程序

相對於更高級的語言,C語言的低級特性也有它的缺點,那就是更複雜和乏味。

如果把編程比喻成製作煎餅果子的話,在高級語言的開發環境下,通常系統已經為你準備好了雞蛋、火腿腸、麵餅和各種調料,你只需要簡單的把這些東西加工一下就能生產出味道不錯的美食了。但在C語言中,你不但要自己養母雞,收集雞蛋,而且還要準備各種原材料來親手加工成火腿腸及調料,最後,你還要自己琢磨出製作煎餅果子的每一個步驟,才能得到你想要的東西。

一方面,能親手控制製作煎餅果子的每一個細節是很棒的體驗,你甚至可以發明一些截然不同的作法來烹飪一款全新的、獨一無二的煎餅果子,這些C語言都能滿足你。而高級語言通常只能製作出覺見的味道,儘管這個味道嘗起來可能比你親手製作的要好很多。如果你只是想以最快的速度製作出一款最常見煎餅果子,那麼高級語言才是更好的選擇,這也是為什麼會產生高級語言的原因之一。

同時,大多數現代的高級語言之所以被發明出來,往往就是為了解決另一種語言的缺點和不足,比如C++在C語言的基礎上增加了面向對象的特性,Java又在C++的基礎上更簡潔易懂,而C#則在Java語言的基礎上加入了更多的現代元素。學習C語言,能讓你更好的了解高級語言為什麼會採取某些特定的設計方式,並更好的利用高級語言提供的便利性。

四、非常規的應用

大多數現代編程語言主要用於三件相同的事:業務應用程序、Web和移動應用程序以及數據分析。在這幾個領域,高級語言顯然更有用武之地,因為這些應用通常並不需要接觸計算機的硬體細節。更快的開發速度和更高的可控性是高級語言的重要優勢。

但是如果你想開發直接與硬體相關的軟體,就需要一種更低級語言。C語言則是這一領域最常用的語言。顯著的應用包括操作系統、驅動程序、編譯器、嵌入式系統、遊戲引擎等等。

例如,Linux內核是用C語言和彙編編寫的。像Python、PHP、Perl和Ruby這樣的流行語言也是用C語言實現的。你知道甚至C語言編譯器本身也是用C編寫的嗎?由於許多嵌入式系統都有嚴格的資源限制,所以C語言常常是首選語言,因為它的開銷很小。

五、提高你的就業機會

有兩種方式可以保持在軟體開發行業的就業優勢,一是精通某種最流行、最熱門的編程語言,二是在相對冷門的領域深耕。

高需求的職位涉及許多方面,比如Java、Python和Javascript都是炙手可熱的技能,但在一些歷史遺留系統方面,C語言程序員則更受歡迎,因為這些系統雖然古老,但往往應用在非常重要的場合,比如銀行、電力系統等場合。面對C語言程序員日益減少的局面,在這些冷門行業里,僱主往往更願意花重金聘請相關的技術人員。

大部分的培訓機構和在線培訓網站都提供更多的高級語言訓練課程,但有時候學習C語言反而能給你帶來更多的工作機會。


瀉藥。

首先肯定要說:C語言必須要學習。

學好C語言,走遍天下都不怕!

為什麼要學

舉個栗子:linux系統就是用C語言來開發的,linux系統大家都是用過吧,如果沒有用過,那麼windows大家都用吧,內核也是用C寫的,就像我們使用的android系統手機,android的內核就是linux,所以也是用C開發的。

為啥這些大型系統和項目都用C語言開發呢?一句話「效率高」。C語言的運行效率是出了名的。

所以如何一個系統對性能和效率要求非常高,那麼底層可能需要使用C語言來開發了。

如何學習

下面開始簡單說說如何學習C語言。

一般學校中的專業都會安排C語言,在學校中學習時安排好自己的學習時間,以及學習計劃。可以跟著課程走,將基本的數據類型,流程式控制制語句,函數,數組,指針,以及常見的數據結構搞懂。

接著要動手多做項目了。項目部在乎大小,剛開始做項目多動手。

多看一些開源的項目,多看看github上的開源項目:


如何堅持

多做一些東西,多分享,多寫博客進行分享,然後會得到別人的鼓勵和支持,自己會更加充滿動力。

希望能幫到你。


C語言可以作為學習計算機程序設計語言的入門語言,是編寫操作系統的首選語言,與計算機硬體打交道時靈巧且高效,可以更好的了解計算機;

C語言具有現代高級程序設計語言的基本語法特徵,常用的面向對象程序設計語言例如C++和Java,其基本語法源於C語言,許多C語言編寫的軟體系統需要維護,用於要求程序高速運行領域的編寫,例如單片機程序、嵌入式系統軟體和通信程序等;

所以說,每個人都應該學習C語言,學習編程,學會思考;

以前學習 C語言的時候,看的是 「 如鵬網 」的視頻教程——《C語言也能幹大事》系列,挺不錯的,通過開發超級瑪麗,飛機大戰,吃金幣等經典小遊戲,以及通過用C語言來開發網站,無需硬體開發校園一卡通的系統來講解C語言的知識點,沒想到C語言還可以這麼學,做出來的項目挺有成就感的,特別的炫酷;

具體的可以到 如鵬網 官網上去了解一下,口碑不錯,基本上都是慕名而去的;


首先感謝邀請。我認為c語言是所有計算機專業人士必學的一門語言。不但要學,而且要學透。因為c語言是一門基礎語言,它不但可以用來開發系統,嵌入式方向對c要求較高。而且語言是相通的,把c語言學好以後再去學習其他語言就比較容易了。以後不管幹什麼,做網頁還是做系統還是做app或者其它的,都需要用到c寫基礎。所以說,如果作為計算機專業學生,不但要學c語言,而且更應該把c語言學透。謝謝。


不是必須的。除非你寫驅動系統或是類似的系統核心代碼,或者就是像Nginx似的非常注重性能的應用程序。

如今絕大部分程序員都寫web應用吧,肯定是不用c語言了。極其罕見的情況下用c寫JNI或是V8擴展而已。也就理論上存在這種可能性。


你如果有時間,我覺得c/c++應當作為第二語言,第一個回答很真實,現在許多軟體採用c/c++,足見其強悍,不僅在於性能,還有他對硬體的管理和操縱,你可以認為它是最接近硬體的語言(除了彙編),c/c++是許多軟體基石,為你以後研究其他優秀產品提供基礎,另外,想做硬體開發也得用他,未來物聯網智能家居相信c/c++會佔據很重要一塊,前途還是不錯的


c語言對於初學者不是必學的,我也不建議它做入門語言,除非你做純硬體,但對於熟練使用了一門開發語言的同學,如果還要學一門有價值的技術,那c語言首當其衝。深入學習一下c語言讓你對底層程序的運行有更深刻的理解。


一定要學,但不建議作為入門語言。目前流行的如python/go這些,都與c有很深的關係,go甚至可以和c混寫,是提高性能的必須手段。入門級語言我更推薦java或c#,打好基礎後回頭學腳本,如python,elixir甚至typescript 再回頭啃c,曲線為中 易 難。


謝邀!

首先這個問題我覺得涉及很多方面,

1.你是否是計算機專業的,你對編程是否感興趣

2.你學這門語言抱著什麼心態去的

如果你是為了靠它吃飯,那你必需學,或者說你也可以學其它語言,比如現在比較火的python,或者火了挺久的php,這些都是可以的.

學編程不分語言,就看你怎麼用它了!


C語言和其它計算機語言有很大的區別,這主要是計算機科學的大多基礎教材,如數據結構,操作系統,大多數演算法的描述,都是C語言或類C語言描述的,這也導致很多面試或研究生複試題目都是C語言描述的。所以,C語言做開發或許路線很窄,但學業深造對個人意義重大。


推薦閱讀:

科學探秘,為何人們不敢輕易招惹黃鼠狼?
網上的正義哥們除暴安良是真事還是演的?
南充有什麼歷史人物?
南昌大學女生舉報稱遭副院長性侵達七月之久,如何看待此事?
廣東省彩禮真的很低嗎?

TAG:C語言 | 編程語言 | 社會 | 科技 | 計算機行業 |