很多人覺得用C語言作為入門語言覺得太難了尝苇,里面還有指針,回調(diào)俺猿,遞歸之類的操作太難了茎匠。為什么這么多人覺得C語言難格仲?筆者根據(jù)從業(yè)十幾年的經(jīng)驗(yàn)嘗試著分析一下押袍。
第一 C語言是距離硬件非常近的語言,特別是和內(nèi)存關(guān)聯(lián)很近凯肋,主要還是指針的存在
很多人說到指針就頭大谊惭,指針就是一把雙刃劍,能夠很好的解決邏輯問題侮东,但指針一旦出現(xiàn)問題圈盔,找個(gè)問題都很費(fèi)勁,底層語言直接崩潰對應(yīng)的查找工具還不多悄雅,很多還得靠代碼解決驱敲,不像java用eclipse裝一些插件,內(nèi)存問題性能問題直接能看的比較清晰宽闲,這就是高級語言比較有優(yōu)勢的地方众眨,參與的人多遇到問題,去解決的人也多容诬,對應(yīng)的工具也多娩梨。解決內(nèi)存和性能的問題,就難倒了很多意志不是堅(jiān)定的人览徒,很多人選擇換語言學(xué)習(xí)狈定。
而且與指針相關(guān)聯(lián)的很多東西,在開始學(xué)的時(shí)候都不是很好理解习蓬,回調(diào)函數(shù)纽什,指針數(shù)組,這些組合概念基本上沒幾下就把初學(xué)者給搞暈了躲叼,這也是考驗(yàn)?zāi)托缘臅r(shí)候稿湿,堅(jiān)持去理解去學(xué)習(xí),也就慢慢挺過去了押赊,其實(shí)這些都是基本功能的組合饺藤,比如回調(diào)函數(shù)應(yīng)用的場景包斑,函數(shù)的執(zhí)行時(shí)機(jī)已經(jīng)確定,函數(shù)內(nèi)容實(shí)現(xiàn)要根據(jù)具體的場景來定涕俗,這種在windows編程時(shí)候在傳遞句柄的時(shí)候用的多罗丰。小編推薦一個(gè)學(xué)C/C++的學(xué)習(xí)裙【六二七,零一二再姑,四六四】,無論你是大牛還是小白萌抵,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有很多干貨和技術(shù)分享元镀!要理解回調(diào)還得知道函數(shù)指針是個(gè)啥概念绍填,這種對初學(xué)者來說簡直就是天書。在學(xué)習(xí)的時(shí)候記住一點(diǎn)先去理解了再去考慮怎么練習(xí)栖疑,實(shí)踐讨永。不要上來逮著書本上的練習(xí)題目呼呼的去敲代碼,要理解個(gè)差不多再去動(dòng)手也不遲遇革。
指針直接的導(dǎo)向就是容易導(dǎo)致內(nèi)存泄漏卿闹,而且如果不是大塊的泄漏解決起來都特別費(fèi)勁,可能需要運(yùn)行很長一段時(shí)間才能查找到萝快,指針的釋放位置自己要記錄好了锻霎,忘記了查找起來相當(dāng)?shù)穆闊?/p>
第二 C語言工具比較少,很多功能的實(shí)現(xiàn)都需要自己實(shí)現(xiàn)
很多高級語言幾句話的事情揪漩,在C語言去實(shí)現(xiàn)需要折騰很長時(shí)間旋恼,這是底層語言不太好的地方,這也就決定了C語言只適合在性能要求比較高的地方去使用奄容,應(yīng)用方面就不怎么適合了冰更。目前來看在嵌入式領(lǐng)域用的還是比較多,特別是在內(nèi)核驅(qū)動(dòng)嫩海,或者操作系統(tǒng)底層實(shí)現(xiàn)方面應(yīng)用的非常廣泛冬殃,而且這類對于C語言的要求比較高,不是簡單寫個(gè)普通的模塊就能搞定的事情叁怪。
查找個(gè)性能問題审葬,基本上靠打印定位大的大致方向,采用代碼排除的辦法去解決奕谭,初學(xué)者最初可能都沒有這種感受涣觉,隨著做一些實(shí)際的項(xiàng)目也就慢慢有這種體會(huì)了。
第三 C語言 由于是面向過程的語言血柳,原則上函數(shù)和模塊之間可以胡亂調(diào)用官册,如果框架思想不強(qiáng),寫出來的代碼就是一鍋粥难捌,非常難維護(hù)
很多初學(xué)者用C語言實(shí)現(xiàn)一個(gè)功能膝宁,基本上都放在一個(gè)文件或者函數(shù)里面鸦难,亂哄哄的代碼搞在一起,如果再用指針實(shí)現(xiàn)功能员淫,代碼簡直沒法看合蔽,當(dāng)然這是初學(xué)者的通病。
面向過程的代碼可以寫的非常亂也能正常的去執(zhí)行介返,維護(hù)起來可就麻煩了拴事,C++在這方面就做了很多的提升和限制,在編譯的時(shí)候加大了難度圣蝎,然后在實(shí)際執(zhí)行過程中就顯得游刃有余刃宵。
基于以上三點(diǎn)導(dǎo)致很多初學(xué)者倒在入門的路上,本質(zhì)上堅(jiān)持的力度不夠徘公,誰都不可能在開始學(xué)的時(shí)候都弄得非常清楚牲证,畢竟天才只有少數(shù)。學(xué)完之后回來總結(jié)C語言也就是十個(gè)左右的知識點(diǎn)步淹,懂了也就比較輕松了从隆,后續(xù)就是靠自己在項(xiàng)目中的打磨了诚撵。