為什麼這麼多人學不會C語言呢?

weixin_34236497發表於2018-01-30

C語言是程式導向的,而C++是物件導向的

C和C++的區別:

C是一個結構化語言,它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

C與C++的最大區別:在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是演算法的概念。那麼是不是C就不重要了,錯!演算法是程式設計的基礎,好的設計如果沒有好的演算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。

9850446-b52d35adc09d64e2

這些是C/C++能做的

伺服器開發工程師、人工智慧、雲端計算工程師、資訊保安(黑客反黑客)、大資料 、資料平臺、嵌入式工程師、流媒體伺服器、資料控解、影像處理、音訊視訊開發工程師、遊戲伺服器、分散式系統、遊戲輔助等

9850446-bb7ded5388698f21

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多幹貨和技術資料分享!

很多人覺得用C語言作為入門語言覺得太難了,裡面還有指標,回撥,遞迴之類的操作太難了。為什麼這麼多人覺得C語言難?筆者根據從業十幾年的經驗嘗試著分析一下。

9850446-81309fb536090dfb

第一 C語言是距離硬體非常近的語言,特別是和記憶體關聯很近,主要還是指標的存在

很多人說到指標就頭大,指標就是一把雙刃劍,能夠很好的解決邏輯問題,但指標一旦出現問題,找個問題都很費勁,底層語言直接崩潰對應的查詢工具還不多,很多還得靠程式碼解決,不像java用eclipse裝一些外掛,記憶體問題效能問題直接能看的比較清晰,這就是高階語言比較有優勢的地方,參與的人多遇到問題,去解決的人也多,對應的工具也多。解決記憶體和效能的問題,就難倒了很多意志不是堅定的人,很多人選擇換語言學習。

而且與指標相關聯的很多東西,在開始學的時候都不是很好理解,回撥函式,指標陣列,這些組合概念基本上沒幾下就把初學者給搞暈了,這也是考驗耐性的時候,堅持去理解去學習,也就慢慢挺過去了,其實這些都是基本功能的組合,比如回撥函式應用的場景,函式的執行時機已經確定,函式內容實現要根據具體的場景來定,這種在windows程式設計時候在傳遞控制程式碼的時候用的多。要理解回撥還得知道函式指標是個啥概念,這種對初學者來說簡直就是天書。在學習的時候記住一點先去理解了再去考慮怎麼練習,實踐。不要上來逮著書本上的練習題目呼呼的去敲程式碼,要理解個差不多再去動手也不遲。

指標直接的導向就是容易導致記憶體洩漏,而且如果不是大塊的洩漏解決起來都特別費勁,可能需要執行很長一段時間才能查詢到,指標的釋放位置自己要記錄好了,忘記了查詢起來相當的麻煩。

9850446-38a85e33fd8ce239

第二 C語言工具比較少,很多功能的實現都需要自己實現

很多高階語言幾句話的事情,在C語言去實現需要折騰很長時間,這是底層語言不太好的地方,這也就決定了C語言只適合在效能要求比較高的地方去使用,應用方面就不怎麼適合了。目前來看在嵌入式領域用的還是比較多,特別是在核心驅動,或者作業系統底層實現方面應用的非常廣泛,而且這類對於C語言的要求比較高,不是簡單寫個普通的模組就能搞定的事情。

查詢個效能問題,基本上靠列印定位大的大致方向,採用程式碼排除的辦法去解決,初學者最初可能都沒有這種感受,隨著做一些實際的專案也就慢慢有這種體會了。

9850446-367863947a5358d0

第三 C語言 由於是程式導向的語言,原則上函式和模組之間可以胡亂呼叫,如果框架思想不強,寫出來的程式碼就是一鍋粥,非常難維護

很多初學者用C語言實現一個功能,基本上都放在一個檔案或者函式裡面,亂哄哄的程式碼搞在一起,如果再用指標實現功能,程式碼簡直沒法看,當然這是初學者的通病。

程式導向的程式碼可以寫的非常亂也能正常的去執行,維護起來可就麻煩了,C++在這方面就做了很多的提升和限制,在編譯的時候加大了難度,然後在實際執行過程中就顯得遊刃有餘。

基於以上三點導致很多初學者倒在入門的路上,本質上堅持的力度不夠,誰都不可能在開始學的時候都弄得非常清楚,畢竟天才只有少數。學完之後回來總結C語言也就是十個左右的知識點,懂了也就比較輕鬆了,後續就是靠自己在專案中的打磨了。

如果對程式設計感興趣,想了解更多的程式設計知識,解決程式設計問題,以及入門指導,幫你解決程式設計中遇到的困惑,請關注本頭條號,大家一起學習,一起進步,一起熬夜加班。

9850446-e2ea6e5aa1f03891.png
9850446-eb142e39050e4bf6.png
9850446-1898cb4973b3481d.png

相關文章