為什麼這麼多人學不會C語言?
很多人覺得用C語言作為入門語言覺得太難了,裡面還有指標,回檔,遞迴之類的操作太難了。為什麼這麼多人覺得C語言難?筆者根據從業十幾年的經驗嘗試著分析一下。
第一 C語言是距離硬體非常近的語言,特別是和記憶體關聯很近,主要還是指針的存在
很多人說到指標就頭大,指標就是一把雙刃劍,能夠很好的解決邏輯問題,但指標一旦出現問題,找個問題都很費勁,底層語言直接崩潰對應的查找工具還不多,很多還得靠代碼解決,
而且與指標相關聯的很多東西,在開始學的時候都不是很好理解,回呼函數,指標陣列,這些組合概念基本上沒幾下就把初學者給搞暈了,
指標直接的導向就是容易導致記憶體洩漏,而且如果不是大塊的洩漏解決起來都特別費勁,可能需要運行很長一段時間才能查找到,指標的釋放位置自己要記錄好了,忘記了查找起來相當的麻煩。
第二 C語言工具比較少,很多功能的實現都需要自己實現
很多高階語言幾句話的事情,在C語言去實現需要折騰很長時間,這是底層語言不太好的地方,這也就決定了C語言只適合在性能要求比較高的地方去使用,應用方面就不怎麼適合了。目前來看在嵌入式領域用的還是比較多,特別是在內核驅動,
查找個性能問題,基本上靠列印定位大的大致方向,採用代碼排除的辦法去解決,初學者最初可能都沒有這種感受,隨著做一些實際的項目也就慢慢有這種體會了。
第三 C語言 由於是面向過程的語言,原則上函數和模組之間可以胡亂調用,如果框架思想不強,寫出來的代碼就是一鍋粥,非常難維護
很多初學者用C語言實現一個功能,基本上都放在一個檔或者函數裡面,亂哄哄的代碼搞在一起,如果再用指針實現功能,代碼簡直沒法看,當然這是初學者的通病。
面向過程的代碼可以寫的非常亂也能正常的去執行,維護起來可就麻煩了,C++在這方面就做了很多的提升和限制,在編譯的時候加大了難度,然後在實際執行過程中就顯得遊刃有餘。
基於以上三點導致很多初學者倒在入門的路上,本質上堅持的力度不夠,誰都不可能在開始學的時候都弄得非常清楚,畢竟天才只有少數。學完之後回來總結C語言也就是十個左右的知識點,懂了也就比較輕鬆了,後續就是靠自己在項目中的打磨了。
如果框架思想不強,寫出來的代碼就是一鍋粥,非常難維護很多初學者用C語言實現一個功能,基本上都放在一個檔或者函數裡面,亂哄哄的代碼搞在一起,如果再用指針實現功能,代碼簡直沒法看,當然這是初學者的通病。
面向過程的代碼可以寫的非常亂也能正常的去執行,維護起來可就麻煩了,C++在這方面就做了很多的提升和限制,在編譯的時候加大了難度,然後在實際執行過程中就顯得遊刃有餘。
基於以上三點導致很多初學者倒在入門的路上,本質上堅持的力度不夠,誰都不可能在開始學的時候都弄得非常清楚,畢竟天才只有少數。學完之後回來總結C語言也就是十個左右的知識點,懂了也就比較輕鬆了,後續就是靠自己在項目中的打磨了。