窺視 DOS 和 Windows 的隱私

>>>  名人論史——近當代作家的史學觀點  >>> 簡體     傳統

發表日期 : 1993.03

如果你要語出驚人,
一定要有驚人的證據。

電腦界有一個人專門挖一些不為人知的資料,
此人大名鼎鼎并極受推崇,
他就是 Undocumented DOS 以及 Undocumented Windows 的作者
Andrew Schulman。

現在我們就來看看這個人
以及這兩本享譽軟體界的書籍。


有一種小道媒體,專門窺人隱私,揚惡隱善,唯恐天下不亂,無所不用其極。這種媒體我們稱之為「扒糞媒體」(嘖嘖! 好惡心)。這在英國很多,不少人靠此維生,甚至以此致富 (拍攝佛度王妃上空裸照的人酬勞每張以七位數計,視精采程度而定。不要問我怎麼知道的,不告訴你)。扒糞媒體的存在有什麼值得奇怪的呢 ? 你我不都是它的讀者 (或希望私下成為它的讀者) 嗎 ? 吃飽了飯沒事干窺人隱私、茶馀飯後嚼舌根論人長短真是人生最快樂的事,萬物之靈就是還存留著這麼一丁點兒劣根性。扒糞媒體國內也有,報導的東西當然稱得上是垃圾,垃圾人人討厭,制造垃圾的人也不會受人尊敬 (注一)。

然而在電腦界也有一個人專門挖一些不為人知的資料,此人大名鼎鼎并極受推崇,他就是 Undocumented DOS 以及 Undocumented Windows 的作者 : Andrew Schulman。這一期我們就來看看這個人以及這兩本享譽軟體界的書籍。

在臺灣也許知道 DOS Extender 這種產品的人并不太多。要發展 DOS Extender 這種產品,必須獲得許多 DOS 內部的、保留的、不為外人知的資料。因此如果說發展 DOS Extender 的人擁有許多未公開的 DOS 秘密,我想你一定不會太驚訝。如果你是少數 DOS Extender 使用者中的一位,一定知道 DOS Extender 最有名的廠商之一,Phar Lap 公司。而 Andrew Schulman --- Undocumented DOS 一書的作者 --- 正是 Phar Lap 的工程師。

Andrew Schulman 在著名期刊上發表過許多非常好的文章。我最喜歡看他的作品,因為他的研究領域和我自己的很近。你在 Dr. Dobb's Journal、PC Magazine、Microsoft Systems Journal 上不時可以看到 Schulman 才情橫溢的小品。他似乎是 Addison Wesley 出版公司的專屬作家,目前 Addison Wesley 就有一個The Andrew Schulman Programming Series 系列書籍。我想這是不管文學類或非文學類每一位作家最大的夢想吧。高陽著作等身,也不過在臨終前才推出高陽作品集,而且還來不及等到出版他人就去了。

注一 本文完成之後,我在報紙上看到英國小報對其王儲與王妃窮兇惡極的丑聞報導。怎麼樣,看得很過癮吧 ? 至少我佩服的一點是,他們的私家偵探肯花時間花金錢想辦法取一些頗具真實意義的證據取信於讀者 (照片啦,錄音帶啦),國內的扒糞媒體大概只要編輯一支筆一杯咖啡,在房間里瞎掰兩個小時就 OK 了。

Images/JJhou/carton-secrets.jpg (14772 bytes)

唔,你是說,真的有什麼
驚人的內幕消息嗎?

背景資料 :
書名 Undocumented DOS
作者 Andrew Schulman, Raymond J. Michels, Jim Kyle
Tim Paterson, David Maxey, Ralf Brown
出版 Addison Wesley
頁數 8 章,694 頁
售價 US$ 44.95
磁片 Yes

1. Regarding the Use of Undocumented DOS
2. Programming for Documented and Undocumented DOS : A Comparison
3. MS-DOS Resource Management : Memory, Processes, Devices
4. The DOS File System and Network Redirector
5. Memory Resident Software : Pop-ups and Multitasking
6. Command Interpreters
7. The MS-DOS Debugger Interface
8. INTRSPY : A Program for Exploring DOS

