天堂之門與棋王

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

1997.07

最近有兩件大新聞和我們資訊人有關,一悲一喜,相信你印象猶新。

一件發生在三月27日,號稱「天堂之門」教派的 39 位成員,隨海爾波普慧星之來去而集體自殺。該教派成員大多為擁有專業電腦技術的高級知識份子,曾經為當地眾多公司提供資訊網路技術服務,協助設計網頁,并擁有自己的網站。

另一件大事發生在五月11日,IBM 深藍電腦在眾人的驚愕(隨後轉為驚嘆)聲中,擊敗史上最強的西洋棋王柯斯巴魯夫(kasparov)-- 此君自 1985 年之後未逢敵手,求一敗而不可得。

●無害的邪教 良善的異端 ?!

媒體上對於「天堂之門」大加撻伐,斥之為邪教異端。美國總統稱這起事件令人「心痛、作嘔和震驚」。我沒有機會看到柯林頓的聲明原文,不過「作嘔」一詞實在不解。感覺上外國人的腸胃比較弱些,常見電影上那些老外看到點什麼血腥奇怪的場面,就要沖到洗手間去大吐特吐。

不管外國人的腸胃。就「天堂之門」事件,雖然我反對自殺,不過我倒頗佩服這些人的勇氣。自古艱難唯一死!為自己的信仰而死,如果完全出於自愿,沒有受迫,旁人有什麼好置喙「作嘔」的呢?為信仰而死,2000 年前叫神圣殉教,2000 年後的今天叫邪惡異端?這些平時自食其力,「希望以喜悅的心情快樂地離開地球」的人們,也許在眾人眼里認為思想偏差,但比起殺人掠貨、擄人勒贖的壞蛋而言,或比起只會為社會制造問題卻不知為自己行為負責的飚車族、安公子而言,即使有所批評,哎,我也只能說他們是無害的邪教,良善的異端。他們所造成的破碎家庭雖然也成為社會的負担,但畢竟仍停留在相當「自我」的范圍,干卿底事?

從這里,我又想到前不久的宋七力事件、妙天事件、太極門事件。我也曾經和大多數人一樣,邊看媒體的報導邊搖頭,大嘆不可思議,并以悲憐的口吻談論這些「愚夫愚婦」。哦哦,事情有沒有另一面呢?媒體的渲染力十分驚人,可不要在媒體的激情批判面前迷失了自我的思考喔。我的鄰居,工研院研究員,叁與太極門好多年,我知道他們夫婦極大的生活快樂來自於師兄姊們喝茶聊天論古話今。顯然這個團體有相當和諧的一面,和「養小鬼」之說實難聯想。我的一位朋友罹患嚴重肝病,辭掉工作在家休養,後來我輾轉知道他在妙天處獲得很大的恢復,成為他們非常熱心的義工。這些「事情的另一面」不會在媒體上出現,因為打落水狗是媒體喜歡做的,是讀者喜歡看的。

彼等若有觸犯法律的嫌疑(像是詐欺騙財等等),當然應該調查。但是無冕王筆下權力無限膨脹,令人思之悚然。我到底想說什麼呢?我想說,人所不知而自以為知的事,不知凡幾;不要過度相信媒體,喪失了自我思考。把科學研究的精神,分一些到生活上。事事馀留一些另面思考空間。

即連面對這篇文章,也是!



●03/11/1997 04:03 P.M.

一九九七年三月十一日下午四點零三分,或許是一個值得書寫在歷史上的時刻。這一刻 IBM 深藍電腦以二勝三和一負的成績,在西洋棋六局賽事中蠃了。對手是獨孤求敗,打遍天下無敵手的棋王柯斯巴魯夫(前蘇聯亞塞拜然人)。

去年二月,同樣的兩個人(噢不,一部機器和一個人)也舉行了相同的賽事,結果深藍以一勝二和三負輸了。今年下到第二局,戰況一勝一負時,我對美靜說,今年和去年大不相同,去年第一局深藍勝後,長黑到底;今年先敗後勝,意義重大。

深藍的勝利,是五方面的成功:

★硬體方面,它是一部由 32 顆中央處理器(CPU)組成的 IBMRS/6000SP 電腦,每顆處理器附有 16 個特殊設計的下棋加速器。深藍每秒鐘可掃描大約兩億個棋步,記憶體內則存有百年來世界頂尖棋手的棋譜,十億套。

★軟體方面,由華裔工程師許峰雄為首的深藍小組,負責駕馭上述巨大的能量。眾所周知,「平行處理」向來是棘手問題,如何駕馭 32 匹疾奔馬,使它們彼此分工并且合作,需要相當的技術。

