入門類
一直認(rèn)為,在一個(gè)系統(tǒng)上學(xué)習(xí)開發(fā)之前,首先需要熟悉這個(gè)系統(tǒng)的使用。鑒于天朝的國情,絕大部分人第一個(gè)接觸的操作系統(tǒng)就是Windows,因此對(duì)于這絕大部分人來說,如果要學(xué)習(xí)Linux開發(fā),學(xué)會(huì)使用這個(gè)系統(tǒng)都是必不可少的一個(gè)環(huán)節(jié)。
現(xiàn)在的Linux初學(xué)者是幸福的,隨著Linux桌面環(huán)境越來越易用,入門一個(gè)新的系統(tǒng)是非常容易的事情。雖然命令行對(duì)于提高工作效率更加有效,但我們完全可以把熟悉命令的過程放到日常使用中進(jìn)行。無論學(xué)習(xí)什么知識(shí),在實(shí)踐中學(xué)習(xí)都是高效而且有趣的。在這個(gè)階段,我們也未必一定需要書籍。現(xiàn)在很多Linux發(fā)行版的Wiki寫得都非常詳細(xì),在使用某一種發(fā)行版時(shí)找到相應(yīng)的Wiki閱讀查詢就可以了。而且,桌面環(huán)境變化太快,關(guān)于桌面的介紹類書籍幾乎都沒有必要看,這類書籍大多剛一出版就過時(shí)了。
那入門類書籍里哪些比較有價(jià)值呢?我比較推薦涉及的技術(shù)相對(duì)比較穩(wěn)定的書。比如,Linux基本的體系結(jié)構(gòu)和命令一般都是經(jīng)久不變的,甚至從上古時(shí)期的Unix開始就沒太多變化,這類書籍講解的知識(shí)也是以后大幅提高我們的生產(chǎn)力的基礎(chǔ)。比如《
鳥哥的Linux私房菜
》,比如《
Unix Power Tools
》(中譯名是“UNIX超級(jí)工具”),或者是為Linux+認(rèn)證考試準(zhǔn)備的《
Linux+ Study Guide
》。當(dāng)然,這一類書籍其實(shí)都不必精讀,快速瀏覽之后作為工具書備查就可以了。
編程類
類Unix系統(tǒng)的編程書籍里,最經(jīng)典的莫過于簡稱為APUE的《
Advanced Programming in the UNIX Environment
》(中譯名是“Unix環(huán)境高級(jí)編程”),這本書被廣大Unix程序員(包括Linux)捧為“圣經(jīng)”。借用葛大爺?shù)膹V告詞:“這就像進(jìn)館子一樣,一條街上,哪家人多我進(jìn)哪家”。APUE對(duì)類Unix系統(tǒng)的編程接口講解的非常全面詳細(xì),對(duì)于這本書,我們不僅要精讀,還應(yīng)該放在案頭常備。
但是,APUE對(duì)于Linux編程初學(xué)者似乎稍深了一點(diǎn),而且很多細(xì)節(jié)在Linux中并不會(huì)用到。講述Linux編程的書籍里,《
Advanced Linux Programming
》應(yīng)該更加適合初學(xué)者。不要被書名中的“Advanced”嚇到,書里的內(nèi)容還是很容易理解的。看完這本書再看APUE應(yīng)該效果會(huì)更好。
如果要開發(fā)GUI程序,上面兩本書就無能為力了。在Linux世界里,最常用的GUI Toolkit是GTK+和QT。
內(nèi)核類
對(duì)于Linux內(nèi)核或者設(shè)備驅(qū)動(dòng)的開發(fā)者,最全面最直接的學(xué)習(xí)資料一定是Linux內(nèi)核代碼及其文檔。Linux內(nèi)核的發(fā)布周期很短,相關(guān)書籍的出版完全跟不上腳步。但隨著內(nèi)核代碼的日益龐大,學(xué)習(xí)曲線越來越陡峭,入門者又非常需要書籍來作為指導(dǎo),這確實(shí)是非常矛盾的事情。所幸,很多Linux 內(nèi)核技術(shù)作家也是很勤奮的,經(jīng)常會(huì)更新自己的作品。就像Robert Love,以2.6內(nèi)核為藍(lán)本的《
Linux Kernel Development
》已經(jīng)更新到第三版了。LKD是非常適合內(nèi)核初學(xué)者閱讀的一本好書,對(duì)它的評(píng)價(jià)可以引用陳莉君老師的譯者序:
相對(duì)于 Daniel P. Bovet 和 Marco Cesati 的內(nèi)核巨著《 Understand the Linux Kernel 》,它少了五分細(xì)節(jié),相對(duì)于實(shí)踐經(jīng)典《 Linux Device Drivers 》,它多了五分說理。可以說,本書填補(bǔ)了 Linux 內(nèi)核理論和實(shí)踐之間的鴻溝,“一橋飛架南北,天塹變通途”。
工具類
工欲善其事,必先利其器。進(jìn)行Linux開發(fā),相關(guān)工具還是需要熟練使用的。比如,GNU Tool Chain、自動(dòng)構(gòu)建工具、編輯器、版本控制工具等等。
說到編輯器,在Linux里最著名的莫過于Vim和Emacs,關(guān)于這兩者的背景,可以去看看《
為何Emacs和Vim被稱為兩大神器
》。我?guī)缀鯖]用過Emacs,曾經(jīng)在當(dāng)當(dāng)做活動(dòng)時(shí)花9塊錢買了一本《
學(xué)習(xí)GNU Emacs
》,有這本書作為Emacs的入門我想應(yīng)該夠了。Vim是我經(jīng)常使用的編輯器之一(另一個(gè)是Kate,最初喜歡上Kate的原因之一就是它提供了Vim編輯模式),相關(guān)的書籍有兩本值得一讀:《
A Byte of Vim
》和《
Hacking Vim 7.2
》,但是對(duì)于初學(xué)者,首先跟著Vim自帶的vimtutor練習(xí)效果會(huì)更好。
其它
除了以上幾個(gè)類別,還有一些書籍值得推介。
比如《
The Art of Unix Programming
》,主要介紹了Unix系統(tǒng)領(lǐng)域中的設(shè)計(jì)開發(fā)哲學(xué)、思想文化體系以及社群文化等,覆蓋面非常廣。書中的一些內(nèi)容和
《
Revolution OS
》有相似之處,大家可以自己印證一下。對(duì)于這本書,我們也
完全可以把它當(dāng)做小說或者歷史書來看,可以躺在床上看,也可以癱在沙發(fā)上看,或者像
怪怪
那樣坐在馬桶上看,總之,不必一定要端坐在書桌前。
《
Computer Systems: A Programmer's Perspective
》很多人都推薦過,這是一本非常經(jīng)典的計(jì)算機(jī)體系方面的教材。CSAPP的內(nèi)容基礎(chǔ)全面,講解簡明扼要,易于理解,仔細(xì)讀完之后對(duì)理清計(jì)算機(jī)體系結(jié)構(gòu)甚至是 Linux內(nèi)核都非常有幫助的。雖然中文名被譯為《深入理解計(jì)算機(jī)系統(tǒng)》(這個(gè)譯名很不貼切),但相比之下,為什么會(huì)讓人感覺國內(nèi)的同類教材更加“深?yuàn)W” 呢?也許,這就是作者功力的差距吧。