Archives

21st Century C, 2nd Edition – Ben Klemens

這本書不適合學寫程式的初心者看,不過今時今日有更多更新更易學的語言,相信沒有初學者會揀學從C開始下手。這本書寫給兩類人看,一類是我這種十幾年前學過下C,放低很久現在要更新知識,另一類是有其他程式語言底子的人。這本書與我初學寫程式那個年代的課本很不同,其編排完全輕視C語言的文法和格式(syntax)。其他傳統C課本大半本書講syntax,呢本書就用最尾一個附錄單簡介紹下就算。反正那些東西不用死背,可以落手落腳時才邊做邊學,有IDE auto-complete又有網上參考,又真係唔應該浪費墨水。

這本書一開始花三分一本書講與C沒有直接關係的東西,不過現今寫C程式一定有用的工具軟件,如gcc,git,makefile等,還有一些更深入的Linux題材如整package,乜野係process,點寫dynamic library等。以前學寫C,課本連如何compile個program也不會教你,一開始老鼠拉龜不知如何下手。學這些東西說難不難,說易不易,不過這本書把它們放在一起,有齊從零到軟件出街一條龍所有必要步驟,十分方便。課本講的主流opensource應用工具,不過知道工具的類別和名稱後,不艱search更加好用的point tool。

好了,論到主菜上碟,終於入正題講C。一黎就出最堅係,講pointer。夫pointer者,C之上乘內功心法也,只要精通了pointer,你就等於學了C的精髓,可以寫出超快的程式,pointer是其他程式語言所沒有,最接近assembly的存在。接下來作者講新一代C-99的語法,主力指出上古時代那些課本教壞人的寫法。嚴格來說不可說教壞人,只是當年的compiler有技術限制,不能不那樣寫code,現在的compiler強勁多了不再有那些限制,不求甚解的人照跟舊寫法,其他有更方便更易讀的寫法。最後三分一本書不知作者玩野定show off,教了大一堆超強macro,可以讓C模仿新一代高階程式語言,連OOP都可以在C做到,只能寫個服字給他。不過我始終是舊時代的C人,對macro十分抗拒,因為macro好鬼死難debug。其實點解要用macros寫那麼複雜的語法呢,為什麼不索性用C++算數?

讀過了這本書,就升級成為新一代的C人,識寫新C。

Leave a Reply