[碎碎念] 入行十年記事:陪我走過十年軟體開發的好書們

今年已是投入軟體開發領域滿十年的日子,這十年來有許多的貴人,好朋友以及不知名的善人們的鼎力支持,我才有今天的小小成就,其中最不可或缺的好朋友,當推現在在案頭以及書架上的這些書籍,個人有 80% 以上的知識都是來自它們,它們有幾個特色,不片段,不偏頗,有系統且充滿作者想充份表達的精神,由這些書中我得到了很多的重要知識,以及在實務上應該要掌握的一些技巧。

今年已是投入軟體開發領域滿十年的日子,這十年來有許多的貴人,好朋友以及不知名的善人們的鼎力支持,我才有今天的小小成就,其中最不可或缺的好朋友,當推現在在案頭以及書架上的這些書籍,個人有 80% 以上的知識都是來自它們,它們有幾個特色,不片段,不偏頗,有系統且充滿作者想充份表達的精神,由這些書中我得到了很多的重要知識,以及在實務上應該要掌握的一些技巧,當然也有作者個人想法較重的書啦,不過我本人是有文字偏好的,只要自己有能力判斷是非對錯,那不論是誰的書,都不會影響到我的想法或行為。

在這裡,我想列舉一些書,這些書大多是技術書,但它在重要的時刻給我關鍵的知識以及想法,在不同的時空中給了我無形的幫助,不過因為我沒有特別依年份排序,所以就當我只是純列舉,不用刻意在排序上做文章囉。另外,本文並不是書評,只是分享一下成長歷程中所讀過的重要書籍而已,不用對內容太過關心。

(PS: 圖片均取自網路,僅供本文的書籍圖示用,若有不當請通知,我會立刻下架)

1. 自己動手裝電腦書系 (鄧文淵策劃/柯志賢編著,松崗出版社出版)

這本書是在我剛要入門時買的第一本電腦書,當時是 Intel 468DX2-66 當道的 1994 年,而 Pentium 還只是只聞樓梯響的階段,為了要對電腦的硬體多一點了解,而且在書店翻閱時覺得這本書的文字表現很幽默,所以就購入本書,這本書是被我翻爛的其中一本,我一開始的硬體知識都是來自這本書,包括 CPU, RAM, HDD, FDD, CD-ROM, IDE, SCSI, 音效卡, 顯示卡, ... 等等,後來在購入第一台電腦後,又剛好適逢本書的升級版出書,所以我也花了不少錢升級這本書。當時的書價不像現在那麼貴,但以當時仍在高職唸書的我而言著實是一個不小的開銷啊 ...。

這本書後來也有持續的改版,不過因為內容幾乎大同小異,而且書上所說硬體的規格多半都由雜誌上有介紹,所以我就不再追版,後來 DIY 風潮起來以後,許多 DIY 電腦書冒出來之後,這本書就逐漸的被淹沒在書堆中了,而我自己典藏的三本書也毀於 2001 年 7 月 11 日的七一一水災中,甚是可惜。

 

2. 活用 DOS 6.2 (鄧文淵/柯志賢編著,松崗出版社出版) 以及快快樂樂學 DOS (鄧文淵/李淑玲編著,松崗出版社出版)

說真的,一個剛入門的毛頭小子,在沒有 User Manual 或是 User's Guide 的情況下,怎麼玩的了 DOS 那種文字環境?當時新電腦購入時,店員也只教了怎麼開機以及使用 Windows 3.1 而已,DOS 幾乎都沒教,而為了要搞懂 DOS 這個大玩意,只能再去書店挖寶了,看了好幾本 DOS 的書,最後選擇了活用 DOS 6.2 (新增功能篇),在練習 DOS 指令時主要看的就是這本書,但是這本書只教了 DOS 6.2 的新指令,並沒有教一些既有的指令,所以又加買了一本快快樂樂學 DOS,當時快快樂樂學書系在書店總是雄霸一方,有什麼 ... dBase, PE2, 倚天中文, Lotus, 電腦入門等等,可說是入門書的首選之一啊。

因為這兩本書,我學到了怎麼操作 DOS 的系統管理指令,以及如何編寫 CONFIG.SYS 與 AUTOEXEC.BAT 指令,可惜我學到這些東西不到一年,Windows 95 就出來了 XD。

 

3. 活用記憶體書系 (基礎篇,QEMM386篇,鄧文淵/柯志賢編著,松崗出版社出版)

