C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

看招聘職位要C語言的比例真不多了,是不是C語言真的過時了?

看看很多招聘網站有關找純粹的C語言開發的比例真的不是很多,都被Java,php,python等等語言刷屏。這對於初學正在學習C語言的小白簡直就是驚天霹靂,學了沒人要,學了還有啥意義。如果單從快速找工作的角度考慮這件事的確,這個觀點是能站得住腳的。

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

前幾天和一位老碼農聊天,開篇就來了這麼幾句,換開發語言算了,現在的做底層的日子不比以前了,看看那些做App的,做不了幾年工資蹭蹭就上去了,我們這熬了這麼多年才這麼點。

難道C語言真的過時了?

現在先看看C語言到底能做了多少事情,大家經常說的linux操作系統的內核都是C語言寫的,對應的很多嵌入式內核驅動也跑不出C語言範疇,包括大家常用的手機,機頂盒,電視機底層硬件驅動基本山都是C語言完成,還有常見基於單片機的程序也主要由C語言完成。大致概括來說嵌入式領域C語言還是無處不在,很多底層的圖形庫也是基於C語言完成。

當然C語言最牛的地方,幾乎現在所有的上層語言的底層語言絕大部分都是C語言大哥做嫁衣給鋪墊完成。深刻理解上層語言底層實現,離不開C語言。

linux內核社區火熱程度,依然有增無減,記得有個對內核研究很透徹的哥們,說了句話“我覺得能看懂內核裡面的代碼就是最大的幸福了,更不要說修改裡面的代碼“(當然這話說的主要是內核框架層次的,不是外圍設備擴展方面)

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

一方面說C語言的工作機會少了,待遇不行了,一方面C語言還是滲透在各個領域,這中間到底發生了什麼事情?

一.基於C語言實現底層架構,就目前來說已經相對比較成熟,對於底層的修改需求已經存在很多基礎的版本,修改起來相對比較輕鬆,維護的工作相對多,技術要求降低。真正的框架修改還是需要C語言超級高手來做(這方面高手待遇目前依然居高不下)

二.應用層語言的蓬勃發展,技術更新的速度越來越快,用上層的語言很快就能實現比較漂亮的界面,就沒必要用C語言一點一線去操刀。專業的人做專業的事情,分工更加明細,界面層次的東西,上層語言實現起來更加得心應手。

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

三.應用層面的編程,比之前火熱許多。特別是一些App級別的開發,至少從表面上看沒有C語言啥事情了,所以現在很多入門的小白直接選擇java或者php之類的語言,沒有C基礎一樣做的很棒,這是社會分工細化的結果,沒有哪種語言會一直長盛不衰,技術在不斷更新中。

如何正確看待C語言?

學好了,還是能找到工作的,畢竟社會招聘的崗位總量還是很多。相對比例偏少而已,因為整體公司的數量比之前也是多了許多。

想讓自己有個長遠的發展,比如架構師層面,C語言幾乎還是必修課,不瞭解底層的實現談何架構整個系統,談何做出通用化的框架。從語言角度考慮學會了C語言切入到其他編程語言,學習速度會加快不少,還是值得去學。

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

那麼c語言怎麼去學?

什麼人才能學好?為什麼學到一半就早早繳械投降了?眾多迷霧,眾多的困難,怎麼破局?

很多對編程感興趣的小夥伴,找個所謂的高手,問了幾個編程入門需要的書,也是拼了,呼呼的買了一堆C語言,C++,java等等,本著多多益善的原理,然後從C開始看,最初幾天看的熱火朝天,把如何編譯C代碼,如何打印基本的字符串看的很是仔細,隨著難度的增加,越來越覺得吃力,有點寸步難行的趕腳,怎麼辦啊,網上找點資料看看,看的似懂非懂。然後再堅持看了幾節,迷糊的越來越厲害,這個時候開始懷疑自己的學習方法或者書買錯了,開始自我否定,在網上搜搜覺得C語言是不是太難了,很多是從java開始學的。於是先放棄C開始主攻java,開始學習java,最初幾章明顯學的比C語言快點,畢竟有點基礎了,結果一遇到思維意識形態之外的又開始迷糊,又掉到學習C語言時候的困頓中,於是自我否定。編程太難,不是每個人都能學會的,徹底放棄。

這是小白常見的放棄之路的覆盤,有這種類似情況的,或者有類似經歷的對位思考下。

那麼如何破掉這些困局?

一. 懷揣極大興趣

客觀評價寫代碼是一件,很枯燥乏味的腦力勞動,需要極大的驅動力,一般驅動人去做一件事,興趣是其一,強大的精神力其二。興趣是第一老師,有了興趣就可以克服一些困難,遇到問題或者需要攻堅的時候能夠挺得住。編程相對來說知識點很分散,難易程度不統一,細節極多,持續不斷的克服問題,需要有一定的精神力。

二.適宜的學習方法

編程學習存在一定的技巧性,原則上先要把一門語言入門之後再切入到別的語言,語言本身極具靈活性,學好一樣平移到另外層次是切實可行。入門一種語言基本上意味著熟悉了一種語言的特性。切忌一種還沒學好就中間換來換去,這是以犧牲自身興趣點為代價的。

選擇一本合適的入門書籍,建議選擇老外的,c primer plus 以及c程序設計語言都是很經典的入門書籍,很多人都提到了用視頻學習,零基礎前幾節的學習可以採用視頻入門的方式,有了感覺建議還是迴歸到書本上。在書本上遇到難點,可以找對應的視頻去學習。明白了理解了再回歸書本,為啥建議採用書本,從效率上講書本的學習速度遠快於視頻,還有些人提到了書本上的東西看的頭髮麻,如果真是這種狀態,需要靠視頻才能激發自己學習的動力,那麼可以問下自己,是不是進入學習狀態了。

無論覺得多難,還是要嘗試建立自己的知識體系,對於初學者來說這可能是一個極大的挑戰,編程就是一個思維認知過程,認知清楚了框架也就清晰了,那麼嘗試著勾勒知識框架也是加速引導思維認知的一種途徑。

三, 不要鑽過多的牛角尖

很多初學在學習C語言時候,開始恨不得把內存的工作原理以及printf底層實現挖個底朝天,這些從長遠看都需要做,但是作為入門級別的,還是繞開,先做到會用,然後理解到了一定層次再去深入理解,很多初學者開始學的特別痛苦,覺得自己什麼都不會,什麼都搞不懂,但什麼都還想搞明白。不否認有一次性搞定的天才,但大多數人還是凡人,還是需要先理解表面的含義,再去深挖底層含義。

四 堅強的毅力

編程百分九十以上的東西,都需要自學,自學依賴很強的毅力。說的通俗點就是堅持。面對如此枯燥無味的代碼,需要保持長時間的專注度和忍耐力。沒點骨氣,做不到。淺嘗輒止基本上做任何事情都是失敗者。

以上四點不是,任何一點做不到都能成為放棄學習的理由,都是一個從開始學習到放棄的經典案例。真要想學好C語言,不兼具點拼搏因子基本上和入門漸行漸遠。

如何去選擇C語言的學習資料?

學習語言的開始一般是閱讀參考書。我建議選擇幾本非常經典的好書,仔細完整反覆閱讀幾遍,“書讀百遍其義自現”。選擇C語言學習的好處是,這幾本書基本上完整涵蓋了C語言編程領域的方方面面,不會像C++那樣,即使讀完一堆書還是有些糊塗,依然有這樣那樣難懂的陷阱。

1,參考書籍

在豆瓣上列了一個書單,大家可以直接參考http://book.douban.com/doulist/636329/

在下面簡單點評一下,閱讀順序最好參照列出的順序。

《The C Programming Language》http://book.douban.com/subject/1230004/

如果你只想買一本書學習C語言,只需要買這一本就夠了。如果你經費足夠,建議你多買幾本,辦公室、家裡都放上一本,隨手都可以翻翻。用三個詞語來形容它就是:經典!經典!經典!這本薄薄的只有二百多頁的小書涵蓋了C語言的方方面面,前無古人而且後無來者,任何溢美之詞都不足以形容它。

《The C ProgrammingLanguage》(後面稱為 K&R)裡面包含了一個簡單的語法解析器,包含了malloc如何實現,包含了一個完整的操作系統目錄瀏覽程序,這些程序的實用性極高,可以這樣說,如果學習任何一門語言能夠自己獨立動手實現以上的功能,基本上就可以算是入門了。K&R書裡面每段都蘊含著非常值得探究的軟件開發工程實踐經驗,如果沒有一定的開發經驗,其實是看不出來這些冰山下面的內容的,比如開頭一章就提出用寫完整代碼這種方式來教學,而在書中那些C語言的陷阱或者可能出問題的地方,都有提到,但是由於篇幅所限,寫的非常簡約,很難讓人一下就看懂。我正在完整的逐字逐句的閱讀此書,希望能稍作註解,寫幾篇博客分享一下。

《C程序設計語言(第2版·新版)》http://book.douban.com/subject/1139336/

這是K&R的中文譯本,可以先從中文譯本看起,然後再讀一遍英文原版,既可以學習英文,又可以體會原文那種簡約優美的風格。

《C陷阱與缺陷》http://book.douban.com/subject/2778632/

《C專家編程》http://book.douban.com/subject/2377310/

這兩本書也是學習及使用C語言的朋友必備的兩本書,比如《C專家編程》,專門用兩三個章節詳細介紹C語言中數組與指針的不同之處,這兩本書在某種程度上算是對K&R略過的地方做了詳細補充,強烈推薦。

《C語言參考手冊》http://book.douban.com/subject/2132084/

這是最後一本強烈推薦你最好買回家作為案頭書必備的參考書。前面幾本書或者稍顯簡略,或者專注某個特定專題,都不適合遇到問題時翻查。這本《C語言參考手冊》可以看作是C語言編程的《新華字典》,全面而權威。裡面還涵蓋了C99的內容,緊跟時代潮流。

下面幾本書都可以作為交叉參考,也都很有價值,也是建議大家都買下來,好書如朋友,日久彌新,像是我推薦的這幾本書在douban或者amazon上評分都非常高,而且反覆再版。

《C和指針》http://book.douban.com/subject/1229973/

指針的重要性如何,學過C語言(或者C++)的朋友都知道,這本書更是把指針拔高到了與C語言平起平坐的地位,其實也是從頭開始介紹,作為教學參考書也是可以的。

《C標準庫》http://book.douban.com/subject/3775842/

這本書是專門介紹C語言的標準庫如何實現的,比如malloc算法,用標準的C語言該如何寫?strlen這個函數應該如何實現?儘管書中不少代碼與真實的C標準庫相差很多(由於標準庫需要考慮性能優化,很多函數有一些特定的trick),但是絕對值得參考。

《你必須知道的495個C語言問題》 http://book.douban.com/subject/3422332/

這本書其實就是C-FAQ的印刷版本,C-FAQ在各種編程語言的FAQ中可以稱得上質量一流。如果你想應聘或者招聘C語言相關程序員,這本書一定要參考。

《Linux C編程一站式學習》http://book.douban.com/subject/4141733/

這本書是基於特定操作系統Linux來介紹C語言編程,可作為計算機相關專業的教科書或入門參考書,也是書單裡面唯一一本國人原創的編程書籍,非常難得。書中幾乎所有內容都在網上直接公開,針對讀者的意見進行修改,這也是非常難得的一種開放態度。非常推薦大家買一本。


好了,說了這麼多,雖然是很多文章拼湊的,但是應該也對大家能有所幫助

下面告訴你們怎麼領取教程

  1. 點擊我的頭像
  2. 點擊關注
  3. 點擊右上角 發私信
  4. 發送 C語言教程
  5. 根據回覆操作

領到的條友們回來點贊和轉發哦!這才是我繼續把資源做下去的動力。一共180節課的科班教程,你們加油。

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)

C語言,能開發什麼?怎麼去學習?(文末全套視頻教程領取)


分享到:


相關文章: