學C語言好,還是學C++好呢?這兩個專業在哪些領域用得最多?

每日一發小視頻


從事嵌入式開發十幾年,基本上圍繞著這兩種編程語言展開,都可以直接操作底層的編程語言,用的越熟練越是感覺工具屬性越強。雖然兩種編程語言分屬於不同的編程思想,用的時間長了覺得差異也不是很大,現在就個人的從業經歷,講述下兩種編程語言的差異和共同之處。



現在已經很多人覺得c語言過時了,因為從招聘的需求看要求JAVA的明顯居多,Python現在基本上雷聲大雨點小還成不了氣候,現在很多主流的客戶端框架還是C語言和C++的天下,畢竟性能是誰也繞不過去的事情,從就業的絕對數量上兩種的數量並不低,但是入門的門檻提升了,簡單學點很難找到工作,而且一旦找到合適的工作,工資水平並不低,所以很多人覺得這兩種編程語言過時了主要是初學者喊出來的,初學的人總想找個好學編程語言,由於入門難度高加上相對就業機會少,少並不是代表著不重要,但凡有點編程經驗的人都會覺得這兩種編程語言極其重要。


這兩種編程語言有什麼區別,相對來講C語言簡單一點,C語言屬於面向過程的語言,非常符合編程的思想,基本上功能可以直線化陳述,C語言語法細節不是很多但組合非常靈活,曾經在剛學C語言的時候學了一個月就膨脹了覺得什麼C語言的代碼都能搞定了,結果去圖書館借了一本Linux內核的書籍去學習看了100多頁就徹底放棄了,理論和實踐差異太大了,所以不要覺得C語言好學但在實際使用過程中,不真實做過項目永遠不要輕易下結論是不是真的掌握了。

C++屬於比較難得編程語言,也是個人覺得最難得編程語言,主要是語法細節繁多而且還在不停的更新,所以很多人在學習之初覺得能夠編譯通過就是一件非常幸福的事情,這門編程語言的設計理念是儘量在編譯環節排除語法細節錯誤,所以很多人覺得C語言編譯就會簡單許多,帶著警告照樣可以編譯通過,程序也可以繼續執行。這門編程屬於面向對象理念,什麼事情都離不開對象和類,核心思想是多態,繼承,封裝,看著很簡單真要在實踐中掌握明白,不經過項目的洗禮基本不可能的事情。


如果非要說出這兩種編程語言的差異,初學者可以考慮從C語言入手這樣入門簡單些,然後再去切入C++的學習,稍微有點編程經驗的程序員都會淡化編程語言本身,編程的本質不是掌握了多少編程語言而是編程思想是不是掌握徹底了,到了這種層面也不會在乎什麼編程語言了,學習任何東西都要掌握問題的本質,不要只看表面的現象,只要自己認準的事情全力以赴的做就可以了。

不要在選擇上花費太多的時間,選擇了就全力去做,中間不要隨便切換編程語言,這山看著那山高註定什麼也學不會。

希望能幫到你。


大學生編程指南


作為一名一線研發工程師,先說說自己的看法,首先來說說答案,如果打算以後從事純C開發的工作,那麼顯然沒有必要去學C++了;相反,如果準備從事C++相關的工作,那麼C語言是必須花費時間去學習的,不懂C,去維護別人的代碼,或者使用一些第三方開源庫遇到問題你還是很頭疼的。

再來說下二者的領域劃分吧:

目前,C++應用較多的領域主要有遊戲、服務器、桌面應用、網絡應用程序、圖像處理、安全行業等。

C語言呢?主要有LTE通信領域、操作系統、嵌入式平臺等。

下圖是通過拉勾網搜索的C和C++的全國招聘需求,當然可能不是很準確,但是我想可以在一定程度上說明問題。

最後提到前景,我想現在的程序員,只懂一門語言的估計是很少的了,語言,永遠只是你解決問題的工具,最快最合適的完成任務的才是最好的。所以,給出的建議是,如果你是在校學生,建議C/C++一起學習把,畢竟在學校還是有大把大把的時間。如果你已步入社會,那麼建議直接JAVA把,相比C/C++這兩個更有市場,謝謝。

如有不同意見,歡迎關注留言,等你評論,等你「一鳴驚人」!

一個程序員的奮鬥史


首先要明確一點,C和C++是不同的東西,很多回答都認為它們是一體的,是嚴重誤導初學者。它們遵循不同的標準體系,運用領域不同,編程思想不同,僅僅是部分語法相似而已。

