c語言現在還有必要學嗎,如果有,優勢是什麼?


我感覺C語言有必要學,但不是必須要學。

我們可能會看到有關這樣的疑問:「老師,為什麼我們的應用程序設計要學C語言而不是別的?C語言不是已經過時了嗎?如果現在要寫一個Windows程序,用VB或Dephi開發多快呀,用C行嗎?退一萬步,為什麼選擇C而不是C++呢?」

一、C語言在編程語言中的地位

隨著編程技術的發展,編程語言越來越多,多到甚至看花了眼,現在我們經常會看到各種培訓班培訓JAVA,VC,LINUX等等編程語言,卻看不到多少C語言的培訓班。

但是說起C語言,可以說是無人不知,無人不曉(當然,我只是說知道編程的人)。C語言誕生至今已經四十多年了,相比於現在火爆的JAVA,PYTHON等編程語言,C語言是不折不扣的老大哥。

我們可以查看一下歷年來的編程語言排行榜,C語言基本都是前五名。這說明什麼?說明C語言不僅資格老,而且功能強大。

我想今天我們這個問題的目的也正是這樣:C語言很好很強大,但是是否真的有必要學?

二、學習C語言的必要性?

C語言是計算機編程的基礎,不管你現在是一個高級編程師還是一個剛剛起步學習計算機語言的人,建議從C語言開始學習。如果不懂C語言,你想寫底層程序這聽起來十分的可笑,不懂C語言,想寫出優秀高效的程序簡直是天方夜譚。正所謂:學好C語言,走遍天下都不怕。

C語言是實用的程序設計工具,學好C語言對我們今後學習JAVA、C++、VB等可以打下良好的基礎,因為這些語言大部分都是由C語言擴充或衍生而來的。C可以用於開發比較底層的東西,比如驅動、通信協議之類,在Unix和Linux環境中也是不可或缺的,另外在嵌入式領域也大有作為。

三、C語言的優勢

1、學了C語言,也就理解了程序設計的思想,因為想真正學會程序設計就不可能不跟數據結構打交道,而初學者如果直接從VB或Java入手,基本上很難理解如何構造數組、鏈表、樹、圖等數據結構。也只有真正理解了數據結構,才有機會體驗程序設計的思想和演算法的精髓。

2、C語言語法結構很簡潔精妙,寫出的程序也很高效,很便於描述演算法,而我們常說的,演算法是程序設計的靈魂,只有掌握了設計的靈魂,才能做出更好的設計。

3、C語言能夠讓你深入系統底層,所有的操作系統windows,Unix,Linux,Mac,os/2,都使用C語言來完成的,如果不懂C語言,怎麼可能深入到這些操作系統當中去呢?

4、很多新型的語言都是衍生自C語言,C++,Java,C#...掌握了C語言,可以說你就掌握了很多門語言,經過簡單的學習,你就可以用這些新型的語言去開發了。


這是這個問題具備很強的兩面性,對於想切入某些領域比如嵌入式開發等這些C語言是必須要學的,不但是C語言要學習,數據結構,c++也要切入進去,所以對於C語言的學習,還是要選擇的方向,有些java的技術大牛本身也不懂c++,但java搞的風生水起。

從系統學習的角度考慮學習C語言還是很有必要,畢竟懂得底層功能的實現,對於系統的了解軟體框架還是有幫助。現在很多主流的編程語言的底層大多是基於C語言構建出來的,了解底層的實現,對於深刻了解底層代碼的實現有非常強烈的借鑒意義。

簡單總結下學習C語言的步驟:

1.選擇一本教材然後找到配對的視頻

2.制定學習計劃,計劃的推進以書本的大綱為基準

3.在推進計劃的過程中,如果遇到不懂找到 對應的視頻學習

4.把指針,數組,函數,結構體,遞歸,回調等基礎學好之後

5.嘗試做點C語言的測試小項目,比如貪食蛇,圖書管理系統等等

6.找一些開源的代碼,通過查找資料爭取讓自己看明白

7.嘗試修改開源代碼,並且能夠順暢的運行起來。

覺得有道理就點個贊


答案是肯定的。 估計題主問這個問題,應該是看到了現在好多的高級語言,像C#、JAVA等,都能做出好多漂亮的界面,而且也能實現好多的功能,而且只要在IDE上用滑鼠拖拉下某個組件就做成了一個UI界面,由此懷疑到還要C語言有何用吧?