★棋藝方面,延覽美國西洋棋高手班杰明為專職顧問,為深藍貫注棋力,加強整體戰略及計算每個落點的權值大小。否則,每秒兩億個棋步形同廢物。

★計劃負責人的主持功力攸關計劃的成功與否,我相信深藍計劃負責人譚崇仁成功地扮演了一位舵手。

★恐怕最為人忽略的成功因素,就是 IBM 對此計劃的長期支持。深藍計劃從 1989 開始,至今八年,若再加上其前身「深思」,已經超過十年。十年里這個只鉆研下棋技術的小組對公司是沒有任何直接效益的。但是 IBM 看到間接效益。不說打敗棋王的新聞價值帶來(據說)一億美元的善意和免費宣傳,平行處理的經驗還可以落實到快遞運送、航空、醫療保險、金融投資等各行各業。

有趣的是,賽後媒體紛紛專題討論所謂機器智慧的問題。大多數的論點是:深藍只不過是以窮舉法、快速運算、大量而永不遺忘的記憶,很「暴力」地擊敗人類。喔,坐在一端的是有智慧的人類最佳頭腦,躺在另一端的是沒有智慧的冰冷機器?!沒智慧的卻蠃了有智慧的?下下人有上上智,上上人有沒意智?

更離譜的是棋王自己在賽後記者會上說:『我要聲明,我的失敗與科技無關,因為電腦的表現完全沒有機械的慣性,我不相信有這樣優越的電腦』。那麼他是輸給誰?也許失敗是如此難得,柯斯巴魯夫不知如何優雅面對。

據說柯斯巴魯夫舉止高傲,不可一世。或許這一戰對他是絕佳轉捩點。學會謙卑,才顯偉大。影歌紅星保鑣們的說法是:「真正大牌的,都很好相處。只有那初紅乍熱的,比較麻煩。」

我們應該承認,深藍在下棋方面,是有智慧的。但是它的確沒有其他方面的智慧。它沒有辦法完善翻譯外文,沒有辦法與一般小孩子流利對話。它沒有情緒,沒有 EQ。它從不動怒、從不疲倦、從不高興、從不失望、從不沮喪。沒有情緒算不算是最高 EQ?柯斯巴魯夫在最後關鍵一局第19手棄子投降,是人類最脆弱的表現。雖然事後專家模擬未完的棋局繼續和深藍對奕,發現果然蠃不了,并「由此可見棋王判斷棋路之準確」,但果斷而輸棋,何不若定靜求生機?早降而蠃得贊美,毫無意義。棋王如果與人類交手,肯定不會那麼早降,一定設圈套想絕招,殺手剪()回馬槍一一伺候,等待對方的失手錯著。早降不也顯示了棋王對其「絕對不會犯錯的對手」的敬畏?或者說棋王被深藍的酷震撼到了?

注:「剪」是個錯字,其實應該是「金」字邊加一個「間」,三聲。這個字我無法 keyin 出來,抱歉。

我現在最感興趣的是,深藍與棋王的歷史之戰,所有的棋譜公布在哪里。另外,三句不離本行,我也要抱怨一下,民生報的棋王是卡斯波洛夫,聯合報的棋王是柯斯巴魯夫,同一報系的兩份報都這樣了,可見譯名統一的問題有多嚴重。

●進入主題

這個月我介紹兩個主題,一個是 Multithreading,一個是 Registry。兩者有什麼關聯嗎?風馬牛不相及也,只是我最近的閱讀心得。

Multithreading 和平行處理有關。剛看完深藍的一番報導,我想你會對平行處理有興趣。過去 PC 上的 DOS 作業系統沒有支援多工,Windows 3.x 雖有多工卻是假多工(合作型多工)。OS/2 和 Windows 95、Windows NT 才有所謂的強制性多工,也因此才有所謂的多緒程式出現。不過別以為執行緒(thread)是新東西,它早早就在大型機器的作業系統中存在了。

關於執行緒,有一些常被人誤解的觀念,例如「使用執行緒一定有益無害」,或是「執行緒一定能夠加快程式的進行」。我即將介紹的這本書里,有一些這一類的 FAQ(常見問答集)。

另一個主題 Registry,有人譯為「登錄」。這兩個中文字乍看之下容易有「動詞耶?名詞耶?」的困擾。我比較喜歡使用「登錄資料庫」一詞,絕無疑慮。要不乾脆不譯也可。Registry 是作業系統的國庫,存放著重要的系統資訊、軟硬體設定資訊、應用程式資訊。使用者的許多動作,都會造成 Registry 的改變。例如你在 Win95 桌面上按右鍵,選擇隨後出現的【內容/設定值】以改變螢幕的解析度,其實就是改變了 Registry 的某項設定。