undocdos.jpg (21546 bytes)


這本書鼎鼎有名,在此之前并沒有類似書籍。汽車界每年有一個"Car of the Year" 選撥,推選年度風云汽車;本書也一再榮獲各界書評的贊美,譽為 "DOS Book of the Year"。以產品評論極為著稱的 PC Magazine 雜志對此書評價極高,它說每一年只有少數一兩本書是真正有價值、對我們有經常性助益的好書,Undocumented DOS 就是其中之一。它又說 DOS 領域的嚴謹工作者每一個人都應該擁有一本。

其實市面上也并不是沒有流傳這些未公開資料,作者在前言提到他為什麼寫此書時,也說從 PC Magazine、Dr. Dobb's Journal、Programmer's Journal...、以及電子布告欄、線上研討會獲得成堆成疊的 Undocumented DOS 資料。問題是,沒有人把它們加以整理、測試、組織化。現在經過有心人的整理,垃圾瞬間就變成黃金了 (這本書是賣座最佳的 DOS 書籍)。所以我常常勸我在工研院的老朋友,國際網路上抓下來的那堆寶貝就趕快整理整理,造福世人吧。再不然分類一下去開個 BBS,自任站長,自銷 shareware 軟體,也有賺頭。老凌,聽到沒有 ? (賣 shareware 合不合法 ? 呵呵呵,只要你用「工本費」這個名義就不犯法。呵呵呵 !)

這本書其實并不是 Andrew Schulman 的單人著作,他只是掛頭牌而已。可是想必你知道,論文發表時掛頭牌與掛二副 (乃至三副) 者的積分點數可是大大不同喲。由於名氣大,所以大家提到這本書都說「Schulman 的那本 Undocumented DOS」,這好像我在本專欄第一期介紹的 Peter Norton 和 Paul Yao 合著的Windows 3.0 : Power Programming Techniques,人家也都是說「"Norton 的那本書」,事實上許多高級技巧都出自 Yao 之手,真為他叫屈。不過這也沒什麼好爭的,等你熬出頭來,該是你的也跑不到人家頭上。Undocumented DOS 一共有六位作者,全都是小有來頭的人物,他們有的是叁與 DOS 發展計劃的工程師,有的是知名電腦期刊的作者。

到底你能夠從這本書中獲得什麼呢 ? 首先掂掂自己的份量。你必須熟悉 C 語言以及組合語言。懂得組合語言的程式員已被我歸為稀有族類。你的實際工作或許不需要以組合語言解決,但即使不會寫,頂好還是看得懂這個低階語言,因為許多重量級作家在期刊上發表技術時都還以組合語言設計范例。你有沒有碰過那種堅持要用軟須膏、刮胡刀片、古龍水刮胡子的男人 (私底下他也承認電動胡刀方便) ? 說是比較有...呃...這個...比較有古典的味道。本書讀者的第二個條件是,必須熟悉 IBM PC 上的程式寫作,否則你適合看 Documented DOS 不適合看Undocumented DOS。

有了這兩個基本條件,看看本書為你準備的海陸大餐 :

■ MCB : Memory Control Block,記憶體控制區段。不知道此資料結構就不能夠了解DOS 如何串接記憶體區塊,因此想在程式中使用 UMB 也就比較困難一點。

■ PSP : Program Segment Prefix,程式段前置區。不動此結構的話你不可能讓一個程式的可開檔個數突破 20 個。這個結構可以管理行程 (process),多工環境如 DESQView、Windows 都會處理每一個 process 的 PSP 結構。

■ List of Lists : 幾乎控制所有未公開結構的起始位置。擒賊擒王,先看這個。從這里你可以獲得第一個 MCB 的位址,第一個 SFT 的位址,也可以得到最後一個磁碟機的代碼。

■ SFT : System Files Table,系統檔案表格。了解它你才知道 CONFIG.SYS 中的FILES 到底設定些什麼東東。最多可以設定 255 個檔案 handles。

■ CDS : Current Directory Structure。每一個邏輯磁碟都有一個 CDS,如果你的LASTDRIVE=Z,你就有 26 個 CDS。這個結構在 DOS 的擴充檔案系統(如 CD-ROM) 中扮演重要角色。

另外還有 JFT、DPB、FCB 等等結構。本書附有相當多的范例,小小的,不難看。

依我原先的想像,像 Undocumented DOS 這樣的書籍對發展一般應用軟體的程式員應該是沒有什麼吸引力的 (除非他個人喜歡追求技術,不單是為了工作)。因為應用軟體力求穩健,恐怕對采用未公開函式沒有太大的信心。但是實際的情況是,工具軟體如 PC Tools、Norton Utility,或系統軟體如 DOS Extender、Multitasking Kernel 都需要相當多的武林秘訣,對這些軟體而言 DOS 內部未公開的資訊就顯得相當重要。本書磁片附有一個 INTRSPY 程式,可以偵測任何被呼叫的DOS 未公開函式,你會發現呼叫未公開函式的軟體竟是如此之多。因此這些未公開的 API 函式似乎又沒有想像中那麼不穩定。這也是作者在書中一再若有若無地向你推薦 Undocumented DOS 的理由,他說 :

■ If Quarterdeck can do it, so can you.
(Quarterdeck 是記憶體管理工具的知名廠商,其產品 QEMM386 永遠是美國軟體銷售排行榜上的前五名,我很少看它掉下來過)。

■ When popular applications use undocumented DOS, it's ultimately Microsoft that is inconveniented not the application's developers.

■ Should the DOS List of Lists be changed radically, not only will our own programs start to fail but practically all important Microsoft software will break too.

擺明了要死大家一起死,天塌下來有高個兒頂著的態度。

但是有沒有想過,你并不像那些大公司一樣可以直通 Microsoft 後門,你并沒有獲得他們的認可,因此你不會在 MS-DOS 內部結構改變時獲得他們的通知。這是很現實的問題,他不認為你夠與他等量齊觀的話就不會請你吃晚餐。你必須在新的 DOS 問世之後,新的像 Undocumented DOS 這樣的書籍也問世之後,才開始修改你的軟體。那時候你的客戶已經因為你的產品竟不能與新版 DOS 相容以及因為不耐煩你的遲遲不能夠更新,而對你莎唷娜啦了。這是我最不能夠同意Schulman 的一點,重要的不在安全性,而在未來性,以及即時性。

本書的另一個賣點是人類無可救藥的好奇心 : DOS 大家已經摸的爛熟,幾根死人骨頭都一清二楚,如果我能夠比其他人多知道一點,豈不是一件很爽的事嗎 ? 如果我還能夠為人之所不能為,那更是飲刀成一快,不負少年頭。利用DOS 未公開函式所完成的功能,有時候確實比較能帶給使用者便利。QEMM 的 BUFFERS.COM 以及 FILES.COM 都是利用這些未公開的 DOS 呼叫,動態改變 DOS 的 buffer 個數和 SFT 大小,不必要求重新開機。

以技術面來講本書當然是絕對的無庸置疑,但是如果以侯捷的閱讀習慣,本書枯燥的很。我并不期望書中冒出一個漫畫機器人拿一杯茶告訴你「休息是為了走更遠的路」,也不期望看到一些啼笑皆非的小學生水準的插圖。然而好歹有個什麼圖表吧,本書全部都是文字,令人望之生畏 (我真的沒有打誑語,真的一張圖都沒有),讀本書你必須很有耐性,每 50 分鐘休息 10 分鐘,免得眼花了打起瞌睡,對不起 Schulman 的苦心。

說到漫畫,我個人由衷喜愛 Programmer's Journal (PJ) 上的插圖。觀其插圖,知其雜志水準也。那麼切題的插畫,要不是畫家本身是技術高手,可以從文字中咀嚼出靈感 (這個可能性小一點),就是作者與畫家不斷溝通後的腦力激蕩結果 (這個可能性大一點)。我好向往有這樣的人為我畫插圖。本文後面我附了三兩張 PJ 的插圖給大家欣賞。

