# C語言的推薦 ## 前言 > 寫C語言最好的方式,就是不要寫C語言。 > C語言使用者必須自行尋找第三方庫 這就是我在進入推薦環節之前要說的話,現今市面上有很多比C要好用的程式語言,像開發快速的Golang、生態系完整的Java、更具嚴謹性的Rust,甚至是C++都比寫C要好。 如果你不是想深入了解計算機系統或進行高效能和嵌入式開發,那C語言不會是你的選擇。 看來你心意已決(~~想告別紅塵~~),那歡迎來到C語言的世界。 ### 清單 * 《透視C語言指標》Understanding and using c pointers * 《21世紀的C語言》21st Century C * Linux 核心設計/實作 * glibc ## 《透視C語言指標》 這本書最主要就是建立如何安全使用指標,與堆疊(Stack)和堆積(heap)的記憶體管理概念。 內容簡單,主要模型十分精簡,主內容並沒有涵蓋多線程的數據競爭。 > 1. 入門 > 2. C語言的動態記憶體管理 > 3. 指標與函數 > 4. 指標與陣列 > 5. 指標與字串 > 6. 指標與結構 > 7. 安全問題與不當使用指標 > 8. 其他補充 ## 《21世紀的C語言》 將C語言現代化是一件十分重要的事情,我們現在的C語言教材都停留在1990年以前,C語言剛剛起步的時候。這忽略了編譯器、軟體工程概念、Debug等等,將C語言投入開發的必備技能,這本就來試圖將他補足。 內容主要分兩個部分,環境與語言。 環境的部分,主要是在說明工具的使用,像連結第三方程式庫、使用Make構建項目(我推cmake)、用git建立版本控制。 語言的部分才是重頭戲,先再次說明了一下指標,再來稍微講了一下在教科書範例上過度強調的語法,之後是巨集用法到更好使用結構。最後是C語言的物件導向設計是傳統的物件導向,概念是有一組中心資料結構,各自帶一組操作中心資料結構的函式。 > 環境 > > 1. 簡化編譯過程的設定 > 2. 除錯、測試、文件 > 3. 打包專案 > 4. 版本控制 > 5. 攜手合作(動態連結外部程式庫) > > 語言 > > 6. 指標好夥伴 > 7. 教科書過份強調的進階語法 > 8. 教科書輕忽過的重要語法 > 9. 簡化文字處理 > 10. 更好的結構 > 11. C語言的物件導向程式設計 > 12. 平行執行緒 > 13. 函式庫 ## Linux 核心設計/實作 [http://wiki.csie.ncku.edu.tw/linux/schedule](http://wiki.csie.ncku.edu.tw/linux/schedule) 很好的課程,來自成大資工。 可以讓你對計算機的理解超越大部分程序員。 C語言本身就是伴隨Unix開發而出現的,要了解C語言的使用必須要理解計算機系統。 使用《深入理解計算機系統》 ## glibc glibc(GNU C Library)基本上是C和POSIX標準的官方實踐,本身就有完整的說明文件可以閱讀,讓你可以快速找到需要的函式與使用方式。 https://www.gnu.org/software/libc/manual/