做為一個超級使用者(power user),或者一個系統管理者(administrator),你應該要知道 Registry 是什麼東西,有什麼內容,以及如何去維護它。做為一個程式員,你還應該知道有什麼程式方法可以讓你將資料寫入 Registry,因為程式的安裝資訊、反安裝資訊、公司名稱、產品名稱、版本號碼、資料檔型態,在在都需要登錄在 Registry 之中。如果你寫的是 ActiveX 相關軟體,或是所謂的 shell extension 軟體,更是離不開 Registry。

 

■Multithreading Applications in Win32

作者:Jim Beveridge & Robert Wiener
出版公司:Addison Wesley
出版日期:1996 年 12 月
頁數:17 章,368 頁
售價:US$ 39.95。含光碟片一。

PartI : Threads in Action
1. Why You Need MultiThreading
2. Getting a Feel for Threads
3. Hurry Up and Wait
4. Synchronization
5. Keeping Your Threads on a Leash
6. Overlapped I/O, or Juggling Behind Your Back

PartII : MultiThreading Tools and Tricks
7. Data Consistency
8. Using the C Run-time Library
9. Using C++
10. Threads in MFC
11. GDI/Window Management
12. Debugging
13. Interprocess Communication
14. Building DLLs

PartIII : MultiThreading in Real World Applications
15. Planning an Application
16. ISAPI
17. OLE, ActiveX, and COM

Appendix A: The MTVERIFY Macro

multithreading-in-win32.jpg (14329 bytes)



讓我先解釋以下幾個和本書主題有關的名詞(叁考自牛津電腦字典):

multiprocessor system:允許一個以上的處理器(CPU)同時作用的系統。
multiprogramming system:允許一個以上的程式同時作用的系統。
multitasking:同時執行一件以上的工作,謂之。
multithreading:行程切割出來的多個執行單元,每一個單元都是 CPU 的排程對象。
parallel processing:超過一個以上的行程(process),在同一時刻作用,謂之。嚴格來講只有在多處理器系統中才能使用這個名詞,不過很少有人遵循嚴謹的定義。
concurrent programming:和 parallel processing 同義。

"Thread",有人譯為線,有人譯為緒。緒就是線,若以文雅而言,緒比線更勝一籌,我很佩服創造這個譯名的人。如果單獨出現 "thread",我喜歡使用「執行緒」這個字眼。

所謂緒,就是程式分出來的執行單元。在多工環境中,CPU 的時間分配是以「緒」為對象,行程(process)則只不過是一堆擁有權(ownership)的集合而已。行程可以擁有許多個執行緒。Win32 程式只要以 API 函式 CreateThread() 即可獲得一個執行緒。CreateThread() 的第三個叁數需要被指定一個函式,稱為執行緒函式。你可以把執行緒本體想像就是那個函式。如果執行緒函式結束,該執行緒也就結束了。

學習執行緒的技術,可以從程式設計和作業系統兩個角度下手。你曾經因為學習枯躁的作業系統理論而感到煩燥嗎?這本書不會給你這種感覺。作者以第一篇奠定你對執行緒的基礎,使用大量的 Win32 console 程式設計了一些很短很簡單但是很有教育性的小程式,用來說明執行緒的產生、結束、對效率的影響、各種同步問題...等等等。再以第二篇讓你熟悉撰寫應用程式時會遭遇到的實際問題,包括使用多緒版的 runtime 函式庫、以 C++ 包裝執行緒動作、在 MFC 程式中如何產生執行緒...等等等。第三篇以實務經驗告訴大家對多緒程式設計的規劃、判斷,并提供 ISAPI 和 ActiveX 兩個實際范例。

這本書有兩個體貼讀者的地方。第一是它提供一份常見問答集(FAQ),內容分散各處,但目錄列於書前。第二是它將書中所介紹的各個與執行緒、多工、同步化控制有關的 Win32 API 的出現頁數整理成一個目錄,放在封面里頁,方便查詢。

關於執行緒,MSDN 里頭有一堆文章,你只要給關鍵字 "thread",整片光碟找一遍就可以獲得。下面是我整理出來的其他相關書籍,供你叁考:

Operating System Concept 4th edition (A. Silberschatz J. Peterson P.Galvin / Addison Wesley)Chap4: Processes Chap5: CPU Scheduling Chap5: Processes Synchronization Chap6: DeadLocks

Win32 System Services - The Heart of Windows NT (Marshall Brain / Prentice Hall)Chap5: Processes and Threads Chap6: Synchronization

Windows 95 System Programming SECRETS(Matt Pietrek / IDG Books)Chap3: "Modules, Processes, and Threads"

Advanced Windows 3rd edition(Jeffrey Richter / Microsoft Press)Chap2: "Kernel Objects" Chap3: "Processes" Chap4: "Threads" Chap10: "Thread Synchronization"