可是題主知道嗎,這些高級語言再怎麼牛逼,一些底層的功能還是需要C語言來實現的。你看JAVA裡面有jini機制,用來調用native代碼的,為啥?因為有些功能JAVA做不到,只能依賴C來實現。

你再看Android,它也有個jni機制,也是要調用C代碼來實現某個功能。 比如做Android開發的時候,有個功能是需要對手機里存儲的視頻文件截圖。單純靠android的框架做不到這一點,只能通過native機制調用ffmepg來實現視頻的處理,而ffmepg是用什麼語言實現的?就是C語言!

所以不管高級語言如何發展,都需要用到C語言來幫忙的時候。 我在「C語言編程技術分享」里,也就是公眾號里,原創自己的C語言文章,題主有興趣可以一起交流!


我曾經是一名資深的編程人員,在初創公司有著豐富的工作經驗,歡迎關注我,和我一起分享職場,科技,互聯網創業等方面的知識。

其實要回答你這個問題也是挺簡單的,沒有必要說得很複雜。

C語言有沒有必要學,這個就要和你所從事的職業有很大的關聯了。

C語言主要用在底層軟體,操作系統,伺服器底層工具鏈的開發較多,適用於MCU的驅動,嵌入式系統的底層軟體,伺服器底層工具測試等領域。

學好C語言可以從事的行業有很多,比如:智能硬體領域,小家電領域,人工智慧領域,物聯網終端,機器人領域等等。這幾年由於智能硬體、物聯網、機器人領域的興起,C語言也是水漲船高。非常有發展前景。

C語言的優勢:

1、C語言是所有高級語言中最接近底層的語言,所以在一些要求實時和高校的應用場合就擁有天然的優勢;

2、很多更高級的計算機語言都是衍生於C語言,所以當你掌握了C語言之後,別的語言就很容易入門了;

我的結論是:學習一下C語言的基礎知識還是很有必要的。至於要不要精修,就看你所從事的職業了。

希望我的回答對你有所幫助。請記得關注我哦,並在下方留言,我們一起探討。我可以給你更多的參考意見。


如果是計算機專業,以後靠計算機吃飯,那必須學c,c語言是很接近底層的語言,而且和彙編直接的對應很直接,可以讓你對於計算機程序運行的原理的理解有很大幫助。

函數調用時,參數在調用棧中是怎麼排布的,返回地址藏在了哪裡。棧和堆有啥區別。編譯鏈接都幹了啥。靜態鏈接和動態鏈接有啥區別。elf或者pe結構裡面各個段對應代碼裡面什麼內容。緩衝區溢出怎麼可以被準確利用。等等一些程序運行的基礎知識,通過c語言都可以非常直接的對應上去。用其他高級語言編譯器幫你做的事情太多了,語法糖也太多了,這些不利於你理解最純粹的程序運行原理。

但是c語言語法表達能力太弱了,適用範圍也是一些比較貼近硬體的場景,或者是資源要求比較嚴格的場景等。國內用c比較多的還是一些傳統IT廠商,設備廠,數通廠等等。互聯網用的還是少,學c不一定會找c語言的工作,只是幫助你理解計算機。

而且c語言學起來回饋很低,一開始會有一種啥也寫不了的感覺,其實這很正常,這就是語言表達能力弱的一個特點。以後可以根據自己想要從事方向來更換語言,或者繼續深入理解c。(不過c語言的語法就那點東西,很簡單的,難的是大型c語言項目背後的演算法,操作系統,調度,內存管理相關的內容)。

如何你是愛好者,而且想做一些比較上層的應用,那沒啥必要學c了。可能挫敗感會讓你放棄計算機,畢竟學c很枯燥,你一開始很難用c寫出來有點意思的程序,只能寫那種連玩具都算不上的東西。可以從比較感興趣的方向來確定需要學什麼語言。