一些回答說C++比C更高端,更有前途的,那更加是是胡說八道,誤人子弟了,這兩種語言應用領域不同,不存在誰更高端,誰更有前途的說法,要講高端,前途,開發效率,一些新興的語言更合適。

C語言適用於嵌入式,操作系統,硬件驅動,高性能網絡服務器(nginx,Redis等)等軟件的編寫,相對C++而言更加偏向底層,適用於變化不大,穩定性要求高的場合。C語言語法簡單,入門相對容易,學好C語言有助於對計算機體系的理解。C語言本身缺乏類似C++的STL的標準庫,每個項目,不同數據類型要單獨實現一套數據結構和算法,這方面不如C++靈活,高效。但一些人說C語言不適合開發大型軟件,開發效率不如C++,這些都是嚴重誤導新人的,C語言在積累了通用數據結構和算法或直接採用優秀的第三方庫之後,開發效率和C++差別不大。像操作系統,數據庫這種大型基礎軟件用C語言開發的不在少數,C語言怎麼就不適合大型軟件了?影響大型軟件開發主要是管理,而非語言,設計不合理的C++代碼的腐敗速度會比C語言慢麼?

C++適合遊戲,界面,數據庫的編寫,偏向應用層。C++是程序員兩級分化最嚴重的語言,也是從入門到放棄人數最多的語言。優秀的C++程序員可以寫出很漂亮的代碼,普通的很容易寫出狗屎,濫用語言特性,尤其那些認為C語言和C++差不多的人,C++標準更新得比C語言快很多,引入的新特性也很多,有C語言基礎對學C++唯一的好處就是會一些非常基礎的語法,其他高級語言特性,設計模式,標準庫,統統要從頭學起。C語言有師傅帶,三年成材,C++有師傅帶,五年未必成得了材。自學?兩種語言都必須自己有天賦和悟性才行,兩種語言都比較難。都是屬於學習難,做東西更難,精通難上加難的典型。

人生苦短,C++我是不推薦的(除非工作不得不用),C語言可以學習下,但別指望短時間內做出有用的東西,語言瞭解的語法之後,還要掌握編程環境,熟悉這種語言編程思想,大量閱讀優秀的源代碼。

建議瞭解下新興的語言,golang,rust,swift等,有餘力就多學幾門,挑選下適合自己語言和方向。


領地傳奇


當然是學習c++了。vc++提供了編程的框架及豐富的美class,其中的MFC是微軟的精華所在,vc的資料詳細地系統地禪述了構建大型程序的基本理論。

MFC首先應用於多進程,多線程及定時器,回調函數的廣泛使用。這中間用到臨界區等數據共享判斷。

MFC提供dll鏈接庫,它使得開發大型軟件成為可能。比如office軟件開發,微軟動用了幾幹人在開發,請問,用c能做嗎?能把龐大的任務分成無數個dll進行開發,再動態地鏈接在一起嗎?

有人說vc++不能開發底層,簡直是胡說。windows無數的設備處理都是vc++開發的,你說他不行?無知到了可怕的程度。

MFC提供豐富的多

對於圖像,文件,網絡,遠程控制等處理,更是其強項。

c++的MFC是最歷害的底層的,如網絡通訊,工業控制的數據傳輸,CAN,物理地址的轉換等,用起來都非常好。

c編程效率太低了,適合於不動腦筋的低層人士。

MSDN有著幾十G的文檔資料,是比爾.蓋茨先生對人類最大的貢獻,是我們今天用到的微軟app的源泉。

c語言在2000年之前很流行,我本人當時也用c做了大量的應用程序。現在還在用,就太幼稚及無知了。


beijingwanger


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

C++語言是基於C語言發展而來,C語言的語法C++基本通用,所以不要猶豫,先把C語言學好,這是必修課,C語言學精以後,C++自然就手到擒來了。

看看他們的排名,其實C和C++是不分家的。

至於學好C語言以後,你想留在C語言領域繼續深造還是繼續往C++領域去深造,這就要看你從事的行業了。

我來談談這兩個語言分別在哪個場景使用的較多:

一、C語言

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

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

二、C++語言

C++是一門面向對象的語言,要比C語言更高端,定位是要比C語言更高性能的領域。C++語言比較適用於音頻處理,視頻處理,遊戲引擎,計算機桌面軟件等大型場合。可以說C++適用的領域是相當廣泛的,各行各業都能找到它的身影。可是由於近些年JAVA,PYTHON等語言的興起,C++語言的使用已經沒有那麼大的市場了,JAVA,PYTHON等語言簡單易使用,受到大家的廣泛歡迎。