Programming Windows 95(Charles Petzold / Microsoft Press)Chap14: "Multitasking and multithreading"

Programming Windows 95 with MFC(Jeff Prosise / Microsoft Press)Chap14: "Threads and Thread Synchronization"

Inside Visual C++ 4.0(David Kraglinski / Microsoft Press)Chap11: "Windows Message Processing and Multithreaded Programming"

The Revolutionary Guide to MFC 4 programming with Visual C++ (Mike Blaszczak / WROX Press)Chap11: "Writing Multithreaded Applications with MFC"

Programming Windows 95 Unleashed(SAMS Publishing)Chap3: Multitasking, Processes, and Threads

Programming Windows NT 4 Unleashed(SAMS Publishing)Chap22: Threads

「深入淺出 MFC」第2版(侯俊杰/松崗)chap14: "MFC 多緒程式設計"

 

■Inside the Windows 95 Registry

作者:Ron Petrusha
出版公司:O'Reilly
出版日期:1996 年八月
頁數:11 章,575 頁
售價:US$ 32.95。含 3-1/2" 磁片一。

1. The Registry, or, What Was So Bad About .INI Files?
2. Using the Registry Editor
3. Backing Up and Restoring the Registry
4. The Win32 Registry API
5. Win95 Registry Access from WWin16, DOS, and VxDs
6. The Registry and Visual Basic
7. The Desaware Registry Control
8. What Goes in the Registry : System Settings
9. What Goes in the Registry : Application and User Settings
10. Spying on thee Registry
11. Migrating from .INI Files to the Registry
Appendix A: Where Am I Running?
Appendix B: The Insidee the Windows 95 Registry Diskette


inside-win95-registry.jpg (14287 bytes)


硬體毀掉之前(啊哈,如果事先知道的話),你會備份什麼東西?對,所有的個人資料。應用軟體不備份也罷,重新安裝就好啦。系統呢?系統當然也是重新安裝就好了。

但是,有一樣系統資料你不能忘記備份,那就是記錄著整個系統環境設定、應用程式設定、使用者喜好設定的資料庫:Registry。你不想重新安裝系統後又辛苦地一一恢復桌面的布置吧?你也不想放棄個人的一些設定對不對?好,別忘了備份 Registry。

Registry 是什麼東西?Windows 3.x 有 system.ini 和 win.ini 兩個檔案,用來記錄系統環境設定、應用程式設定、使用者喜好設定。Registry 的內容可以說就是 system.ini 和 win.ini 的總和,再加上 OLE(ActiveX)環境設定、各式各樣的路徑設定...包羅萬象。事實上 Registry 可以儲存任何東西。是的,任何東西,甚至包括程式的資料。

O'Reilly 的這本書是我今天介紹的四本相關書籍中最硬的一本 -- 我指的是它的技術深度。本書第一章介紹 Registry 到底是什麼東西。第二章講 RegEdit(一個 Registry 編輯工具)的操作,包括執行畫面、一般操作、內容修改、如何匯出/匯入 .REG 檔、如何增加搜尋效率等等。這一章最後有一個 VB 程式,用以模擬 RegEdit。有趣的是本章使用了 APISPY32 來刺探 RegEdit 啟動時的行為,因而得知 RegEdit 所呼叫的 Registry APIs,做為以 VB 開發模擬程式的線索。各位還記得 APISPY32 吧,Matt Pietrek 的得意作品,我曾在今年三月的無責任書評中介紹過,本刊四月份的一篇「技術總動員:Spy 軟體和 DBWIN」也有觀念層面上的討論。這個 APISPY32 也放在本書的書附磁片中。

Registry 是如此重要,將它周期性地備份也就成為必要的日常功課。然而這一點常為坐在電腦前面的人所忽略。第三章介紹 Registry 備份工具(都是 Windows 95 原就附有的)并分析其利弊。作者并發展出一套備份哲學。

第四章足足有 85 頁,目的是要經由徹底地驗證與詳盡的說明,讓 Registry APIs 容易使用。這些 APIs 在 Win31 時代存在於 SHELL.DLL 中,在 Win95 時代則是存在於 ADVAPI32.DLL 中。

第五章講解如何從 Win16 程式和 DOS 程式中存取 Registry。有這個必要嗎?是的,畢竟 Win95 底下也可以跑這兩種程式。但新開發的程式應該不會往這條路走了,所以視需求你可以跳過本章。但本章另有一個好處,你可以從此了解 registry APIs 如何在 Win95 中實作出來,因為 Win16 程式和 DOS 程式發出的 registry API 最終是由同一個 VMM service 服務。本章提供一個 REGDUMP 工具軟體,是個 console 程式,可以把 Registry 全部傾印出來(通常不會少於 15000 行。嚇人吶)。

順帶一提,本書談到低階題目如 VxD、VMM 時,常常叁考 Andrew Schulman 的"Unauthorized Windows 95" 和 Matt Pietrek 的"Windows 95 System Programming SECRETS" 兩本書。

第六章教我們如何以 Visual Basic 存取 Registry。VB 程式員常常對 Windows API 認識不多,對系統也是,因此這一章對他們可能有些困難需要克服。這一章有將近 80 頁的長度。

第七章給我們一個 OCX(OLE Custom Controls),此 OCX 在我們自己的 VB 程式和 ADVAPI32.DLL 之間提供幫助,使我們對Registry 的操作更簡單,不必呼叫 Registry API。這一章教你如何安裝這個 "Desaware" OCX 以及如何使用它(也就是介紹其 properties 和 methods)。"Desaware" OCX 當然也可以使用於 C/C++ 程式。

終於渡過了險山惡水,像我這樣原本只是想知道 Registry 內含什麼寶貝的人,終於可以不必理會深澀的技術,好好地看看 Registry 的內容了。第八、九兩章介紹 Registry 的三大類資訊:系統設定、應用程式設定、使用者喜好設定。對於軟體開發者而言,你會因此知道你的程式應該安裝到使用者的什麼地方,你的 DLL 又應該安裝到什麼地方...。兩章共 126 頁。

第十章給我們兩個 spy 軟體,一個是 RegSpy95,一個是 ApiSpy32。前者是 Alex Schmidt 特別為本書設計的一個工具,包含一個靜態 VxD 和一個 Win32 可執行檔,用以偵測系統中的其他程式對 Registry 的存取動作。後者是 Matt Pietrek 開發的工具,包含一個 DLL 和一個 Win32 可執行檔,用以偵測系統中某個程式的 API 呼叫動作。這一章并不是告訴你這兩個軟體的設計哲學,而是教你如何善用它們。其中 RegSpy95 的 VxD(FOOTPRNT.386)原始碼沒有放在書附磁片中。哎,為德不卒!

RegSpy95 記錄的資料,洋洋灑灑。它的預設輸出裝置是 console 螢幕,將輸出重導向到檔案再慢慢欣賞,是一個好點子。不過那麼龐大的內容,沒有篩檢的話,無人消受得起。幸運的是 RegSpy95 有非常大的彈性允許你規范它的刺探對象以及輸出格式。也許你要問何必有此?RegEdit 不也就夠了嗎?完全不一樣!RegEdit 是讓你看 Registry 的現況,RegSpy95 則是讓你看到應用程式如何操弄 Registry。

RegSpy95 的設計以及 FootPrnt VxD 的使用在章節中有相當程度的描述。至於 ApiSpy32 就完全只提其使用,如果要知道這個鬼斧神工的東西怎麼做出來的,或是想獲得其原始碼,你得買看原設計人 Matt Pietrek 的書。

第11章很短,作者給我們一個 Ini2Reg 工具軟體,可以把一個 .ini 檔轉化為 .reg 檔,然後你就可以利用 RegEdit 把 .reg 檔合并到 Registry 中。
本書提供的所有工具或范例程式都在附錄B說明。讓我再將幾個很棒的工具做個整理:

★ApiSpy32 - 刺探你所指定的某個行程的 API 呼叫動作,連同函式名稱、執行時期叁數、回返值、記錄到一個輸出檔中。刺探的 API 名單可彈性調整。

★RegSpy95 - 一個 console 程式,刺探所有行程的 Registry 存取動作。輸出的方向以及格式可彈性調整。

★RegMon - 一個 GUI 程式,刺探所有程式的 Registry 存取動作。這個程式曾在 Windows Developer's Journal 的 1996.10 那一期發表過("Examing the Windows 95 Registry")。請注意它與RegSpy95 的差別:RegMon 的刺探引擎是個動態 VxD,所以它沒有辦法偵測 RegMon 執行前的 Registry 活動。RegSpy95 就不同,它的刺探引擎是個靜態 VxD,而且有自己的記憶體緩沖區,可以從系統一啟動就開始偵測 Registry 的活動。

★RegDump - 這個工具有三種版本:Win32 console 程式、DOS 程式、Win16 stdio 程式(利用微軟的 QuickWin 或寶藍的 EasyWin,或是 Ansrew Schulman 發展的 WINIO 函式庫)。此工具可以輸出 Registry 內容,輸出格式不同於 .reg 格式,較易閱讀。

★Ini2Reg - 一個 console 程式,把 .ini 檔轉換為 .reg 檔。

