【盛世推薦】 Linux相關圖書選購指南(轉)

ba發表於2007-08-16
【盛世推薦】 Linux相關圖書選購指南(轉)[@more@]轉自蘭大開源社群

工欲善其事,必先利其器。
  掌握一門技術,興趣是最好的老師,而書就可能是前進的導航燈。計算機圖書的出版情況,從一個側面能夠反應一個國家的計算機發展水平。比如臺灣,其資訊業比大陸發達的多,其計算機書籍也明顯走在了大陸的前列;幸運的是最近幾年大陸的計算機書籍的出版正迎頭趕上。國外計算機和計算機圖書的水平明顯高於國內,很多出版社與國外著名的出版社合作,引進外文版的圖書,例如中國電力出版社引進的Oreilly的圖書,華中理工出版社引進的臺灣候俊傑先生的圖書,對於讀者來說都是振奮人心的好訊息。
  而計算機圖書出版的蓬勃發展也給讀者帶來另外一個問題:現在的計算機圖書可以用浩如煙海來形容,在書店可謂是看花了眼,其質量肯定參差不齊,而且面對不菲的價格,該如何找到自己需要的書籍,如何有效地選擇自己需要的書籍呢?讀者選擇書籍不免會碰到以下的問題:
1. 該選擇哪個出版社?
  國內計算機圖書口碑比較好的幾個出版社有:清華大學出版社、電子工業出版社、人民郵電出版社、機械工業出版社。清華大學出版社是老牌的計算機圖書出版社,它是國內出版原著計算機圖書最好的出版社,其出版的影音版的外文書籍也值得稱道。機械工業出版社在我的印象中是從1997年開始大力出版計算機圖書,現在已經取得了顯著的成效,其屬下的華章公司的網站
2. 選擇中文版還是英文版
  這個問題的答案很簡單,如果有引進的英文版,讀者的英文功底又足夠的話,就不用考慮中文版了。這並非什麼崇洋媚外,實在是一種無奈。計算機水平是英語語系的最高,其資料和文件大部分(大概70%)都是英文的,想在行業內立足和發展,就不可能避免英文的問題。而且國內出版的計算機圖書,如果是原著,很多質量還是可以的;但是有些書籍的質量與國外著名出版社出版的圖書還是有一定差距的。如果是譯著,恐怕從事過相應工作的人都會明白,信、達、雅這三個字並非如此簡單,真正能做到這三個字的譯著恐怕鳳毛麟角。而且加上引進、翻譯、出版的各個環節,引進的圖書恐怕要比原版圖書滯後一年的時間。當然,在外文圖書購書渠道不暢通、讀者的經濟承受能力和外文水平有限等情況下,原著、譯著都是很好的選擇。
3. 如何選擇作者、譯者
  技術上的大牛未必能寫出好書,但是好的作者肯定是技術的權威。就像W.Richard Stevens的一樣,其三卷本的《TCP/IP詳解》、兩卷本的《UNIX網路程式設計》以及《UNIX環境高階程式設計》高階程式設計,全都是經典的傳世之作。
