為什么這么多人學(xué)不會(huì)C語(yǔ)言?
網(wǎng)友解答: 作為有8年C語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn)的程序員,我覺(jué)得我有一點(diǎn)資格可以來(lái)回答首先看什么叫學(xué)會(huì)C語(yǔ)言如果只是簡(jiǎn)單的寫(xiě)出一些循環(huán)語(yǔ)句、字符處理等操作,那只能叫你認(rèn)識(shí)這個(gè)語(yǔ)言。真正的學(xué)會(huì)C語(yǔ)言,
作為有8年C語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn)的程序員,我覺(jué)得我有一點(diǎn)資格可以來(lái)回答
首先看什么叫學(xué)會(huì)C語(yǔ)言如果只是簡(jiǎn)單的寫(xiě)出一些循環(huán)語(yǔ)句、字符處理等操作,那只能叫你認(rèn)識(shí)這個(gè)語(yǔ)言。
真正的學(xué)會(huì)C語(yǔ)言,你要理解指針、內(nèi)存、堆棧操作、鏈表操作,同時(shí)需要對(duì)操作系統(tǒng)有一定的理解,32位、64位操作系統(tǒng),使用的數(shù)據(jù)也不同。
為什么很多人學(xué)不會(huì)C語(yǔ)言1.C
語(yǔ)言的入門(mén)簡(jiǎn)單,進(jìn)階復(fù)雜,如果沒(méi)有操作系統(tǒng)的一些機(jī)制理解,那在開(kāi)發(fā)時(shí),會(huì)非常頭疼,有時(shí)候指針指向某個(gè)內(nèi)存跑飛,你都不知道哪里出現(xiàn)了異常,這也讓很多人望而卻步;2.C語(yǔ)言從事的工作比較都比較接近底層,像單片機(jī)、芯片開(kāi)發(fā)、內(nèi)核驅(qū)動(dòng)的開(kāi)發(fā)會(huì)用到C語(yǔ)言,需要掌握的知識(shí)點(diǎn)很多,一般的公司不愿意找一個(gè)C語(yǔ)言經(jīng)驗(yàn)較低的程序員,這也導(dǎo)致找工作不那么容易;
3.C語(yǔ)言需要大量的習(xí)題和項(xiàng)目練習(xí),否則就是埋坑專(zhuān)家,而且C語(yǔ)言真正能快速做出來(lái)的項(xiàng)目不多,不像JAVA可以用現(xiàn)有的框架快速的搭一個(gè)前后端出來(lái),或者快速的寫(xiě)個(gè)APP出來(lái),所以學(xué)習(xí)C語(yǔ)言要耐得住寂寞,不那么容易有成就感。
為什么要學(xué)C語(yǔ)言C語(yǔ)言是其他高級(jí)語(yǔ)言的基礎(chǔ)。
在日常的工作中,你不可能一直使用C語(yǔ)言,拿我自己來(lái)說(shuō),我主要從事于Android系統(tǒng)級(jí)的平臺(tái)開(kāi)發(fā)與高通modem的平臺(tái)開(kāi)發(fā),在日常的工作中需要掌握C、C++、JAVA、Python這些基礎(chǔ)語(yǔ)言,還需要掌握Shell、Soong、Makefile等腳本的開(kāi)發(fā)。而且這些語(yǔ)言和腳本在平臺(tái)開(kāi)發(fā)中也是穿插著使用,不同的層會(huì)使用不同的語(yǔ)言。C、C++主要使用在Android Nativate C和kernel層 以及高通的Modem層,Java主要用于Android的應(yīng)用層,Python、Makefile、Soong用于編譯過(guò)程。
我剛學(xué)習(xí)和使用的語(yǔ)言是C語(yǔ)言,有了C語(yǔ)言的基礎(chǔ),再學(xué)習(xí)其他語(yǔ)言將會(huì)事半功倍。
我們?cè)鯓尤?xiě)C語(yǔ)言我學(xué)習(xí)C語(yǔ)言的時(shí)候,主要是大學(xué)的基礎(chǔ)課程,然后自己練習(xí)了《C語(yǔ)言經(jīng)典編程282例》,每道題目都認(rèn)真練習(xí),弄清算法原理,內(nèi)存操作機(jī)制,異常處理等等,然后再到參與實(shí)際項(xiàng)目中進(jìn)行運(yùn)用,要邁過(guò)幾十上百個(gè)坑,才能算是有點(diǎn)成就。
我最近正在寫(xiě)一個(gè)《C與指針心得》的系列文章,想了解C語(yǔ)言的,可以關(guān)注我。
感謝您的關(guān)注與點(diǎn)贊! 網(wǎng)友解答:筆者雖然現(xiàn)在很少寫(xiě)C了,但在工作初期有多年C語(yǔ)言工作經(jīng)驗(yàn),后續(xù)接觸過(guò)的高級(jí)語(yǔ)言就太多了,PHP,JAVA,GO,Python等都有一定深入研究,可以簡(jiǎn)單說(shuō)一下我的看法,當(dāng)然,歡迎關(guān)注。
先簡(jiǎn)單總結(jié)一下:很多C語(yǔ)言的問(wèn)題要對(duì)計(jì)算機(jī)系統(tǒng)有一定理解之后才能解決,就算有好的教材也不能簡(jiǎn)單寫(xiě)出bug free的代碼。
即使通過(guò)看書(shū)把C語(yǔ)言入了門(mén),但是坑還是要親身去踩才能學(xué)到東西。
比如C語(yǔ)言不像Java一樣給你很多內(nèi)置的類(lèi),類(lèi)的方法都定義好了直接用就行了。在C語(yǔ)言里這些都得自己寫(xiě)。。。
C語(yǔ)言也沒(méi)有Java的垃圾回收機(jī)制,還得學(xué)著自己管理內(nèi)存,知道存在棧上的局部變量和分配了內(nèi)存的變量在存儲(chǔ)上的區(qū)別。
還有malloc的坑,分少了會(huì)buffer overflow,忘記free了又會(huì)造成memory leak。
unsigned int的坑。
不懂對(duì)應(yīng)的系統(tǒng)知識(shí),只能看著非常confusing的bug找不出原因。