所以,你要選擇什麼語言進行精修,和你從事的行業有著莫大的關係。筆者只提供部分思路供你參考,具體選擇還要你自己去發現。


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


社會關注聚焦


c語言和c++這兩種語言雖說看著差不多,但實際上應用領域還是差別比較大的,也不能簡單的說哪個更好。

編程語言有很多種,目的就是要讓機器或者是設備“理解”我們的意圖,執行相應的動作。最底層的是機器語言,就是二進制編碼,機器只能讀懂二進制編碼。在上一層就是彙編語言,c語言等,屬於低級語言。再上一層就是c,c++,c#,java等,都屬於高級語言。低級語言是可以轉成二進制編碼的,而高級語言只能通過低級語言才能變成二進制編碼。高級語言編寫的都是應用程序,而低級語言編寫的是底層程序。

這樣對比後,我們瞭解到c語言既可以編應用程序,也可以編寫底層程序。而c++只能編寫應用程序。並且c語言編寫應用程序明顯不如c++方便,所以基本上沒有人用c語言編寫應用程序。

目前c語言主要應用於嵌入式開發,各種單片機的底層程序都是c語言編寫的,並且c語言的跨平臺非常好用,兼容性很好。學好c語言之後,主流單片機的編程都不成問題。並且verliog和c語言相似度很高,之後學習會變的很輕鬆,fpga開發會容易很多。

c++語言主要編寫應用程序,上位機軟件。和c語言的側重領域不同。

所以這兩種語言不能說哪個更好,只能說哪個更適合你。如果是做嵌入式底層開發,那就必須是c語言了。如果是做程序設計,可以選擇c++學習。如果說還沒有方向,那就先學習c語言。相對於c++,c語言更容易一些,並且目前有很多語言和c語言的相似度很高,之後學習其他語言也比較容易。

學習c語言推薦這本書


MY黃土高坡


可以從另一個角度思考這個問題,一個人編程幾年一定會接觸不止一門語言,而這些語言或多或少都需要調用本地方法,即c/c++。而java、c#或其他腳本語言的本地調用,根據編譯器的不同,大多數只支持c風格調用,當然並不是說不能調用c++的對象方法(比如java的jni),而是代價較高,即便同是c++編寫的動態鏈接庫(dll)相互間調用,也不是很方便,並且存在嚴重的跨平臺問題(只要是涉及到調用本地c++對象方法,封裝性和性能兩者不可兼得),因此本地c調用才是最優解。因此我建議不用糾結是c還是c++,因為無論是哪一個,c都是不可能繞過去的,必須要掌握。另外,既然你已經決定要學c/c++,那麼以後不可避免要涉及到編譯器的相關知識,而只有掌握c,你才可能對其有更深入的理解(而面向對象的宗旨是封裝和抽象,即讓你更少的瞭解實現細節),而只有瞭解c,你才知道調用本地c++對象方法是多麼複雜的一件事,這也從一個側面說明了這兩種語言有多大的不同。追求對c的兼容絕對是c++發展歷史上最沉重的包袱


prompthu


C++是有C發展而來,由於C語言比較適合小規模程序運行,但是當問題比較複雜、程序的規模比較大的時候,C語言就會展現出它的侷限性,於是就有C++的產生可以處理大規模的程序。

第一個問題他們使用頻率,C更多是底層開發,核心驅動,嵌入式+單片機的開發等領域開發,而C++是由C語言發展得來,C語言能開發C++都可以,而且比C功能更多,我們常見C++開發系統軟件開發,大型遊戲開發等待。

第二個問題他們發展前景,本人覺得C++更有發展前景,當然這不是絕對得,畢竟C是基礎,C++是發展得來。


Software科技言


我以前是c++工程師,做的是圖像算法。現在是C工程師,做的是服務器。如果你想做那種應用,請用cpp,如果是在性能要求極高,請學c。cpp很尷尬,為啥呢?因為高不成低不就,所以只能在那種客戶端應用上搞搞。就拿算法來說,如果真的對性能要求極高,人家直接用c去實現,而不是用cpp


星空147480491


建議先學C再學C++,事半功倍。

C主要用在底層開發上。LINUX的開源項目幾乎全是用C開發的,像APACHE PHP,學了C就可以為他們寫擴展模塊,這也是底層開發經常要做的事。內核開發和驅動開發也是用C。另外還有嵌入式開發。

C++ 通常用來做UI開發, 像VC、QT。

C的應用範圍遠遠超過C++,特別是物聯網興起之後對C程序員的需求會越來越多。

學C最好跟硬件相結合,否則很枯燥,學不深。


分享到:


相關文章: