今天給大家分享一個學習路線,也算是給這段時間C語言系列的一個總結,大家按圖索驥,能夠飛快的掌握C語言。
C語言指針很難學?給你最直接的解決思路!
首先我想說下,C語言是非常重要的語言。為什麼這麼說呢?原因在於C語言是連接了硬體和軟體的橋梁。
如果你學習Java,會發現自己是在Java虛擬機上,你要是用硬體功能,除了依賴系統API之外,就沒招了。
這也是為什麼我說:你不會C語言,基本上就如同無根之草一樣,因為沒根基,上層建築就是搖搖欲墜。
而在C語言這裡,最為重要的一個環節是,作業系統,這個龐然大物,直接支撐了各種開發需求,調度,快速的實現功能。
而C語言的學習,基本上保持一個路線,就是沒問題的:
1 基礎語法
2 練習,做筆記
3 數據結構與算法
4 項目,模仿
5 作業系統
6 反編譯逆向
7 設計原理
那麼具體該如何學習呢?
1 基礎語法
推薦書籍:(更多書籍文末免費獲取)
《C primer plus》
《小甲魚C語言》
《C與指針》
自學編程C語言不迷路,我私藏的書單分享給你!
推薦網站:
https://www.runoob.com/cprogramming/c-tutorial.html
視頻教程:
https://www.bilibili.com/video/BV1TT4y1F7Z9
https://www.bilibili.com/video/BV17s411N78s/
學編程一定要記住一點:
語法永遠只是基礎,不是能力。如果你聽見誰說它學會了哪個語法,卻不會做項目,那麼基本上等於白瞎,沒啥用,只是剛入門而已。
程式設計師之間的薪資差距,主要來自於一些抽象的能力,比如創造力,溝通力,解決問題的能力。
2 練習,做筆記
練習,第一個是所謂的課後題,多練習,把語法熟練的掌握,再一個就是去做筆記,把學到的知識進行歸類,總結。
很多人會有一個困惑,自己學了就忘了,等於沒學。這個解決方式就是做筆記,加深印象。
只看不做,基本白瞎的。一定要去動手,去調試,用VS開發或者codeblocks,都是沒問題的,如果你喜歡Linux,可以裝個虛擬機,或者cygwin去編程。
一些練習題:
https://www.runoob.com/cprogramming/c-100-examples.html
視頻講解:
https://www.bilibili.com/video/BV1ur4y1c7d2?from=search&seid=13029503385076204138
C語言# ##看的頭蒙?以實際應用場景剖析它!
3 數據結構與算法
當你學習完語法,或者是在學習的過程中,會遇到比較困惑的內容,就是不知道如何描述物體,如何設計,這個原因是語法掌握了之後,這些東西都是零散的,不成系統,你不會用。
當你用的時候,繞不過去的一個知識,就是數據結構與算法,因為這兩個合起來就是寫程序了。
一個物體描述出來,就是一個結構體,或者聯合體,然後通過一些函數調用,操作,影響數據,最終提通過界面顯示,或者終端輸出,完成整個過程。
於是C語言學習語法完後,就是學數據結構與算法,一定要記得這個學完,才是入門了,才能真正的做項目了。
這裡主要學習哪些知識呢?
書籍文末可以找到,視頻這裡分享幾個:
https://www.bilibili.com/video/BV1Ut411g76f
https://www.bilibili.com/video/BV1xK4y1U7Dc?p=4
4 項目,模仿
上面的這些學習完後,就要開始做項目了。而做項目的技巧是什麼?先去找案例,教程學習,項目實戰。
當我們看完一個後,學會了如何去分析,開發一個新的項目。比如,如何描述一架飛機,它有哪些參數,哪些方法。
是否可以飛,可以發子彈,是否碰撞,寬高。
這個在理解起來就是,內部的結構,以及外部的關聯。對內屬性,對外方法調用。
這個如果你理解了,那麼算是學成精了,進入開悟階段。
這塊教你一個方法,直接百度搜索 C語言 項目 源碼 下載 。或者去github去搜索。
更多內容,記得關注公號 :程式設計師入門進階。
5 作業系統
當這個階段完成後,後面就進入所謂的作業系統階段,這個邁過去了,就是開悟之坡的封神階段,會進入真正的輝煌階段。
而關於作業系統,要學習哪些知識呢?
作業系統的概念
進程,線程的存在
通信機制
互斥鎖,消息
死鎖,如何避免競爭
虛擬內存,進程間不可直接訪問
分頁,分段,緩存的意義
文件系統
驅動加載
這邊推薦幾本書,《現代作業系統》《自己動手寫一個作業系統》,我自己當時是看著一本叫做《作業系統》的書,看了很久。
這塊建議看下《linux作業系統設計》,然後就去看下小型作業系統,代碼少,好學習,這塊可以使ucos2,freertos,去學習中斷上下文,所謂的現場保護。
如果這塊學的不錯了,在進階一下,進入微指令,計算機組成原理,深入到計算機硬體這塊,會給你帶來質的飛躍。
自學編程C語言不迷路,我私藏的書單分享給你!
程式設計師碼農IT工程師自學編程計算機入門進階學習網站大全
《計算機網絡》《作業系統》《 組成原理》計算機知識該怎麼個學習順序?
6 反編譯逆向
完成了作業系統,就結束了?非也。下來會進入到世界顛倒的地方。反編譯。有誰會寫完代碼後,進行反編譯看看的?如果你這麼做了,你一定是高手了。
因為你進入了自我探索階段,在開悟之後,就變成了所向披靡,而反編譯就是最好的切口。
這裡推薦幾本書:《C++反編譯》《加密與解密》,加密與解密解決所謂的PE結構這些,說到這裡又想起來了,《程式設計師的自我修養》《連結器與加載器》,一定要去讀,太經典了。
這塊我當時使用的是OD破解器,現在IDa,做一些分析學習(現在不輸出這類內容了,自己探索樂趣無窮,不想被煩擾)
當你看到代碼,能夠看到的是它的流動,就像俠客行裡面,最後石中玉看到蝌蚪文的那個感覺,各個經絡活躍起來,感受到代碼在流淌,而不是靜態的,這時候你才是真的熱愛編程。
這也是我喜歡的一個狀態,一個在代碼世界的屠龍少年。
當完成了這些,會到所謂的大神階段,就是會遊刃有餘的解決問題,但是還處在孫悟空的階段,沒有大徹大悟。
最後一個,我們來說下終極思維。
7 設計原理
虛實結合,創造系統,這個才是最終跳出束縛,完成所謂的天眼過程。所謂你永遠看不到真相,因為你一直在真相裡面。
要想真正打通,最終完成的是所謂的設計,比如作業系統架構設計,模型,物聯網模型,協議,這些是在制定規則。
制定規則,是在創造過程。制定規則,是具有了主導的權力,一切皆在股掌之中。
好了,今天就聊這麼多,更多內容,敬請期待!
--- EOF ---