譯著的質量和原著的質量以及譯者的水平都有很大的關係,蹩腳的譯者翻譯的書籍會增加閱讀的難度,甚至曲解原著的意思。臺灣候俊傑先生(
  作者和譯者的選擇,只能靠平時的經驗積累和別人的推薦了。
4. 其他相關內容
  書籍的讀者適用物件。每本書籍都有自己特定的讀者物件,讀者應該根據自己的實際情況適當地選擇需要的圖書。就像是清華大學出版社出版的譚浩強編寫的《C語言程式設計》一書,照樣有人說它是垃圾。是的,對於那些對於C語言瞭若指掌的那些人來說,該書就可以當成垃圾扔到一邊了;但是對於新手學習C語言來說,這本書堪稱是相當經典的教材了。
  書籍的厚薄。書是越厚越好麼?有些讀者會以為書越厚內容可能就越充實,書也就越權威;事實不盡其然。能深入者才能淺出,真正好的書籍並不需要大塊頭來裝點自己的門面,能用簡單通俗的語言深入淺出的把道理說明白,才是上選。動輒上千頁的書,多久能看完都是個問題,這種書只適合作為技術手冊,需要的時候搬來查一查。當然,要把內容詳實地介紹清楚,還是需要一定的篇幅的。
  書籍的版次。從某種意義上來說,一本書的再版次數就反應了該書受歡迎的程度;至少也是再版修訂過原來的錯誤了。計算機技術的發展可以用日新月異來形容,除了一些經典的介紹理論或基礎的教材,讀者應該儘量選購新版的書籍。
  書籍的多寡。並非手裡面的書籍越多越好,這可能是讀者的一個誤區。就某一個專題來來說,可能有很多書都在講解,但是在某一個階段,適用於你的書有一本就足夠了。在選書的時候就應該自習選擇,拿到書後應該融會貫通;自己水平提高了,就可以換層次更高的書來看。不要妄想一本書裡面會介紹所有的內容,這樣的所謂大全只能是蜻蜓點水,讓你全都一知半解。

  下面我們就Linux方面的圖書做一個簡單的介紹,希望能對讀者選購圖書有所幫助。(由於書籍實在太多,很多筆者也沒看過,其內容和質量不敢妄加評論。) Linux從嚴格的技術定義講,Linux指的是開放原始碼的Unix類作業系統的核心。然而,目前大多數人用它來表示以Linux核心為基礎的整個作業系統。Linux是一個自由的、開放的作業系統,其軟體的釋出和使用遵循GPL,現在在伺服器、嵌入式應用等方面有突出的表現。Linux本身和Unix有千絲萬縷的聯絡,其原理、應用有很多相通之處,因此可以觸類旁通。
1. 系統安裝和使用
  在早期眾多的Linux發行版本中,最有影響的要數Slackware。當時它是最容易安裝的Linux發行版本,在推廣Linux的應用中,起了很大的作用。Linux文件專案(LDP)就是圍繞Slackware釋出寫成的。目前,Red Hat發行版本的安裝更容易,應用軟體更多,已成為最流行的Linux發行版本;而Caldera則致力於Linux的商業應用,它的發展速度也很快。國內中文的發行版本有TurboLinux、紅旗(RedFlag)Linux、藍點(BluePoint)Linux、HappyLinux以及Xlinux。每種發行版本有各自的優點和弱點,但它們使用的核心和開發工具則是一致的,因此書籍的內容大部分也是相通的,讀者在選購圖書入門級的圖書是沒有必要限定於哪個發行版本。
  對於初學者我給大家推薦中國電力出版社2000年3月出版出版的《Linux權威指南》(第三版),原書由O'Reilly 出版,Matt Welsh,Matthias Kalle Dalheimer,Lar Kaufman著,洪峰譯。該書內容設計系統安裝,常用命令,系統管理,檔案系統管理,Xwindow的定製和使用以及部分網路的內容,比較適合初學者使用。另外給大家介紹一本適合初學者使用的書,中國青年出版社引進的《精通Linux入門、管理與應用》(位元文化編著,臺灣文魁資訊股份有限公司出版),這個書雖然塊頭很大(680頁),但是排版比較松,內容深入淺出,比較適合我這樣的懶人看。
  Linux上目前流行的兩種GUI(圖形使用者介面)是KDE和GNOME,分別給大家推薦《實用KDE教程》(作者: Dennis E.Powell,譯者: 張輝清華大學出版社,2000-11-1)和《輕鬆學用GNOME》(作者: David D.Busch,譯者: 徐曉青 王江紅 閻慧娟,電子工業出版社,2000-11-1)。這兩本書分別介紹了KDE和GNOME的安裝、使用,適合初學者使用。
  實際上Linux系統中的圖形花引用軟體並不比Windows遜色,比如GIMP(推薦書籍:《GIMP權威指南》,作者: Olof S.Kylander Karin Kylander,譯者: 唐新桂 羅阿理 侯增廣 馮興元,機械工業出版社,2000-10-1)就可以和Photoshop抗衡;StarOffice是Linux系統中可以與Windows系統中的Office相媲美的軟體,可惜國內市場上介紹StarOffice的書籍似乎沒有。
  Linux上相當重要的一個部分就是網路,如果脫離開網路,其價值就大為降低了,以上書籍中對網路都有簡單介紹,我們將在後面給出更詳盡的書目進行介紹。

2. 系統管理和網路應用
  前面我們已經說過,Linux最主要的一個應用就是伺服器,其穩定的效能、強大的網路功能深得使用者的青睞。此處為大家推薦《GNU/Linux高階網路應用服務指南》(作者: LinuxAid網站,機械工業出版社,2001-1-1)。該書由國內非常出名的Linux的網站LinuxAid( Web伺服器、FTP伺服器、郵件伺服器、域名伺服器、代理伺服器、防火牆、路由器、撥號伺服器、檔案伺服器、新聞組伺服器、DHCP伺服器、LDAP伺服器、群集伺服器、BBS、CVS以及系統安全軟體的介紹。本書既適用於初級使用者,也適用於高階使用者。另外一本適用於中、高階使用者的書是《Red Hat Linux系統管理員手冊》(Mohammed J.Kabir著,魏永明、鄭翔、孫登峰譯,電子工業出版社,2000-7)。對於Solaris,推薦機械工業出版社的《Solaris系統管理員指南》(Janice Winsor著,王無敵等譯,機械工業出版社,2000-1)和《Solaris高階系統管理員指南》(Janice Winsor著,王無敵等譯,機械工業出版社,2000-2)。
  Linux上面的很多服務應用功能相當強大,種類繁多。看看《GNU/Linux高階網路應用服務指南》的目錄就可以初見端倪了,但是這些服務的配置和使用並非一蹴而就,每個專題都會有大塊頭的書籍來介紹,高階使用者應該轉而看這些書了,以下我們就個別方面介紹一些比較好的書籍。
  Apache的功能相當強大,幾乎是目前應用最廣泛的Web伺服器。與之相關的優秀的出版物也有不少,例如《Professional Apache》(Peter Wainwright著,Wrox Press Inc,1999-9)、《Linux Apache Web Server Administration (Linux Library)》(Charles Aulds著,Sybex,2000-9)等,國內市場能夠見到一本好書的是《The Definitive Guide》(Ben Laurie、Peter Laurie著,O'Reilly,1999-2,中國電力出版影印,中文名《Apache 權威指南(第二版)》)。該書除了介紹Apache的安裝、配置、使用之外,還介紹了Apache的一些API,以及如何編寫Apache的模組(module),對系統管理員和程式設計人員都很有幫助。中文介紹Apache的圖書給大家推薦《Apache Server實用全書》(英文原書名: Apache Server Unleashed ,作者: Rich Bowen Ken Coar 等,譯者: 羅四維 等,電子工業出版社,出版日期: 2001-2-1)。
  Internet上每個進行通訊的主機都要有自己的IP,但是人們更經常的是使用域名來訪問主機,於是DNS就應運而生,實現IP地址和域名的轉換。隨著Internet的飛速膨脹,靠一臺伺服器來維護域名資訊已經不可能,現在所依賴的BIND就是一種分散式資料庫,它允許網路大規模無限制地增長下去。介紹DNS比較經典的書有《Linux DNS Server Administration (Craig Hunt Linux Library)》(Craig Hunt著,Sybex,2000-1)和《DNS and BIND (4th Edition)》(Paul Albitz、Cricket Liu著,O'Reilly,2001-4);後者的第三版中國電力出版社已經引進,中文名為《DNS與BIND》(雷迎春、陳世林、楊傳軍譯,2000-11)。
  Linux中的郵件伺服器採用的最多的是Sendmail,經典著作有《Linux Sendmail Administration (Craig Hunt Linux Library)》(Craig Hunt著,Sybex,2001-2)和《Sendmail》(Bryan Costales,Eric Allman著,O'Reilly,1997-1)。前者詳盡地介紹了Sendmail的原理、安裝、配置及安全性問題;後者的作者Eric Allman就是Sendmail的開發人員,中國電力出版社已經出版了該書的影印版,中文名為《sendmail》第二版(2000-5),上下兩卷。
  Linux使用Samba和Windows之間實現共享訪問,解釋Samba比較好的書有《Using Samba》(Robert Eckstein,David Collier-Brown著,O'Reilly,1999-9)和《Linux Samba Server Administration》(Roderick W. Smith著,Sybex,2000-9)。二者都詳細介紹了Samba的安裝、配置、使用及安全性和備份、恢復的內容,前者已經被Samba小組正式採用,中國電力出版社已經引進並翻譯出版了該書,中文名為《實戰Samba》(薛彬等譯,2001-1)。
  其他方面也都有專門的專著進行介紹,比如介紹NFS的《Managing NFS and NIS, 2nd Edition》(Hal Stern, Mike Eisler, Ricardo Labiaga著,O'Reilly,2001-7)和《Linux NFS and Automounter Administration》(Erez Zadok著,Sybex,2001-5),介紹SSH的《SSH, the Secure Shell : The Definitive Guide》(Daniel J. Barrett, Richard Silverman,O'Reilly,2001-2)等都是相當不錯的書,讀者可以根據需要自行選擇。

3. 程式設計及開發應用
  Linux的核心主要使用C語言編寫而成,少量地使用了組合語言,其編譯器採用gcc。因此C語言是Linux系統中相當重要的程式語言。都Linux程式設計很陌生的讀者可以翻閱以下《GNU/Linux程式設計指南》(K.Wall M.Watson M.Whitis著,王勇、王一川、林花軍、甘泉譯,清華大學出版社,2000-6),該書對程式設計工具(GNU C、GNU Makefile、Autoconf、RCVS、Emacs)、系統程式設計(I/O操作、檔案操作、程式、執行緒、記憶體管理)、程式間通訊和網路程式設計(管道、訊息佇列、共享記憶體、訊號燈、Socket、裝置驅動程式)、使用者介面程式設計(ncurses、Xlib、Motif、GTK、Qt、Java、OpenCL)、Shell程式設計及GDB除錯工具都有簡要的介紹,是瞭解Linux程式設計環境的一本好書,但是這本書的確是一本指南,每種技術都淺嘗輒止,希望深入學習該技術的讀者需要選擇適當的書籍來學習。
  Linux中最基本的程式設計是Shell程式設計,推薦《LINUX與UNIX Shell程式設計指南》(David Tansley蓍,張春萌等譯,機械工業出版社,2000-6),該書詳細介紹了shell程式設計技巧,各種UNIX命令及語法,還涉及了UNIX下的文書處理以及少量的系統管理問題。
  系統程式設計推薦《UNIX環境高階程式設計》(W.Richard Stevens,尤晉元等譯,機械工業出版社,2000-2),就是著名的APUE。本書對I/O、程式、訊號、程式間通訊的介紹都相當深入,一直以來被譽為UNIX程式設計的"聖經",同樣適用於Linux,翻譯質量也屬上乘。
網路程式設計推薦W.Richard Stevens的另外一套書:《UNIX網路程式設計》(清華大學出版社引進),大師的經典之作,讚美之詞溢於言表。讀者也可以參看國內出版的《Linux網路程式設計》(李卓桓等著,機械工業出版社,2000-1)。要想詳細瞭解網路底層的知識,請看W.Richard Stevens的《TCP/IP詳解》(三卷本,機械工業出版社)和DOUGLAS E.COMER的《用TCP/IP進行網際互連》(三卷本,電子工業出版社),這絕對是網路參考書中的經典。
  使用者介面方面的程式設計工具比較多,ncurses是在終端下開發圖形介面的有力工具;Xlib是構建Xwindow的基礎,著名的KDE和GNOME分別就是使用QT和GTK開發的。這方面國內出版的書籍比較少,知道的有《Linux應用程式開發指南:使用Gtk+/Gnome庫》(許宏松等著,機械工業出版社,2000-7)和《GNOME/GTK+程式設計寶典》(Arthur Griffith著,吳向峰、王景中、江繼軍等譯,電子工業出版社,2000-12)。講解QT的書有《Programming With Qt》(Matthias Kalle Dalheimer著,O'Reilly,1999-5),國內人民郵電出版社最近出版了一本《24小時精通QT程式設計》。
  目前Linux廣泛使用的程式設計工具還有Perl、PHP等。Perl是一種解釋性語言,從某種程度上來說可以替代CGI,比較好的書有《Programming Perl》(Larry Wall, Tom Christiansen, Jon Orwant著,O'Reilly,2000.1)、《Learning Perl》(Randal L. Schwartz, Tom Phoenix著,O'Reilly,2001.7),目前這兩本書都已經出版到第三版,中國電力出版社已經引進翻譯了後者,中文名為《Perl教程》(張大江譯,2000-6)。PHP與Apache結合,在Web應用方面表現了巨大的潛力,推薦兩本適合中、高階讀者使用的書:《PHP 4.0 Web開發技術指南》(Tobias Ratschiller Till Gerken著,陳軍、龍浩、李向榮譯,機械工業出版社,2001-1)和《PHP4.x企業級Web應用與開發》(廖若雪等著,機械工業出版社,2001-4)。
  經驗豐富的程式設計師都會知道原始碼版本控制的重要性,Linux使用CVS來解決版本控制的問題。《CVS 開源軟體開發技術》(Karl Fogel著,肖虎勤、陳軍等譯,機械工業出版社,2001-6)詳細介紹CVS 的發展歷史、基本概念、高階應用等內容。
  Linux對資料庫應用的支援並不比Windows遜色,全部支援MySQL、Oracle、Informix、Sybase、DB2、Progress。《Linux環境資料庫管理員指南》(David Egan著,鐘鳴、田曉濤譯,機械工業出版社,2001-1)全面地介紹了各種資料庫在Linux下的安裝、配置以及簡單應用,這是唯一一本全面介紹Linux下資料庫應用的書;可以想象的是,一本書裡面全方位地介紹這麼多資料庫的內容,對資料庫本身的知識介紹肯定不夠,專著於資料庫開發的讀者需要結合所使用的資料庫選擇適當的圖書,例如介紹MySQL的《MySQL網路資料庫指南》(Paul DuBois著,田曉濤等譯,機械工業出版社,2000-6)。
  如果讀者希望瞭解核心的構造,不免會涉及的核心模組程式設計的問題,LKMPG(Linux Kernel Module Programming Guide)是LDP專案之一,一份比較權威的文件,其中譯版收錄在《Linux程式設計白皮書》(朱珂等譯,機械工業出版社,2000-4)一書中,可惜的是原來是針對2.0.*版本的核心編寫的,後來對2.2.*版本的核心進行了擴充,但是現在2.4.*版本的核心有和很大的改進,希望作者能早日更新本文件。
  在介紹了這麼多程式設計系列的圖書之後,最後再給大家推薦兩本:《Beginning Linux Programming》(Neil Matthew, Richard Stones著,Wrox Press Inc,1999-9)和《Linux程式設計權威指南》(於明儉、陳向陽、方漢著,機械工業出版社,2001-4)。前者浙江大學曾組織影印過一批,從內容和涉及深度來講,這本書可以看做是APUE的"入門"級版本,APUE雖然是學習Unix程式設計的經典,但對於初學者來說,顯得太深,啃起來比較吃力,在這種情況下,BLP一書就很有閱讀價值了。這本書從Linux程式設計的基本概念講起, 覆蓋了Shell程式設計、檔案、環境、終端控制、Curses、程式與執行緒、管道、SystemV IPC、socket、Tcl/Tk、gtk+、Perl、HTML/CGI、裝置驅動程式等Linux程式設計中常用的內容, 並介紹了make、版本控制等常用工具和Linux下C程式的除錯技術。如果讀者具有一般的C程式設計經驗, 但以前沒寫過Linux程式,那麼這本書可以幫助你很快邁入Linux程式設計的門坎。同時, 由於書中大多數章節內容嚴格遵循POSIX、XPG4I3(Unix98)、SVID等業界標準,因此也適合於學習一般的Unix程式設計。《Linux程式設計權威指南》的第一作者於明儉是chinput的作者,對Linux的國際化、本地化和中文化有很深入的研究,因此本書的第六章"國際化和中文化程式設計"應該是相當權威的。
4. 作業系統原理
  其實選擇作業系統原理的書很簡單,認一個人的名字就夠了,Andrew S.Tanenbaum,他的《作業系統:設計與實現(第二版)》(兩卷本,王鵬、尤晉元、朱鵬、敖青雲譯,電子工業出版社,2001-4)、《現代作業系統》(陳向群譯,機械工業出版社,1999-10)、《分散式作業系統》(陸麗娜、伍衛國、劉隆國等譯,電子工業出版社,1999-12)全都是經典之作,此處就不再介紹了。
5. 核心和原始碼分析
  首先介紹的一本應該是《萊昂氏UNIX原始碼分析》(John Lions著,尤晉元譯,機械工業出版社,2000-9)。該書上篇為UNIX V6的原始碼,下篇是萊昂先生對UNIX作業系統版本6原始碼的詳細分析。該書從1976年開始一直就是駭客內部流傳的一部經典教材,直到1996年才得以正式出版。雖然內容很多涉及PDP11的內容,相應的彙編指令沒有相應的基礎很難看懂,但是本書的內容、思想永遠都值得購買、學習。作者除了對原始碼進行註釋、分析之外,還提出了很多改進意見,china-pub把本書譽為曠世奇書實不過分。
對於Linux,國內出版了幾本不錯的書,其中最好的應該是陳莉君編著的《Linux作業系統核心分析》(人民郵電出版社,2000-8),該書對Linux核心進行了較全面的分析,既包括了對程式排程、記憶體管理、程式間通訊、虛擬檔案系統、裝置驅動程式及網路子系統的分析,也包括對Linux整體結構的把握、Linux啟動過程的剖析以及Linux獨具特色的模組機制的分析與應用等。該書在臺灣業界都廣泛流傳著影印或影印的版本;不足之處是內容深度不夠,對SMP(對稱多處理)等都沒有介紹。
  譯著裡面值得一提的是機械工業出版社出版引進出版的姊妹篇:《Linux核心原始碼分析》(Scott Maxwell著,馮銳、刑飛、劉隆國、陸麗娜譯,2000-6)和《Linux IP協議棧原始碼分析》(Stephen T.Satchell、H.B.J Clifford著,劉隆國、翟剛、陸麗娜、辛煒譯,2000-11)。前者針對當時最新的核心(2.2.5),分析了系統初始化、系統呼叫、訊號、中斷和時間、程式和執行緒、記憶體、System V IPC、對稱多處理等方面的內容。後者則是針對當時廣泛被採用的2.0.34的核心的網路部分進行分析,較全面地介紹了ISO網路模型、API 、IP、ICMP以及ICP 等核心網路實現,對它們的程式碼進行了詳盡的分析。但是在新版本的核心中(2.4.*)網路部分已經進行了相當大的改動,作者的第二版就是針對2.4.*版本的核心進行分析的。
  今年有一件令Linux的技術愛好者振奮人心的事情,就是《Understanding the LINUX Kernel: From I/O Ports to Process Management》(Daniel Pierre Bovet, Marco Cesati著,O'Reilly,2000-9)一書的出版,該書是迄今為止分析Linux核心最好的一本書;Solaris也出版了一本經典之作《Solaris Internals: Core Kernel Architecture》(Jim Mauro, Richard McDougall著,Prentice Hall PTR,2000-10)。這兩本書已經分別由中國電力出版社和機械工業出版社引進,近期都會出版中譯版。
  有關核心,網上公開的一份相當好的文件是LKI(Linux Kernel Internals),可惜的是還沒有完成。另外有一本《Linux裝置驅動程式》(Alessandro Ruibini著,LISOLEG譯,中國電力出版社,2000-4)詳細地介紹了Linux下開發裝置驅動程式所涉及的內容,包括建立驅動程式並裝載模組、完善字元裝置、塊裝置和網路裝置驅動程式、除錯驅動程式、計時、記憶體管理和DMA、中斷、可移植性事項、外部裝置互連(PCI)、核心內幕的導覽,是這方面不可多得的好書。可惜的是寫第一版當時所採用的核心開發版本才到2.1.43,現在的2.4.*已經有了很大的改進,O'Reilly已經在今年6月份出版了本書的第二版,內容已經包含了2.4.*的改進,據說中國電力出版社已經引進了該書。
  還有很多優秀的圖書,筆者可能不瞭解詳情,不能一一列出;但願這份簡要的介紹能給讀者選購圖書提供幫助。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961767/,如需轉載,請註明出處,否則將追究法律責任。

相關文章