這兩本書也是在書店中無意間翻到的,在 1995 年初,DOS 6.22 還盛行的當下,有時在使用 ET3+DW5 或 ET3+PE2 編修文字時很容易出現記憶體不足的訊息,因為 640KB 的記憶體被吃光了,當時我也玩過 DOS 的遊戲,大家都知道 DOS 遊戲要跑起來是要吃不小記憶體的,如果沒辦法把記憶體弄大的話有些應用程式根本跑不起來,後來在活用 DOS 6.2 那本書學到一些記憶體管理的指令後,再由這兩本書充實一些缺少的知識,像 HMA, EMM386, LOADHIGH 這種指令,以及一些系統最佳化的概念,像 Disk Cache (SMARTDRV.SYS, SMARTDRV.EXE) 的觀念,基礎篇這本書仍保留在我的書架上。

這本書的 QEMM-386 版本都圍繞著 QEMM (Quarterdeck Extended Memory Manager) 的功能,雖然它很神,但一套數千元的軟體我當時根本買不起,只好就當閒書來看,後來也送給二手書商了。

編按:後來我確實也玩到了 QEMM386,但那時是 Windows 98 出來以後的事,所以根本也無用武之地了。

 

4. Windows 工程師手冊 (汪仲甫著,旗標出版社出版)

商品圖片

這本書是真正帶領我進入軟體開發領域的書,但它其實不那麼技術。

它的內容其實是說明當時軟體開發環境,而可能作者當時是和微軟有密切合作,所以軟體開發環境都是以微軟為主,像是當時台灣微軟的軟體工程師所用的電腦等級啦,微軟在開發人員這部份的支援啦 (ex: MSDN),一個開發環境應該要有怎麼樣的配備啦,... 等等,但其實這本書會吸引我的地方是在後面的 ACME Setup Toolkit (當時微軟軟體的安裝程式製作工具),裡面其中有一項是當時 Visual C++ 4.0 的 Microsoft Developer Studio (IDE),我當時也想辦法去弄到這些軟體來測試 (當然是只有 Visual C++ 4.0...),慢慢的就開始對軟體開發領域產生了好奇心。

這本書依然在我的書架上,偶而也會翻一翻,回味當時的年代。

 

5. 王國榮的 Visual Basic 6.0 書系 (王國榮著,旗標出版社出版)

其實我一開始學的是 C 和 C++,我也買了兩本關於 C 和 C++ 的書,但真的苦於基礎知識的不足 (當時沒人跟我說有恐龍本和白算盤可以看),所以我後來決定由 Visual Basic 來入門,最早的時候我買的是 [Visual Basic 入門/進階範例集],但這本書範例很多,但很少 step-by-step 的操作,以一個新入門的人來說讀起來異常吃力,所以後來我改買王國榮的 Visual Basic 書系,這幾本書對入門者就很有親和力,有 step-by-step 以及需要注意的地方,而王國榮老師之於 Visual Basic 就像章立民老師之於 FoxPro 一樣,在 Visual Basic 界有著崇高的地位,他寫的書真的是遍布台灣的 Visual Basic 程式圈長達數年,就連 2004 年我開始在微軟論壇活動時,也都看的到和書中一模一樣的程式碼在論壇中出現,可見王老師的影響力有多大。我的 Visual Basic 的基礎概念都是來自這個系列的書,也拜這系列的書之賜,我有撰寫出一些簡單的應用程式。

後來在學習 ASP 時,我也買入了 ASP 網頁製作教本,這本書也承襲了 Visual Basic 書系的文字與排版風格,對初學者的幫助仍舊很大,雖然我不是以這本書入門 ASP,但仍能感受到作者的用心。但可惜的是作者後來撰寫的 ASP+ 以及 ASP.NET 網頁製作教本,太過於以 ASP 的角度來撰寫 ASP.NET 的範例,所以那本書也成為我不推薦的 ASP.NET 初學書籍之一,有點可惜。

 

6. NT 動態網站速成班,NT 網站資料庫入門速成班,IIS 4.0 超級網站速成班 (周世雄著,松崗出版社出版)

  

在真正進入 Visual Basic 之前,我最早接觸的 Visual Basic 語言家族,其實是 VBScript,當時 Windows NT 4.0 才剛出來,而剛好當時我正在轉換跑道 (簡單的說就是窩在家當米蟲啦),當時無意間在書店中翻到 NT 動態網站速成班這本書,而在 1996-1997 年間,Internet 剛好開始起飛,.com 泡沬化還沒發生之前,許多開發 Web 應用程式以及製作網站的書不斷出現,但大多都是 Perl, CGI 這些平台,它們都有一個共通的特性,就是 C-style,而 VBScript + ASP 是當時初學者比較容易接受的語言,而這本書的文字也剛好合我的意,所以就買它回來練習,一開始是用 Personal Web Server,後來受不了想辦法弄到一套 Windows NT Server 4.0 來架設真正的網站 (當然只有在本機啦),由 ASP 的五大物件開始練習,一直到 ADO 的物件操作以及資料庫存取,而一開始我只有用 Access,後來也是想辦法弄到一套 SQL Server 6.5 來架資料庫伺服器,想當然,一台 Pentium 100, 16MB RAM, 850MB 硬碟的主機速度能有多快 ...。

而在 1998 年左右,Windows NT 4.0 Option Pack 推出,挾帶 IIS 4.0 以及 ASP 2.0,周老師也改版了他的書,以 IIS 4.0 為主撰寫了 IIS 4.0 超級網站速成班一書,加入了 ASP 和 ADO 的新增功能,而經過這三本書的 ASP 洗禮,我的 ASP 基本功才確立,對日後報考 VB6.0 Web Development 的 MCP 考試有極大幫助,而以 ASP 開發應用程式這個專長也成為我退伍後的第一份工作。

 

7. Microsoft Press 的 Visual Basic 6.0 書系

如果經歷過 Visual Basic 6.0 時代的開發人員,應該會對許建志老師不陌生,因為他是當時的知名講師,也翻譯了數本 Visual Basic 6.0 的重量級著作,像是 Programming Components with Microsoft Visual Basic 6.0 以及 Programming Distributed Applications with COM+ and Microsoft Visual Basic 6.0,這兩本書在使用 VB 6.0 開發分散式應用程式以及以元件為基礎 (Component-Based) 的應用程式上有很多著墨,以及一些在實務上會需要了解的知識。而 Advanced Visual Basic 6.0 則是說明了 VB 6.0 的高階應用以及開發方法,以及在軟體團隊開發時的一些概念和軟體工程的些許知識 (ex: Coding Standards),很適合 VB 6.0 開發人員建立一些軟體開發上的必備知識。而 Visual Basic 6.0 Developer's Workshop 則是著重於應用技巧,但如果對 VB 6.0 不熟的話很容易看不懂。

其實還有像是 Mastering Visual Basic 6.0 的開發人員訓練課程以及 Training Kit 等書,但它們的重要性可能不會比這四本書要來的重要,這也是我接觸的首批實戰型的書籍。

 

8. COM 元件應用程式設計實務 (Designing Component-Based Applications, Microsoft Press)

這本書是我看過當時的實戰式書籍中最好的一本了,它不但是介紹了當時的 Microsoft Windows DNA (Distributed interNet Architecture),也介紹了相關的 Microsoft 平台技術,包含當時的 Windows 2000, MTS, COM, COM+ 和 SQL Server 等等,同時它也完整的展示了一個 3-tier Web Application 開發的過程 (以 Visual Basic 6.0 和 Visual C++ 6.0 介紹),由需求,設計,開發資料層,開發商業邏輯層以及開發展示層等都有介紹,這本書在我準備 MCSD 的 Analyzing Requirements and Defining Solution Architecture 考試時發揮很大的作用,而它也是我的系統分析最早的教科書,像是資料庫正規化,塑模以及架構等知識都是來自本書,而且就算是過了這麼多年,這本書所教的知識仍然適用於 .NET 環境。

老實說,就算到了現在,我也還無法在中文書中找到可以和本書比擬的實戰型書籍 (台灣市場對這種書向來是沒有胃口的)。

 

9. 侯捷老師書系 (官方網站:http://jjhou.boolan.com/)

vc40.jpg (16821 bytes)u002.jpg (17139 bytes)adam2.jpg (14085 bytes)

box.jpg (15903 bytes)primer.jpg (20689 bytes)matt.jpg (21919 bytes)

oney.jpg (16686 bytes)u002p.jpg (14505 bytes)g001.jpg (11189 bytes)

lsword-cover-focus.jpg (34498 bytes)tij2-c.jpg (59255 bytes)

老實說,我有點不自量力。

在還不會 C/C++ 時,就膽敢買下 Inside Visual C++ 4.0 這本書來看,想當然爾,這本書對我來說是天書一般,不過它卻陪著我好幾年 (1995-1997),後來在軍中不慎遺失 (有誰這麼無聊偷一本電腦書 ? 想必這個小偷很識貨),幾天前在 PTT 上有人出售,隨即轉帳買下,原因無它,這是值得典藏的好書。

其實不是只有這本書而已,侯老師的各個著作與譯作,不論是在台灣還是在對岸,都已獨樹一格,而侯老師本人現在也忙於兩岸之間的教育工作,我是非常敬佩侯老師的,說他是我的偶像也沒錯。而我敬佩他的,除了他的技術涉獵之廣,文字中傳達的意象,更重要的是他在文字背後所要告訴讀者的一些人生哲理,由他的官方網站的文章以及他的無責任書評系列書籍中可見一斑。說來也很汗顏,因為我所從事的工作其實都不是 C/C++, MFC, System Programming, Device Driver Development 等,可能有些人會說我浪費錢,只是就像很多愛書人都干願花錢買書一樣,侯老師的書對我而言就像天龍八部或金庸般精彩,每每回味,都有不同的閱讀感受,而且也十份欽佩侯老師的寫譯功力。

侯老師的書籍,像是 COM 本質論以及 ActiveX 控制元件徹底研究等書,都充份的揭露了 COM 核心的黑箱作業,對開發核心程式的開發人員來說簡直是如獲至寶;而他的 MFC 書,更是將 MFC architecture 介紹得淋漓盡致,配合 Inside Visual C++ 4.0 服用,會有如任督二脈打通之感。而系統程式設計二書是我在讀恐龍書之前最早讀到的 OS 知識的書,它給了我 Process, Thread 以及核心的一些知識,讓我在思考 Windows 應用程式時會更周全。不過唯一沒看完的,是 Thinking in Java 一書,看來我也要找時間把它完整的看完。

侯老師的文字功力已是爐火純青,同樣身為作者的我,如能學得三分已是甚幸。

 

10. 基礎知識書系

我一開始是自學起家的,很多書其實都不知道,像是大學資訊工程或資訊管理的課程中會用到的一些重要書籍,我是一直到要考碩士班前一年才知道,也就是大家所說的聖經本 (Bible),在軟體開發中,有幾本很重要的聖經級著作,像是白算盤 (Computer Organization and Design: The Hardware/Software Interface),計算機概論 (The Overview of Computer Science) 等,但我是資管的,所以我就只講資管會有,而且我也買過看過的。

首先就是資料結構 (data structure) 的書,我買的是 Fundamentals of Data Structures in C++ 這本 (後來的 2/e 我也有買),其實我是後來才知道它是聖經本,這本書綜觀了大多數的資料結構,由一開始的 C/C++ 觀念,陣列 (array) 開始,介紹了 stack, queue, tree, binary tree, heap, sorting algorithms, searching algorithms, graph, shortest path, spanning tree, 及至於高階的 AVL Tree, RB Tree, B-tree, B+ tree 等,資料結構應是每個開發人員必學也必會的項目,但說實在的,資料結構能夠看懂的人並不多,而應用比設計要來的重要,因為如果誤用了資料結構,可能不但根本達不到它預期的目標,而且也許會讓程式更慢。

再來是作業系統,當然是以恐龍本 (Operating Systems Concept) 為主,我在侯老師的書中所學的系統知識,在這本書中得到了深化,進一步的學到 Process/Thread Scheduling,Race Condition/Critical Section/Process Synchronization,Memory Management 以及 Disk Scheduling Algorithm 等,這些知識配合一些現有作業系統書籍 (ex: Windows Internals, Windows via C/C++, Advanced Windows 等) 一起服用,會對作業系統的功力大增。

資訊管理出身的一定不能放棄資料庫,而資料庫的聖經本是 Fundamentals of Database Systems,這本書我買了三個版本,包含最近出的 6/e,它是我覺得講資料庫原理比較全面的教科書,不論是在資料庫的設計,正規化,邏輯與實體設計,SQL 與關聯式代數,乃致於交易,鎖定,索引,檔案結構等都有教,如果是從事 DBA 工作的人一定要讀,還可以配合像 Inside SQL Server 書系以及台灣一些講 SQL Server 的書籍一起服用會很有效果,理論知識充份了,在應用上其實就不難了。

啊 ... 時間差不多了,.NET 部份的好書,下回再寫吧。