★RegFSD - 一個 VxD,你可以把它想像成一個虛擬磁碟。利用「控制臺」的「新增硬體」精靈安裝它之後,整個 Registry 在「檔案總管 Explorer」中就變成了 Win95 檔案系統中的一個邏輯磁碟,每一個 key 和 subkey 變成了目錄和子目錄,每一個 value 則成為檔案。value 所帶的 data 則是檔案內容。於是你可以像對待標準資料夾(folder)一樣地對待 Registry,也可以使用標準的檔案操作函式如 SetCurrentDirectory、ReadFile、WriteFile、FindFirstFile、FindNextFile、FileClose 取代 registry API 函式如 RegOpenKey、RegQueryValue、RegSetValue、RegEnumKey、RegEnumValue。RegFSD 帶給我們一些全新觀念,作者是這麼說的:

RegFSD is intended to illustrate a concept - namely, that any computer system object can be located within the shell's namespace, and can be handled using a familiar metaphor and a set of API functions appropriate to that metaphor.

附帶一提,這本書的紙張有濃濃的化學味道,我的鼻子不太強壯,為此買了個口罩。書中文字密密麻麻。編排也不太理想,頗傷眼力。閱讀本書應伴服幾顆枸杞明目丸。話說回來,本書真的是「俗擱大碗」,這也是 O'Reilly 出版社向來的風格。

 

■Inside the Registry for Microsoft Windows 95

作者:Gunter Born
出版公司:Microsoft Press
出版日期:1997 年初
頁數:7章,346 頁
售價:US$ 24.99。無磁片

1. Basics
2. The Registry Editor and Other Registry Tools
3. Registering Filename Extensions
4. Customizing the Desktop, Start Menu, and Control Panel Properties
5. Customizing the Explorer Menu and Shell Icon Settings
6. Miscellaneous Registry Settings
7. Programming Issues
Appendix A: Icons Contained in SHELL32.DLL
Appendix B: Values for the International Key
Appendix C: The Registry in Windows NT 4.0 Workstation
Appendix D: Further Reading

inside-registry-for-win95.jpg (17033 bytes)


相對於剛剛介紹過的上一本技術導向的書,此書就明顯偏向給使用者和管理者閱讀。章節安排得還不錯,對於沒有技術背景的人不會有什麼壓力。如果你不會寫程式,除了第7章之外,全都適合。閱讀此書,你要把它想像是一本應用軟體的使用手冊,而 RegEdit 就是那個應用軟體。你要實驗,才有體驗。

 

■Windows NT Registry Guide

作者:Weiying Chen
出版公司:Addison Wesley
出版日期:1997 年四月
頁數: 7 章,264 頁
售價:US$ 34.95。含光碟片一。

1. Registry Structure
2. The Registry Editor
3. Registry APIs
4. Using the Registry APIs in Visual Basic Applications
5. C++ Examples of the Registry API
6. ActiveX Technology Support within the Registry
7. NT Shell Extension Programming


很難得看到這麼輕薄短小的電腦書籍了,讓人心情為之一寬。

和所有的 Registry 書籍一樣,Registry 架構、RegEdit 操作手法、Registry APIs 介紹在本書樣樣不缺。此外各位可能在第七章看到陌生的東西。第七章介紹 namespace、virtual folder、shell extension。不知道你有沒有和我一樣的經驗,初初接觸 Win95 時,我聽人家說資料夾(folder)就是檔案系統中的目錄(directory),可是你知道的,有些資料夾沒有對應的磁碟目錄(例如「我的電腦」和「網路芳鄰」)。原來是 Win95 和 NT 4.0 把自 MS-DOS 2.0 以來就形成的檔案目錄階層觀念更擴充,稱為 namespace。資料夾就是一個 namespace -- 一個 COM 物件,可以內含所謂的「檔案物件」。這里的檔案物件是廣義的,舉凡儲存設備、網路資源、印表機等等都能夠放入資料夾之內。當物件被放入其中,就和該資料夾產生關系。當物件被搬離資料夾,關系就告中斷。資料夾和其內的物件有某種特約關系,所以在印表機資料夾中不能夠放入一般檔案。

像「我的電腦」這種不對應至某個磁碟次目錄的資料夾,又被稱為虛擬資料夾(virtual folder)。

第7章雖然對於七種 Shell Extension 都做了介紹,卻幾乎都只是文字描述,份量也不多,具體的程式碼更少。Shell Extension 是一種嶄新的程式形態,也是一種 COM 物件,以 DLL 的形式呈現,可以擴充Windows 的 shell 的能力。使用者在 shell(不是指 "explorer" 檔案總管)上的動作如雙擊、拖放、按右鍵、捷徑、圖示內容...,都是 shell extension 可以著力的項目。我對 shell extension 有高度興趣,因為它可以實現更棒更方便更物件導向化的使用者介面。

 

■Windows NT Registry TroubleShooting

作者:Rob Tidrow
出版公司:New Riders
出版日期:1996 年末
頁數:8 章,400 頁
售價:US$ 39.99。含光碟片一。

1. Introducing the Windows NT Registry
2. Understanding the Windows NT Registry Structure
3. Understanding the Role of Initialization Files in the Windows NT Registry
4. Using the Windows NT Registry Editor
5. Examining Network Settings in the Windows NT Registry
6. Using System Policy Editor to Modify Registry Data
7. Administering Remote Registries from Windows NT
8. Troubleshooting Specific Problems Using the Windows NT Registry

Appendix A: Windows NT Registry Values
Appendix B: About the Software on the CD-ROM
Appendix C: Finding More Information
Appendix D: Troubleshooting Specific Windows 95 Problems in the Registry

winnt-registry.jpg (20077 bytes)


奇怪,英文書的字怎麼愈來愈小?真傷眼力。閱讀本書,請伴服枸杞明目丸,雙份!

這本書沒有講如何在程式中存取 Registry,全部都是使用者(應該說是系統管理者)層面的知識。乍見之下 WinNT 的 Registry 和 Win95 的極類似,其實也有不少差異。

NT Server 常被用來做為網路作業系統,所以第5、6、7章相當強調了Registry 在網路這一部份的性質。光碟片附有一些工具軟體,都是共享軟體或免費軟體。這些工具都是對 Registry 做一些整理、搜尋的動作。
 

■雜志文章與其他

無獨有偶,PC Magazine May/06/1997 的【First Look】專欄也介紹了五本 Registry 書籍。彷佛這玩意兒一下子炙手可熱。其中除了 O'Reilly 的那一本與我的名單重復之外,另四本如下,各有極簡短的說明。我只列出書名、出版社名稱和價格:

1. Windows 95 Registry & Customization Handbook(Que,US$ 50)
2. The Windows 95 Registry:A Survival Guide for Users(MIS Press,US$ 25)
3. Windows 95 Registry Troubleshooting(New Riders,US$ 40)
4. Using the Windows 95 Registry(QUE,US$ 60)


除了上述書籍,PC Magazine 上也有四篇與 Registry 有關的文章:

★The Windows 95 Registry Part1 ... Barry Simon 1995/10/24
(討論 Registry 架構)

★The Windows 95 Registry Part2 ... Barry Simon 1995/11/07
(討論 HKEY_CLASSES_ROOT)

★The Windows 95 Registry Part3 ... Barry Simon 1996/01/09
(利用 Registry 修改系統圖示)

★Explorering the Windows 95 Registry ... Jeff Prosise 1995/11/21
(Registry 泛論)


●讀者來函一

無數次想寫信給你。看到壞書想,看到好書也想。近幾年,對於壞的譯本,已經難以忍受了。好多不錯的原著都給譯者糟蹋了,不是嗎?
好的原著如果遇人不淑,真是令人吐血。其實多譯好書是臺灣目前
迫切需要的,但是夠格的不譯,不夠格的亂譯。


看到壞書和看到好書,請首先想到寫回函卡給出版社(愿意 cc 一份給我自是吾所歡迎)。我非常同意你說「多譯好書是臺灣目前迫切所需」,是的,本土的軟體應用書籍不虞匱乏,品質也愈來愈好,但是本土的技術書籍嚴重貧血,需要洋將補強,并且不必有人數限制。

我曾經嚴厲批評少數出版人對於翻譯的不正確態度。由於有資方的不正確態度,才會有勞方的不正確行為。對於那些荒謬行為和荒謬產品我已經說過很多。好譯作真的貢獻匪淺,讓人如沐春風,可惜我們很少能夠陶醉在春風里。

交大外文系曾經想開科技翻譯的課程,我不知道開成了沒有。多培養人才確是當務之急。不過科技翻譯是該以科技人員為主,外語人員為輔?還是該以外語人員為主,科技人員為輔?我想前者比較容易成功。

BBS 上的電腦書訊版常有人反應,看過一些爛書可是罵不出所以然來。我希望我能夠挑幾本有代表性的中譯爛書,為大家示范一下罵法。這些代表性包括:

1.「掛羊頭賣狗肉」:逕行將原書改名,企圖誤導購買行為。
2.「愛德華剪刀手」:逕行刪除原書內容而絲毫不加說明。
3.「小孩子玩大車」:外行人譯內行書,鬧出一大堆笑話。
4.「和稀泥打爛仗」:錯字、別字、掉頁、錯頁...一大坨一大坨。

我知道大家喜歡看這些東西,因為鳥氣實在受夠了。可是這麼一潑灑就又把我推到火坑里了。唔,我還在考慮。
 

●讀者來函二

