我的Linux書架

來源:互聯網
上載者:User

 

(It is refered from:http://www.cnblogs.com/wwang/archive/2011/01/27/1944406.html)

 

工作幾年來,一直從事Linux核心驅動方面的開發。從接觸Linux到現在,讀過不少Linux方面的書籍,現把認為很不錯的一部分列出來和大家分享一下。

入門類一直認為,在一個系統上學習開發之前,首先需要熟悉這個系統的使用。鑒於天朝的國情,絕大部分人第一個接觸的作業系統就是Windows,因此對於這絕大部分人來說,如果要學習Linux開發,學會使用這個系統都是必不可少的一個環節。現在的Linux初學者是幸福的,隨著Linux案頭環境越來越易用,入門一個新的系統是非常容易的事情。雖然命令列對於提高工作效率更加有 效,但我們完全可以把熟悉命令的過程放到日常使用中進行。無論學習什麼知識,在實踐中學習都是高效而且有趣的。在這個階段,我們也未必一定需要書籍。現在 很多Linux發行版的Wiki寫得都非常詳細,在使用某一種發行版時找到相應的Wiki閱讀查詢就可以了。而且,案頭環境變化太快,關於案頭的介紹類書 籍幾乎都沒有必要看,這類書籍大多剛一出版就過時了。那入門類書籍裡哪些比較有價值呢?我比較推薦涉及的技術相對比較穩定的書。比如,Linux基本的體繫結構和命令一般都是經久不變的,甚至從上古時期的Unix開始就沒太多變化,這類書籍講解的知識也是以後大幅提高我們的生產力的基礎。比如《鳥哥的Linux私房菜》,比如《Unix Power Tools》(中譯名是“UNIX超級工具”),或者是為Linux+認證考試準備的《Linux+ Study Guide》。當然,這一類書籍其實都不必精讀,快速探索之後作為工具書備查就可以了。編程類類Unix系統的編程書籍裡,最經典的莫過於簡稱為APUE的《Advanced Programming in the UNIX Environment》(中 譯名是“Unix環境進階編程”),這本書被廣大Unix程式員(包括Linux)捧為“聖經”。借用葛大爺的廣告詞:“這就像進館子一樣,一條街上,哪 家人多我進哪家”。APUE對類Unix系統的編程介面講解的非常全面詳細,對於這本書,我們不僅要精讀,還應該放在案頭常備。但是,APUE對於Linux編程初學者似乎稍深了一點,而且很多細節在Linux中並不會用到。講述Linux編程的書籍裡,《Advanced Linux Programming》應該更加適合初學者。不要被書名中的“Advanced”嚇到,書裡的內容還是很容易理解的。看完這本書再看APUE應該效果會更好。如果要開發GUI程式,上面兩本書就無能為力了。在Linux世界裡,最常用的GUI Toolkit是GTK+和QT。GTK+的書籍並不多,線上文檔只適合查閱,並不是一個完整的學習體系。《Foundations of GTK+ Development》是其中很不錯的一本書,喜歡GTK+的開發人員可以拿來作為入門書籍。相對來說,QT的書籍就很豐富了,這和QT具有良好的跨平台能力有很大關係,QT的書籍並不只是寫給Linux程式員看的,在Windows和MAC OSX下同樣可以使用QT開發程式。比較值得一看的QT類書籍有《C++ GUI Programming with QT4》、《Foundations of QT Development》、《The Art of Building QT Applications》,這三本都比較適合QT初學者閱讀。另外,《Advanced Qt Programming》會介紹到QT一些比較進階的用法,適合有一定QT基礎的讀者閱讀。核心類對於Linux核心或者裝置驅動的開發人員,最全面最直接的學習資料一定是Linux核心代碼及其文檔。Linux核心的發布周期很短,相關書籍 的出版完全跟不上腳步。但隨著核心代碼的日益龐大,學習曲線越來越陡峭,入門者又非常需要書籍來作為指導,這確實是非常矛盾的事情。所幸,很多Linux 核心技術作家也是很勤奮的,經常會更新自己的作品。就像Robert Love,以2.6核心為藍本的《Linux Kernel Development》已經更新到第三版了。LKD是非常適合核心初學者閱讀的一本好書,對它的評價可以引用陳莉君老師的譯者序:
相對於 Daniel P. Bovet 和 Marco Cesati 的核心巨著《 Understand the Linux Kernel 》,它少了五分細節,相對於實踐經典《 Linux Device Drivers 》,它多了五分說理。可以說,本書填補了 Linux 核心理論和實踐之間的鴻溝,“一橋飛架南北,天塹變通途”。
謝謝陳老師,她的譯者序幫我引出了另外要談到的兩本經典書籍,對,就是《Understanding the Linux Kernel》和《Linux Device Drivers》。對於這兩本書,如果要挑它們的缺點,我只能說,內容有點老,很多知識點都需要更新了,除此之外,我要說的是,是它們把我帶上了核心驅動開發這條路上來,當然,還有LKD。最近,我又發現一本分析Linux核心的優秀書籍,就是《Professional Linux Kernel Architecture》。這本書我目前正在讀,寫得非常好,而且因為此書相對較新(只是相對,2.6.24核心在現在看來也很老了),沒有看過ULK的同學可以直接看這本書。工具類工欲善其事,必先利其器。進行Linux開發,相關工具還是需要熟練使用的。比如,GNU Tool Chain、自動構建工具、編輯器、版本控制工具等等。這裡有一本包羅永珍的書,叫做《Handbook of Open Source Tools》,書中介紹了各種各樣的開源工具,可稱之為開源技術的總決式。這本書試圖面面俱到,因此並不深入,粗讀即可。GNU Tool Chain參考Redhat的《The GNUPro Toolkit》已經足夠了,如果單獨把makefile拎出來,還可以參考《Managing Projects with GNU Make》。自動構建工具可以參考《Autotools》。如果您準備使用cmake,推薦cjacker的《Cmake實踐》。《Mastering CMake》據說是cmake的權威書籍,但一直無緣得見啊。說到編輯器,在Linux裡最著名的莫過於Vim和Emacs,關於這兩者的背景,可以去看看《為何Emacs和Vim被稱為兩大神器》。我幾乎沒用過Emacs,曾經在噹噹做活動時花9塊錢買了一本《學習GNU Emacs》,有這本書作為Emacs的入門我想應該夠了。Vim是我經常使用的編輯器之一(另一個是Kate,最初喜歡上Kate的原因之一就是它提供了Vim編輯模式),相關的書籍有兩本值得一讀:《A Byte of Vim》和《Hacking Vim 7.2》,但是對於初學者,首先跟著Vim內建的vimtutor練習效果會更好。Linux下的版本控制工具很多,有傳統的Subversion,也有現在非常流行分布式工具如Git等。Subversion可以參考這本《Version Control with Subversion》,Git可以參考《Version Control with Git》或者《Git Internals》或者《Pro Git》。其它除了以上幾個類別,還有一些書籍值得推介。比如《The Art of Unix Programming》,主要介紹了Unix系統領域中的設計開發哲學、思想文化體系以及社群文化等,覆蓋面非常廣。書中的一些內容和《Revolution OS》有相似之處,大家可以自己印證一下。對於這本書,我們也完全可以把它當做小說或者曆史書來看,可以躺在床上看,也可以癱在沙發上看,或者像怪怪那樣坐在馬桶上看,總之,不必一定要端坐在書桌前。《Computer Systems: A Programmer's Perspective》 很多人都推薦過,這是一本非常經典的電腦體系方面的教材。CSAPP的內容基礎全面,講解簡明扼要,易於理解,仔細讀完之後對理清電腦體繫結構甚至是 Linux核心都非常有協助的。雖然中文名被譯為《深入理解電腦系統》(這個譯名很不貼切),但相比之下,為什麼會讓人感覺國內的同類教材更加“深奧” 呢?也許,這就是作者功力的差距吧。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.