carton-pj1.jpg (17606 bytes)

carton-pj2.jpg (11717 bytes)

carton-pj3.jpg (14538 bytes)



作者說書中所有程式都在 DOS 第二、三、四版,以及一個他們還不能明講,但是很快會與讀者見面的版本中測試過。可是又在封面以鮮艷的黃色標出 DOS 5.0,這好像有點掩耳盜鈴,又有點欲蓋弭彰。然而既祭出 DOS 5.0 的大 ,附錄的Undocumented DOS Functions 在介紹重要的資料結構 (例如 List of Lists) 時又沒有列出 5.0 環境下的改變 (即使沒有改變,也應該要說明)。所以這些東西在DOS 5.0 的情況就有點令人忐忑不安。

本書已有 2nd Edition 的廣告,出版時間應該就在最近,目前國內市場還沒有看到其蹤跡。

背景資料 :
書名 Undocumented Windows
作者 Andrew Schulman, David Maxey, Matt Pietrek
出版 Addison Wesley
頁數 10 章,715 頁
售價 US$ 39.95
磁片 Yes

1. This Was Not Supposed to Happen
2. Examing Windows Executables
3. Disassembling Windows
4. Tools for Exploring Windows
5. KERNEL : Windows System Services
6. USER : Microsoft Windows User Interface
7. Undocumented Windows Messages
8. GDI
9. System
10. ToolHelp

undoc-windows.jpg (21009 bytes)


Andrew Schulman 自從寫了 Undocumented DOS 一書聲譽鵲起,奠下不朽基業後,再接再勵寫下 Undocumented Windows 一書。目前 Addison Wesley 有一系列書籍就叫作 The Andrew Schulman Programming Series,人紅到這個田地真不容易。所以國內出版社諸位老板請好好培養幾位有技術、有文采的作家,不會虧本的。那種年產量以打計的作者,書的內容如何 ? 手上不時有三十本書排隊等候制作的編輯,書籍制作品質又如何 ? (此言一出得罪多少人 ? 其實侯捷是五十步笑百步,巴不得一年出它個 365 本)。

原本我對此書的興趣并不高。雖然我對 Windows 是死忠擁護 (不快點表態的人恐怕再過三兩年你會死得很慘,餓死的),但 Windows SDK 的近千個函式已經夠嗆人的了,K 不完白了少年頭,哪還有時間看這什麼 Undocumented Windows !! 而且 Windows 是保護模式環境,也不允許你用什麼絕招秘步在系統里面挖寶探險。但是,我錯了,這本書著實有看頭。

想學點絕招現買現賣立刻用到自己軟體上的人可能會失望。搞清楚,本書名叫Undocumented Windows 而不是 Undocumented Windows API。雖然它對超過 250 個未公開函式都有描述,然而有一半的篇幅是在介紹如何以各種工具窺視 Windows 系統,幫助我們了解什麼是 Module、什麼是 Task、什麼是 Instance。而這三者是KERNEL 模組中最重要的成份。當然它也對 GDI 模組和 USER 模組開膛剖腹一番。

書里附了許多軟體工具的偵測報告。Schulman 使用的工具有 :

■ Windows SDK 的 Heap Walker : 可用來看記憶體的狀況。

■ NuMega Tech. 公司的 SoftICE : 這是個完整的除錯工具,威力強大。

■ Phar Lap 公司的 MAPWIN : 可以看 EXE 或 DLL 呼叫了哪些 API。如果你拿到一個很有趣或是很匪夷所思的軟體,不妨以 MAPWIN 看看它到底呼叫了何方神圣。

■ 作者自己發展的程式如 EXEDUMP、EXEUTIL...。

這些程式有的是 Phar Lap 公司的正式出品 (掛有 Phar Lap 版權者)。Phar Lap 做這類工具軟體真是輕而易舉,別忘記了他們是 DOS Extender 的著名廠商。

從第四章開始,作者公開了許多他的私房,把原始碼都附上,也附在磁片中。他說本來不想放那些原始碼的,因為磁片空間不足。後來他想到了 PKZIP 和 PKUNZIP (我們真該感謝這些壓縮程式的發明,阿們!)。這些程式如果都以 Windows 程式寫法來完成,本書至少 3000 頁 (有誰看過 3000 頁的書籍沒? 我沒有!)。Schulman 有一招絕妙方法,他把 WinMain()、MainWndProc()、message-loop 等等等都包裝在特制函式中,讓 Windows 程式維持一般 DOS 程式那樣的寫法,於是你可以寫這樣 :

#include "windows.h"
#include "winio.h"

main()
{
printf("hello world! \n");
}


看起來根本就是個 DOS 程式嘛,不過它卻能享受 Windows 環境的好處,例如可以放在視窗中,可以放大可縮小,還可以加上下拉式功能表。關鍵在於它聯結WINIO 函式庫,那是 Andrew Schulman 和 David Maxey 的精心杰作。為什麼不用Microsoft 的 QuickWin 或 Borland 的 EasyWin 呢 ? 因為那做出來的都不是真正可以享受 Windows 特徵的應用程式。

這項技術 (WINIO) 曾經在 MSJ 上分兩次發表,一是 Call Standard C I/O Functions from Your Windows Code Using the WINIO Library (MSJ, 1991/07),一是 Porting DOS Programs to Protected-Mode Windows with the WINDOS Library (MSJ,1991/09)。這兩篇文章講述如何讓 DOS 的程式風格在 Windows 中存留下來。如果以 Schulman 這個想法來看,能把 WINIO 發展完全的話,你的 DOS 程式不必修改 (或只要稍加修改),即可移植到 Windows 中,享受的不只是傳統的 DOS Extender 所能帶來的記憶體突破,更有圖形人機介面、以及整體的多工系統支援(如 IPC)。那麼 WINIO 可以說是個超級的 DOS Extender 了。

比起當初在 MSJ 上發表,如今 WINIO 的各個模組又有精進。增加了功能表的設計以及 click and popup 的能力。這項能力應用在本書的各種工具軟體上極為適宜。例如你利用書中的軟體工具觀察執行中的 task,在 WINIO 的主視窗中可以利用double-click 得到某特定 task 的更詳細資料 (以 popup 視窗顯示出來)。作者設計這個 WINIO 函式庫 (我說是個超級 DOS Extender) 的目的是為了讓書中一些小小工具程式的主體更精簡 (我們都知道凡是一個成功的軟體其人機介面大概要耗掉整個工作計劃 70% 的人力),這些程式獲得的資訊只要以簡單的 printf() 就可以一條一條顯示在視窗中。在 DOS 環境下如果你有 100 個連續的 printf(),那麼你一定只能夠仔細端詳最後 25 行資訊 (一整個螢幕)。但在 WINIO 中,迅若閃電的資訊還可以用卷動桿把它拉回來看個清楚。真是好的讓你耳目一新。

WINIO 的技巧很值得詳細探究,它以 set handler 的方式安插特定的訊息處理常式,也很類似 Borland 的 OWL 或是 Microsoft 的 MFC 提供的 message-mapping system。可惜這本書的篇幅中并沒有介紹 WINIO 的原始碼及其設計理念。當然你可以慢慢咀嚼磁片所附的原始碼,不過最好是先取得上述的兩篇 MSJ 文章。和平東路二段的科技大樓內的中央圖書館資訊分館內就有 MSJ。

本書第一章漫談許多主題,花了相當的篇幅討論 Windows 未公開秘密所引發的美國聯邦交易委員會 (U.S. FTC) 的關切。第二章至第四章分別介紹一些工具。第五章到第八章是本書第一個重點,介紹 Windows (其實也就是 KERNEL、GDI、USER 三大模組) 的各個未公開結構、訊息、函式。很多資料不在 SDK 中公布,卻出現在DDK,所以想深入了解 Windows 的人不妨有空注意一下 DDK 的文件。這四章占據412 頁。

