[徵文] linux c 編程 一站式學習

作者: descent (「雄辯是銀,沉默是金」)   2016-04-22 20:47:03
推薦書目名稱或網址
linux c 編程 一站式學習
適合閱讀此書或網站的程度/對象
初學者
簡介
在 linux 上學習 c 語言的書
讀後心得
inux c 編程 一站式學習 60
( https://goo.gl/XB8C2c )
20111212 購於台南若水堂, 60X6 = 360 nt。
市面上有好多好多的 C 語言書籍 (當然還有 c++, 而且很多內容都很類似),
我已經有了 The C Programming Language, 還需要其他的嗎? (還真的需要)
實際上我的 C 語言書籍不多, 大部份是 C++ 相關書籍。我大多是從 c++
書籍上順便學習 c。這本書能吸引我的目光是因為作者提到了匯編 (組合語言) 與
C 關係, 詳細解釋了 crt.o 和組合語言之間的關係, 還有 linker 的東西,
這對我來說可是如獲至寶, 只因為三個章節的內容 (17, 18, 19), 我就買了,
書中應該超過一半是我已經知道的東西吧! 不過令一半的東西很重要,
我訝異我自己竟然不知道。這三章的內容是作者參考 programming from the ground up
來的。
而程式設計師的自我修養 ( http://goo.gl/sqUf81 )比較詳細。
買回家細看之後, 比我想的更值回票價, 書中提到的 c99, 讓我對有些 c99
語法有了概念, 原來某些我不太理解的語法是 C99 的用法。
第 14 章在說明 c 語言複雜的轉換規則, 有 Usual Arithmetic Conversion,
Integer Promotion, 再去看 c 規格書應該會容易些。
你知道 0 - 1 的 0 和 1 是 int 還是 unsinged int type 嗎?
c 語言規定了繁複的轉換規則, 0 和 1 會被轉成 int 再做減法, 所以結果是 -1
而不是 4294967295, 14.3 是這章的精華, 得花點腦筋才能吸收, 坦白說,
這對初學者實在太深, 有個印象就好, 知道有這回事,
儘量不要處碰到這些悔澀的的地帶。
p174 有個表在說明 IPL32, PL64 這個術語。
I: int
L: long
P: pointer
15.3 介紹了 side effect, sequence point, 就是 a = a++; 這種煩人的東西。
而第 17 章 - x86 匯編程序基礎 (組合語言基礎), 讓人受用, 藉由 readelf
讓我得知 obj 和 elf 執行檔案的內容, 雖然只是短短的一章, 需要不少腦力,
若在書店看, 得好好找張椅子慢慢消化, 買回家讀還是舒服些。
內容和程式設計師的自我修養 - 連結、載入、程式庫很類似,
不過提到的東西比較少。若看的吃力, 那讀程式設計師的自我修養可能會難了點。
chapter 18 從 c runtime crt*.o 開始, 分析這些 .o, 當然要出動 objdump。
在分析變數是怎麼儲存在記憶體、執行檔裡頭以及 bss, 我認為這個有點難,
看不懂對於學習 c 不成問題, 但搞懂會為你的功夫打下基礎,
再也沒有任何事情可以難倒你。
volatile 的解釋也很棒, 用反組譯來帶你理解這個關鍵字,
可不是沒感覺的文字描述而己。
chapter 19 詳細解釋 linker 的行為, 對於初學者這太難了。看不懂先跳過吧!
我都搞不清楚這到底是入門書還是進階書了。
chapter 21 講述 makefile 讓我對 make 有了另外的認識, 我覺得很受用,
書上提供了 gcc -MM 的 makefile rule, 在大型程式中很好用。
23.6 介紹了不定個數的參數, 就是 printf 的參數用法, 可不是單純講解 va_ 那 3 個
function, 還自己實作這三個 function, 又是有點難的小節。
chpater 24 介紹了 c 標準程式庫, 還介紹了 man page 的看法。
附錄 A 講述 unicode, utf8 編碼, 短短的篇幅卻給了很基本的觀念。
官網 (作者宋杉開放這本書, 本書可在這裡取得電子版本, 這真是不簡單):
http://songjinshan.com/akabook/zh/index.html
old version: http://akaedu.github.io/book/
補充說明(Supplement):
作者: james732 (好人超)   2016-04-22 20:56:00
好像不錯,推
作者: phishingphi (hsnutontu)   2016-04-22 21:30:00
learn.akae.cn 那個連結看起來是死的(?
作者: wtchen (沒有存在感的人)   2016-04-22 21:33:00
推好文
作者: Thisisnotptt (這不是PTT)   2016-04-22 23:42:00
推 作者真佛
作者: soheadsome (師大狗鼻哥)   2016-04-23 12:01:00
這本真的很讚
作者: kyuudonut (善良老百姓)   2016-04-23 21:09:00
我還在ELF,我好弱QQ
作者: HowLeeHi (處處留心皆正妹)   2016-05-05 15:52:00
這2本真的是好書

Links booklink

Contact Us: admin [ a t ] ucptt.com