建議初學者學編程要先學C語言,再學其他語言。這樣在學其他語言的時候,就會覺得比較容易。而如果先學其他語言,再來學C語言就會覺得很難,甚至根本學不會。這有點像學開車,手動擋踩油門和剎車,同時需要換擋和踩離合器,要手腳協調配合。但自動擋不用,只需要踩油門和剎車,非常傻瓜。如果你先學會開手動擋,那麼遇到自動擋的車,你只需幾分鐘就學會了,而且你會驚奇:怎麼這麼簡單?!但如果你先學會了自動擋,而且習慣了開自動擋,那麼恭喜你,估計你這輩子都很難再學會手動擋了!因為你已經習慣了自動擋的傻瓜式操作,你只會踩油門和踩剎車,你不明白啟動和加速為什麼要換檔,也不習慣在換擋和踩剎車的同時要踩離合,這樣手動擋的車很容易熄火,而你會崩潰。

不同的語言有不同的優勢。C語言的優勢是速度快,效率高,同時,因為C語言和底層關係密切,能夠更深入理解計算機的工作方式,但指針、結構體和共同體,位運算,內存分配等概念學習難度也比較大。高級語言如Perl,java/PHP,C#, VB,R, Python等往往和底層脫離,只面向邏輯思維和解決問題。和C語言相比,很多東西(如內存分配,數組、字元串變數定義)都是傻瓜式的。

實際工作中,要編寫程序,往往不能只用一種語言,而是根據不同的需求,選擇不同的語言,以便達到事半功倍的效果。比如做個簡單的窗體應用,選擇C#;做演算法和統計分析、作圖,就用matlab/R/Python語言,寫web網路應用,就用SSH/java/PHP,要做office插件,還得用VB,而不要用c語言,累死你也寫不出來。但如果設計底層的控制,這些高級語言往往不支持,需要用c語言。


我想問題的關鍵不在於是否要學習C語言,而是以C語言為代表的結構化語言在現今友好GUI下編程工具眾多的環境中的地位問題。

俗話說,要知其然更要知其所以然,程序員們欲知其所以然自然牽扯到幾種「過時」的計算機語言,這幾種語言雖已「過時」,但學習他們可以程序員們更好的了解計算機基礎知識。

一是彙編,這是基礎,程序員學習彙編的目的是了解機器內部堆,棧結構及移位運算。

二是FORTRAN,標準的科學計算用語言,學習FORTRAN可以幫助你更好的學習數值分析和微積分。

三是C和PASCAL(PASCAL已消亡數十年),這是結構化語言的代表,學習它可幫助你更好的理解數據結構,和程序結構。當然,目前C語言還在多個領域發揮著舉足輕重的作用。

四是COBOL和DBase,這是關係型資料庫的基礎。

當然還有HTML。

實際上學與不學C都不會對目前環境下「完成編程任務」造成大的影響,但或多或少的影響著你的軟體開發思路和編程質量。


現在還問C要不要學。是根本搞錯了基本概念。把C語言當軟體編程語言。其實。C語言和軟體開發關係不大。C語言是搞電子用的。再強調一次。C語言是搞電子用的。

主要用在單片機。嵌入式這些都應用在各種儀器工業民用的電子電氣設備上。當然。伺服器也會用一點C語言。但從業人員和搞電子的相比。零頭不到。可以說。學好C語言。就有機會進入電子開發的行業。而且是錢多事少的工作性質。因為程序都有自身的設計模式。搞熟了。就是那回事。


這要看你從事什麼行業。不同的行業不同的應用環境催生不同的要求。

web伺服器不考慮負載可以Python,有Django。考慮負載Java。底層有c,大型伺服器有c++。ai有Python。glue有perl。

我有一個項目,dns伺服器,電信級的,用perl做glue。一頭開net伺服器接受配置命令,一頭連接MySQL本地存配置,一頭用netlink配置內核模塊。


謝邀。主要看你未來從事什麼工作?能問這個問題,顯然你不是計算機專業的學生。如果僅僅為了考級,完全沒必要學C語言,因為你未來用上它的可能性不大,反而是office高級應用更實際一些。如果以後有從事計算機、工業自動控制等方面工作的可能,那就必須學。

語言


推薦閱讀:

又丑又土的防水服,竟靠征服王室上位,火了122年,比Burberry更得寵!
Snapchat創始人人Evan Spiegel有什麼個人魅力?
蘇寧易購怎麼以舊換新?
美版蘋果有鎖與無鎖的的區別在哪裡?可能好多人還不是很清楚

TAG:C語言 | 編程語言 | 教育 | 科技 |