第十章介紹 ToolHelp 是本書的第二個重點。ToolHelp 是 Windows 新加入的一個動態聯結函式庫,可以滿足程式對 Windows 內部資料的查詢。應用程式獲得的并不是真正的資料,而是一份副本,這與第五章至第八章以未公開之 Windows API 取得的資料不同。本章對 ToolHelp 的每一個 API 用法、叁數、結構、訊息都描述十分詳細。這些 API 允許我們取得 Global Heap、Local Heap、Module Database、Task Database、以及一些系統資訊 (像是 Free System Resource 等)。如果讀者還想看看其他的ToolHelp 文章,以下給你叁考 :

■ Explore Previously Uncharted Areas of Windows Using the HoolHelp Library (Paul Yao, MSJ 1992/05)

■ The Windows 3.1 ToolHelp DLL, Part 1 (Ray Duncan, PC-Mag, 1992/08)

■ The Windows 3.1 ToolHelp DLL, Part 2 (Ray Duncan, PC-Mag, 1992/09/15)

■ The Windows 3.1 ToolHelp DLL, Part 3 (Ray Duncan, PC-Mag, 1992/09/29)

本書附錄A 是 WINIO 的函式介面,附錄B 是叁考書目。難得的是對每一本叁考書都有短評,足見作者博覽群書,腹笥甚豐。

如何安全使用未公開的 Windows API ? 首先你得檢查這個 API 在現在環境中存在否,要從模組到函式庫再到函式名稱一一檢查,并且也檢查序號 (ordinal no.) ,兩邊吻合才保險。Schulman 舉出一堆例子,說明我們耳熟能詳的國際級軟體如 Locus 1-2-3、Norton Disktop for Windows... 是如何運用這些未公開函式。言之鑿鑿,使你不得不打消對未公開函式的疑慮,油然興起有為者亦若是的感嘆。但我還是要澆你一盆冷水,重要的不在安全性而在未來性與即時性。你認為你能夠像上述國際級軟體公司一樣得到 Microsoft 的第一手資料嗎 ? 這雖然是一件不公平的事 (為什麼 Microsoft 賣了成千上萬套的 SDK 卻只把這些資料供應給 26 家獨立軟體制造廠商 ?),也是美國聯邦交易委員會要調查 Microsoft 的原因之一,但實際情況就是如此。孤臣無力可回天。

本書的出現,就像 Undocumented DOS 一樣,又再一次震憾人心,也震憾了美國聯邦交易委員會 (U.S. Federal Trade Commission,FTC,類似我們的行政院公平交易會) 諸公的心。什麼時代了,連立法院都已著手陽光法案,竟然還有"Undocumented" 這種東西,而且竟然還是在大家爭得頭破血流的 Windows 領域。FTC 對 Microsoft 調查得很緊,不只是 Microsoft 作業系統部門對應用軟體部門的技術私相授受情況絕不允許,還關心 Microsoft 的應用軟體部門是否有不公平的機會預先知道作業系統部門的任何意圖。比方說當 Microsoft 向全世界聲稱要開發 OS/2 2.0 時,是否應用軟體部門早已預知未來的主角其實是 Windows ? 這本書證實兩件事情。第一,Microsoft 確實制造了一些未公開的 Windows API;第二,Microsoft 的應用軟體確實使用了這些未公開的 Windows API。

我想,一個系統為了未來的擴充性留有一些未公開資料是正常而合理的,問題是這些未公開資料必須是真的不公開,不能嘴巴說的和手上做的兩回事,不能有人利用這些秘笈來賺錢。Microsoft 辯稱別的軟體公司也用了這些 API,然而并不因為別人也使用就可以掩蓋這種留一手以及表里不一的欺騙行為(注二)。何況 Microsoft 只給了 26 家關系廠商這些資料。