侯先生,您好!
無責任書評是我在很久以前就聽過的,之前也看過幾篇,
一直到幾天前才在書局看到集結成書,當下就刷了。雖然比較沒有什麼時效性,但是我比較喜歡這種可以一次把它K完的感覺。
我匯集了相當的能量,終於寫了這封信。
說實在的,我翻閱時邊看邊笑、邊看邊感動、有時也有一種怵目驚心的感覺!有時也合上書本,來杯咖啡、看著大海(我家是不用望遠鏡的,因為它就在我的腳下),陷入一種沉思之中。尤其是看到【對中譯本的批評】,每每說到我的心坎 ,好爽啊!像這一本 "xxxxxxxxx",
我就覺得真的是!@#$%^&*(!@#$%^&,
校稿的人在干什麼吃的(我想應該如您所云,根本就無人校稿。)
譯者也是 very 爛,我一直想罵他,就是找不到他的 email 位址。
整本書我不知道畫了多少錯字以及別字。若有機會的話,幫我罵罵他。


為免徒生困擾,我把你舉發的那本書書名拿掉了,抱歉。

我說,何不動手寫書籍回函卡給出版社?通常那是免貼郵票的。出版社看了回函卡怵目驚心,對於那種作者譯者一定列入拒絕往來戶名單。當然,看到好書也別忘了寄回函卡寫幾句贊美的話,那對用心的出版社和用心的作者譯者是莫大的鼓舞。

我想對您說的話很簡單,謝謝您花下的時間。希望您對書的要求一定一定要繼續下去,(因為我也會監督的哦,哈哈哈┅┅),如果也能影響您周遭的作者,那就更美了。

我們對當今電腦書籍的好和壞,一定要不吝嗇地明確表達出來。這就能形成一股監督力量。以前沒有管道,現在有了,很多 BBS 站都有電腦書訊版,彼此也有轉信功能。把您的看法寫上去應該有效果。我知道許多家出版社的主管都已經注意到這個電腦書訊版,他們也很有誠心要把東西做好。他們需要讀者誠懇的回應。當然他們也需要鼓勵,看到好書請別吝嗇說些好話。這些好話會產生巨大而不可思議的能量。我沒有騙你。

讀者影響出版社,出版社影響作者,看來是條頗為可行的路。出版社的態度舉足輕重,如果他們對書籍的態度正確,不夠水準的作者譯者根本就沒有生存空間。打零工的啦、撈一票的啦、混日子的啦... 各色人等就不會出現在需要高度專業的電腦書籍寫作領域里頭了。

我所接觸的出版社負責人其實都相當誠懇地希望出版好書,但礙於本身的人力物力沒有辦法篩選作者以及書籍內容。讓我們助彼一臂之力,同時也為我們自己往後的閱讀利益盡點心。

作者這邊嘛,點名評論當然有絕對的威力。不過如果你評論的是那種欠缺反省能力的執筆人,或者拿筆名當保護傘的人,可能會「是非紅塵不到彼」。作家有筆名本是常見的事(侯捷就是筆名),不過國內電腦文壇認真經營筆名的人不多,拿筆名當保護傘的人倒不少。

關於出版社「沒有能力篩選作者以及書籍內容」,這一點我認為有非常值得改善的空間,否則「出版社=印刷+鋪貨」,這出版事業做得就沒有意思。什麼?你說出版社還會幫忙排版?很多作者早就自己排版羅。

我內心的千言萬語,我內心的感慨,我內心的莫名感動,我都將它化成一句【謝謝您 謝謝您 謝謝您 謝謝您】,不曉得會不會太簡單了,但是我是由衷的。不知您是否明了!!!

明了。同時謝謝您帶來的激勵。直言罪人,所以我需要這種鼓舞。

最近我與一家出版社的高階主管晤面論書。他贈送我一本自家生產的有關於 Photoshop 的書籍。很棒的質感,不論封面、編排、印刷、紙張。我詢問市場反應如何,他笑呵呵地說出乎意料的好。是了,好東西是不會寂寞的。市場的選擇性以及對高品質的接受度,給了這位主管很大的信心。我相信,高品質是一條不可能回頭的路。你看,我們慢慢有了彩色書,有了文圖并茂并且極盡心思編排的軟體應用書籍,有了全網片輸出的書籍。或快或慢,不管著作或譯作,好書會成為主流,爛書會成為另類,我有信心。而我們的勇於批評與適時鼓勵,會加快出版業者的進化腳步。

我已看到軟體應用性書籍進入高質感層次,其數目差不多可以從質變到達量變了。至於技術性書籍,還有相當的路要走。


 carton-manybooks.jpg (31443 bytes)


侯捷 2010-09-10 08:31:04

[新一篇] 選義按部,考辭就班

[舊一篇] David Kruglinski 死亡紀事
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表