注二 Dr. Dobb's Journal 的主編說這種欺騙行為引起「尼克森」式的反應。尼克森是誰 ? 年輕朋友恐怕不清楚或根本不知道吧 ? 他是因為在競選時使用不法手段(據說是在敵營水門大廈放了竊聽器) 引發水門事件而辭職的美國 37 任總統。據說美國年輕人大部份已經不認為這是多嚴重的事情。哈哈,那麼你認為 FTC 對 Microsoft 的控訴將有什麼樣的結果 ?


據說此書還引起華爾街人士的注意,給它寫了個書評。著名的 Dr. Dobb's Journal (這是百年老字號的 PC 期刊) 在 1992/11 也給了本書一個書評,評者是天王巨星 Ray Duncan。Duncan 對於本書的評論我不贅述,但對於本書作者贊譽有加。我把精采的幾句摘譯給各位,春風沐雨一下 :

技術文件作者 (文件工程師) (technical writer) 是一種被過份苛求而且沒有受到應得尊敬的職業。如果你把焦點再集中到商業雜志或專業書籍出版社在作業系統、程式介面、發展工具方面的技術文件作者,你就會發現這份職業不但苛求、沒有受到應得的尊敬,而且它還十分地奇特乖辟。再沒有什麼其他領域會像技術文件作者一樣要接受那麼大量的、高水準的讀者的考驗,而且還得和不斷創新的技術拼命,和短的不能再短的產品周期賽跑,和粗劣不堪的產品說明、令人發指的同意書保證書、模糊的事實、可憐而不可知的市場力量撥河。所以學院派的技術人員以及「真正的」程式員對此工作不屑一顧。

其實這是十分公平的! 技術文件作者在程式員這一領域的地位如此低落的理由之一是,從業人員的素質良窳不齊。至少 90% 的文章和書籍靠著剪刀和漿糊就做出來了,簡直像是挖泥機一樣,賣力地挖,卻挖出一堆爛泥巴。有的在產品手冊上亂砍幾刀,絲毫沒有加上個人的看法;或是一些半調子學徒為滿足編輯策劃者的大綱要求,硬拼硬湊,文章中充斥毫無意義的冗詞贅言。只有 10% 的文章以及書籍,是濁世中的一股清流。這些文章書籍的作者分為兩個類型 : 一種是流星型的人物,出了一、兩本有意義的書,如流星畫過天際,閃亮! 然後...沒了,徒留懷念;另一種是一小族群的所謂超級巨星,他們有穩定而質佳的好作品,日復一日,年復一年。

這種超級巨星的特徵是什麼 ? 他們通常都有數年的實際程式經驗 (才不至於光說不練);他們對於程式寫作有一股近乎狂熱的感情;他們寫他們所做的,不寫他們所聽的;他們能夠很快認知并接受別人的觀念;他們心胸開闊、博覽群書、通情達理;特別擅長在散亂的斷簡殘篇中理出邏輯結構,并且擅長將此邏輯介紹給別人。最後,他們擁有的共同特質就是都有一支生花妙筆。我所指的是 Jeff Prosise、Charles Petzold、Michael Abrash、Jeff Duntemann、Andrew Schulman 等人。

Andrew Schulman 的寫作方式并不是直接給你事實,而是揪著你的衣領讓你自己看事實在哪里,為什麼產生這種事實。并且解釋為什麼這個事實重要,以及如何安全地運用這個事實。第一代 Windows 書籍的代表作品是 Petzold、Yao、Richter、Heller 的書,這一本 Undocumented Windows 將是第二代作品。雖然這本書在表達上還不是盡善盡美,但瑕不掩瑜,它的推出仍是 1992 年這個領域中最重要的一件事情。


痛快之極痛快之至。Ray Duncan 所言不虛,我們國內的電腦書籍市場也是量重於質 (遠遠地)。令人安慰的是,辛苦耕耘的人總是不會被埋沒,在國內我們也看到了好的電腦著作,執著的工作者,并且看到價位高的好作品慢慢被讀者接受。證明了凡辛苦播種者,必含淚收割。

至於 Duncan 指名道姓的勇氣,我學不來。


侯捷 2010-07-15 08:32:57

[新一篇] 再談 Windows 程式設計好書

[舊一篇] 無限延伸 DOS 視野
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表