再谈 Windows 程式设计好书

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

发表日期 : 1993.02 

Windows 3.0 推出近两年後,Microsoft 推出了 3.1 版,
一下子就冲上软体排行榜的 top 10。
这一次我介绍一本特别标榜 Windows 3.1 的书、
一本 Windows 3.1 OLE 的专书、
以及「伟大」的 Gates 先生传记。

上个月空中相会,我为大家介绍了三本超重量级的 Windows 程式设计书籍。这一次,延续同样的主题,再介绍两本好书给读者,包括一本特别标榜Windows 3.1 的书、一本特殊领域 (Windows 3.1 OLE)的书、以及「伟大」的Gates 先生传记(乖乖,我真是飞象过河了)。别急别急,下个月再来换口味。

你说奇怪,侯捷月啖三本,面不改色,看书像喝白开水一样 ?! 可是你怎麽知道我面不改色 ? 第一期刊出後,许多朋友关心,对於我每月介绍这麽多的篇幅,抱着审慎而不乐观的态度。的确,像第一期那样三本书加起来厚达 2554 页,除以 30,平均一天得消化 85 页,侯捷没有这样的本事。我现在消耗的是战备存粮。又有好事者替我规划了一天的生活,最後铁口直断我将因为周期性的读书压力而产生职业倦怠终至弃笔。这让侯捷想起惠施与庄子的对话: 子非鱼,焉知鱼之乐 ?

然而,以後的无责任书评终究不能够每一期都长篇大论,「高论无穷如锯屑,小诗有味似连珠」。

不管是第一次浏览或是当作工具书来查,看原文书其实有些技巧。英文书的好处是书後面都有索引(index),哪一个名词出现在第几页都列出来,这是因为其拼音文字的特性,并且英文文书处理软体很发达,可以轻易做到这一点。我们要好好利用这个索引,帮助快速翻到要找的主题,不然一本厚达千页的书,如果不是对章节很熟的话,如何找起呢 ?

第二个技巧是现在许多书籍都附有磁片,佐以大量篇幅的程式讲解,我们在追踪(trace)程式时,常常在看到某个函式呼叫後,上穷碧落下黄泉,不知道该函式是在哪个档案中的哪个地方,这时候你就需要一个上手的搜寻程式。Borland C 附的一个 GREP.COM 就很实用,它的用法如下 :

grep -d "abcdefg" *.c

这麽一来 grep 就会把目前目录及其子目录(因为 -d 叁数之故)中所有 .c 档案中有 abcdefg 这个字串的每一行列出来。用来搜寻中文也是可以的,校稿时我常有机会用到它。

Windows 3.0 推出近两年後(1990/05-1992/04),Microsoft 推出了 3.1 版,一下子就冲上软体排行榜的 top 10 而且久居不下。所以我说 Microsoft 做的是万无一失的生意一点没错,如果他们推出新版作业系统而你不想更新,那才是怪事一桩。(如果你的小组成员迟迟不想上新版,一定是计划中出了什麽问题,钉紧点 !)电脑书籍市场这边也是热闹非凡,封面上有 3.0 字样的一律被判死刑,於是大家纷纷换装。有的作者比较聪明,乾脆就打 Windows 3.x 的旗号,以不变应万变。严格来讲也不算错,软体总是往前相容嘛,不然谁敢在上面发展软体 ? 谁又敢用这样的软体 ?

给终端客户看的书换装很容易,国内很快也有了各种轻松易用、快乐活学的书;程式设计方面要推出新书可就困难一点,这里为各位介绍一本 Windows 3.1 程式设计书籍 : Programming in Windows 3.1。

背景资料 :
书名 Programming in Windows 3.1(2nd edition)
作者 Farrell & Connally
出版 Que
页数 24 章,704 页
售价 US$ 39.95
磁片 Yes

Part I Developer's Tools and Concepts
1. Setting Up for Windows Programming
2. Using the Development Tools
3. The Windows Programming Model
4. Windows Style Guide : Windows and Menus
5. Windows Style Guide : Dialog Boxes

Part II Building Windows Applications
6. Creating a Program Editor : The Basics
7. Creating Menus
8. Creating Dialog Boxes
9. Windows 3.1 Common Dialog Boxes : Filename Selection
10. Using the Edit Class Window
11. File Funtions Under Windows
12. Using Global Memory and the Clipboard
13. Printing with Windows
14. Multiple Document Interface

Part III Advanced Topics
15. Displaying Text with the Graphics Device Interface(GDI)
16. Display Graphics
17. Scrolling Screen Contents and Controlling Mouse Events
18. Dynamic Data Exchange(DDE)
19. User Interface Guidelines for Object Linking and Embedding
20. Dynamic Link Libraries
21. Debugging Windows Applications
22. True Type Fonts and other New Features
23. Windows NT
24. Third-Party Tools and Utilities


这本书最大的特色当然在於它包括了一些 Windows 3.1 才有的特徵(例如 Common Dialog、DDEML、OLE、Truetype Font),以及第二十三章的 Windows NT。 基础的东西集中在 part I 和 part II(几乎每一本 Windows 程式设计书籍都有这些主题)。本书的特徵全集中在 part III。

Part I 介绍软体发展过程中的重要工具(如编译器、联结器、档案维护器...),以及重要的观念,对於初学者而言相当实用。有的书一开始就劈哩啪啦讲程式设计,却忽略了读者认识开发环境的重要性。第二章有一个小节介绍如何使用 MASM 写 Windows 的组合语言程式;还有一个小节介绍如何在 Windows 程式中拿取环境变数和命令列上的叁数。这在传统的 C 程式中透过 main() 的引数就可以取得,但在 Windows 程式中程式员必须自己分析 WinMain() 的 lpCmdLine 叁数。其实也不必这麽麻烦,因为 Windows 内部也有 argc 和 argv 变数,只是 Windows 手册上说的不够清楚(本书也不够清楚),有心的读者可叁考 Microsoft Systems Jouranl(MSJ)1991/05 那一期的 Q&A;如果你是在 Borland C 上发展,还得再叁考 MSJ 1991/09 那一期的 Porting DOS Programs to Protected-Mode Windows with the WINDOS Library(作者 Andrew Schulman)。

第三章介绍许多术语,像 object、handle、event、instance、DC...。亲爱的读者,阖上书本你能流利地定义出这些名词的意义吗 ?

object: a group of items that when associated together compose a whole.
like a car, when you drive it, all these parts enable it to run
and serve as essential components.

handle: a unique name given to an object.

event: something that happen, an occurrence that affects something else.

instance: Windows' handle to your application.

Device Context: a combination of a device and ites driver.

DDB: bitmap that has a close correlation between the bits in memory and
the pixels on the monitor.

DIB: describes the appearance of an image without specifying a one-to-one
correspondence between bits and pixels.

bitmap: an image formed by a pattern of bits. On a video screen , these
bits are known as pixels.

对於一个初次接触 Windows 的人,我怀疑他是否体会这样的解释。不过「体会」这件事本来就很微妙的,多看几次多听几次,再旁徵博引一下,没有感觉也变得有感觉了。

第四、五两章很有意思。这两章介绍 Windows 程式应该有的风貌。什麽叫作「应该有」呢 ? 所有 Windows 程式第一个功能表都是 File,第二个功能表都是 Edit,你偏要把 File 放在最後一个,Edit 放在倒数第二个。当然可以,没问题,这是你的自由,但 Windows 揭橥的一个大目标是让使用者能够「熟悉一套软体的操作方式後就等於熟悉了所有 Windows 软体的操作方式」。如果你放弃与别人相同,偏要标新立异,市场上吃亏的是自己。第四章以 Microsoft Word 为例,举出许多设计风格,像 message line、status bar、control bar。第五章对於各式各样的对话盒及其使用时机有十分详尽的叙述。看完这两章你会对要怎麽发展 Windows 程式的外貌有一个谱儿,因为视窗、功能表、对话盒就是终端用户要面对的第一线。看这两章有点儿像在看 Common User Access(CUA,IBM 主导的图形人机介面设计规格。Windows 3.0 SDK 附有这本手册,但 Windows 3.1 SDK 已经取消)。

第六章开始(也就是 Part II)才是程式设计(我注意了一下,这是第 192 页),以一个应用程式的发展为经纬,每一章加入一部份功能,很理想的教育方式,让读者循序渐进不知不觉完成一个大型软体。Windows 3.0 刚推出时,MSJ 曾在 1990/July 至 1991/May 有六期相关连载,也是这种方式(MSJ 当时是双月刊,现已改为单月刊),该例题相当好,并没有因为时间而褪色。这种方式的缺点就是读者很容易搞不清楚哪一部份程式码是新增的,因此在抓重点时容易浪费时间。本书相当体贴,每一章的新增程式内容都以粗体字呈现,一目了然。本书所举的程式例是一个档案编辑器,所以你可以学习到 menu、dialog、EDIT control、file accessing、printing、MDI 等技巧。

第九章一整章介绍了 Windows 3.1 的 Common Dialog 程式写法。可惜的是只介绍Common Dialog 四种型式中的一种 : Filename Specification,其他三种(color specification、finding and replaceing text、printing)并未提及。想更进一步了解 Common Dialog 的读者可以叁考 PC Magazine 的四篇连载(Ray Duncan 主持的 [Power Programming] 专栏):


1992/05/26 p379 The Windows File-Oriented Common Dialog Functions

1992/06/16 p393 The Windows Common Dialogs for Font and Color Selection.

1992/06/30 p377 The Windows Common Dialog Search-and-Replace Functions.

1992/07 p481 The Windows Common Dialog Functions for Printing.


这四篇文章的内容远比本书的第九章丰富得多。

我在文章中多次提到各种期刊、杂志,猜想许多读者自己并未拥有这些刊物,你可向公司建议订购,再不然自己订一份也是值得,因为内容非常好。或者你不嫌麻烦的话到和平东路二段的科技大楼(内有资策会、工研院、国科会的那栋),第十三楼的中央图书馆资讯分馆有各式各样的期刊,包括我常列出的这几种。我把我常看的一些刊物的价目列给读者叁考(以下均含空运费,单位美元):

Microsoft Systems Journal(MSJ)(月刊): 70.0
Dr. Dobb's Journal(DDJ)(月刊) : 70.0
C User Journal(CUJ)(月刊) : 65.0
Computer Langauage(月刊) : 69.95
Windows Tech. Journal(月刊) : 69.95
PC-Magazine(半月刊) : 62.0
(循常例,我得说 : 本价目表仅供叁考)

如果你想直接订购,到上述图书馆影印订阅单自行邮寄即可。最好以信用卡付费,否则要到银行填买外汇,要到邮局寄海外挂号,麻烦得不得了。我会利用无责任书评的一期专门介绍这些很好的刊物。

第三部份(15 章至 24 章)比较突出的有 OLE、Truetype 和 Windows NT。OLE (Object Linking and Embedded,物件联结与内嵌)是 Windows 3.1 在作业环境上的一项大进步,不仅影响程式设计,也影响终端用户,对於未来的操作习惯会有重大影响。十九章就是专讲 OLE 在使用介面上的新名词新观念。如何演练这些介面呢 ? Windows 3.1 附有四个支援 OLE 的小软体,都是我们耳熟能详的,两个OLE Server 是 Paintbrush 和 Sound Recorder(可以录音),两个 OLE Client 是Write 和 Cardfile。本章虽然没有告诉我们怎麽写 OLE 程式,但是对程式员仍有价值,因为写程式之前你首先得熟悉一大堆新名词与其定义。人说要成为好的Windows 程式员必先成为好的 Windows 使用者,这话应证在 OLE 上更是如此。至於OLE 使用介面之外,我已为你准备了一本专讲 OLE 程式设计的书,别急,就在下两页。

二十一章隔靴搔痒,全然搔不到痒处,对於 Codeview、Heapwalker、SPY 这三个工具只用 8 页的篇幅介绍。不过希望这能唤醒你对除错工具的重视。侯捷要很严肃地告诉你(我的脸上一点笑容也无),没有除错工具的协助,你别想写一个漂亮的大型 Windows 软体。如果你手上已有成品准备反驳我,我也只好赞你一声天纵英明。但请注意我说的是「漂亮」的软体。3.0 的时代,跑 Codeview 需要另一个单色显示器,现在可以与 Windows 3.1 共用一个显示器。不过我还是建议用两个显示器,才不会眼花撩乱。一个单色显示器加一片单色显示卡,不超过NT$ 3000.0。

二十二章是大杂烩。在这一章中我们看到作者对Font 的描述,也看到了 TureType 的意义(这是一个规格,一种字形产生方法),看到了自班杰明.富兰克林以来对字形的种种规范。你绝对意想不到小小的字形原来花样这麽多。此外作者也讨论了 Windows 3.1 的 drag and drop、Compression、ToolHelp、Stress Testing、Version Control。但如果你想在这一章中学到一丝丝程式技巧,那是作梦,因为全是文字述叙,而且都很简短。本章作为常识的补充倒是不错的。

坊间没有一本书专讲 Windows 3.1 的新功能。其实这个主题非常好,一定有大卖点。绝大部份标示 Windows 3.1 的书都是只讲其中的几个特徵。我把 3.1 的新功能大致整理给读者叁考 :

Windows 3.1 新功能 所属 DLL 好处
Common Dialog COMMDLG.DLL 减轻程式员负担;使用介面(UI)标准化
DDE 管理函式库 DDEML.DLL 减轻程式员撰写 DDE 程式的负担。
档案压缩与解压 LZEXPAND.DLL 适用於软体包装与安装。
多媒体 MMSYSTEM.DLL 满足人类声色官能欲望,好处说不尽,可以专文探讨。
物件联结与内嵌 OLESVR.DLL
OLECLI.DLL
多工环境下的 OLE 性质将大放异采,实现 Document Center 的观念。
刺探 Windows 内部 TOOLHELP.DLL 满足有系统窥视狂的人(像侯捷);可使用它写 debugger
版本控制 VER.DLL 避免软体版本与 Windows 版本不符,例如你的客户在 Windows 3.0 之下执行你的 OLE 程式。
档案拉曳
drag & drop
SHELL.DLL 使你程式的使用介面(UI)更灵活。

以上或有挂一漏万,请原谅我。

二十三章是引发我看这本书的最初动机,介绍的内容是众所瞩目却至今琵琶半掩的Windows NT。除了 Win32 API Volume1 和 Volume2 两本书(与其说书,倒不如说是手册),以及 Microsoft Press 於去年年尾才出版的 Inside Windows NT 外,这应该是最丰富的 NT 内容了。46 页的篇幅介绍 NT,本章自有其可观之处。要了解 NT,你实在必须很博学才行,你得了解 Intel 处理器的保护模式定址,才能够了解 NT 的 flat model;你得了解 paging 的观念,才能够了解 NT 的分页式虚拟记忆体;你得熟悉网路,才能够体会 NT 号称网路作业系统的技术关键;你最好还有UNIX 或其他多人多工作业系统的使用经验,才能够体会 NT 强调的 security 以及 protection 的重要性。对於程式员而言,他最想知道 API 改变了多少,增加了多少。这里有好消息 : API 改变的不多,但你最好从现在开始就以新的格式来写 Windows 程式,以便过渡到 Windows NT。坏消息是,NT 的 API 函式总数已经超过了一千个(使用者的快乐总是建筑在设计者的痛苦上)。

这一章的最後,将一个原在第十五章的 GDI 范例程式改编为 NT 可接受的 WIN32 程式。这个小程式使用的各种函式都在 WIN16 和 WIN32 中出现,而且没有变化;重点是在某些型态定义的改变,例如 APIENTRY、UINT、MAINAPI...,这些都是新的型态。沿续第一、二部份的风格,作者在这一个小例子中把 WIN32 程式与一般 WIN16 程式的差异处以粗黑字体示出,非常清楚。本书制作水准高,纸张以及图片都很精良,示意图也不少。

背景资料 :
书名 Windows Programmer's Guide To OLE/DDE
作者 Jeffrey D. Clark
出版 SAMS
页数 8 章,556 页
售价 NT$ 34.95
磁片 Yes

Part I Dynamic Data Exchange
1. Dynamic Data Exchange Concept
2. DDEML Conversation Management
3. DDEML Transaction Management
4. DDEML Monitor Application

Part II Object Linking and Embedding
5. Object Linking and Embedding Concept
6. OLE Server Application
7. OLE Client Application
8. Object Handlers


看倌,当您在书店发现这本黄皮书时,是否如侯捷一样手脚发抖,瞳孔放大 ? 这是极度兴奋的生理反应。是�95对是可以专书探讨的。所以你没有在任何一本 Windows 程式设计书籍中满足过对 DDE 的饥渴也是可以了解的,并且这也是必然的现象。上期介绍 Charles Petzold 的 Programming Windows 有一章专讲 DDE,算是很不错的表现了。

Windows 3.1 提供的物件联结与内嵌(OLE)技术虽对终端用户而言是锦上添花,对程式员而言却是雪上加霜。光是新的使用介面(UI)以及新的术语就够你搞半天,(我一直背不起来 Paste Link 和 Owner Link 的差别),何况还有 66 个新的OLE API 函式等着您的幸临。

作者 Jeffrey D. Clark 虽然还未达另几位大师人物(Ray Duncan、Charles Petzold、Andrew Schulman...)那麽令人仰之弭高望之弭坚,巍巍然不可侵的尊崇,但本书足以令他挤身这个领域的知名人士之林是无庸置疑的,因为这是「独走」的一本书,找不到竞争对手,是读者的唯一选择。Clark 在前言中提到这是他的第一本书,软体界不是有个笑话说千万不要买 1.0 版的软体吗 ?(所以我们一定要记取前人的智慧 : 软体从 2.0 起步走)。本书虽是作者的 1.0,表现不错。巨型程式如 DDE 或 OLE 之流虽然追踪起来十分繁琐,我却不忍多加苛责,难道你有更好的表达方式吗 ?

顺带一提,我对出现在许多书籍自序中的一句话一直很感冒 :「笔者才疏学浅,误谬在所难免」。这当然是句自谦词,而我也不希望看到狂妄自大的家伙,可是什麽叫作误谬「在所」难免 ? 似乎误谬是可以接受与原谅的。没有任何人的着作可能万无一失,但读者的谅解与作者的自认为可以被原谅是完全不同的两码子事。误谬「在所」难免,唔,这样的措词我顶不欣赏。

本书分为两大部份,第一部份是 DDE(其实是以函式为基础的 DDEML),第二部份是 OLE。至於「以讯息为基础的 DDE」并未在书中提及,只约略带过一些观念。所以你最好看过 Petzold 的 Programming Windows 第十七章压压肚底,不然对更上层的 DDEML 和 OLE 难以心领神会 --- 没吃饭就喝酒可是会醉人的。两大部份的第一章(也就是第一章和第五章)有通盘性的观念介绍,但你不可能靠观念解释就懂得这麽复杂的实作手法,接下来的章节就是以范例程式来解释实作上的技巧。OLE 比 DDE 又复杂的多多,新的观念以及新的操作介面不少,我敢打赌在你似懂非懂之前,书页已经被又急又怒的手汗渍黑了不少。

DDEML 的观念其实和 raw DDE 差不了太多,只是不像 raw DDE 那麽生冷。client、server 的沟通对象不再是赤裸裸的彼此,而是 DDEML 这个中介调节者(电信局)。所以在 DDEML 程式设计中有所谓「注册」的动作。另外,DDE 中每一次通讯在 DDEML 中被称为一笔交易(transaction)。WM_DDE_ADVISE、WM_DDE_UNADVISE、WM_DDE_DATA、WM_DDE_EXECUTE... 全都转变为一笔一笔的交易。

本书第二章举了个十分简单的,以 DDEML 撰写的 client 与 server 程式 : client 程式可以与 server 程式通信,server 每接上一条通信线就在视窗中显示累计个数。此例完全没有资料的传输,只是练习如何与 DDEML 做沟通(所谓的conversation management)。第三章的例子比较有趣一些,是一个报价程式和一个股市行情程式(股友不必睁大眼睛,模拟的而已)。前者(server)提供股市行情(以乱数模拟,定时修改),後者显示股价於视窗中。这个程式才做到所谓的 transaction management。第四章示范了一个 DDEML 监视程式,就像是 Windows 3.0 SDK 提供的 SPY,以及Windows 3.1 SDK 提供的 DDESPY。这一章在程式码以及文字说明的比例上有点儿离谱,文字才 7 页半,程式码达 55 页。

使用 DDEML 到底有什麽好处呢(比起 Raw DDE)? 对终端用户而言没有好处,他才不管你的程式是怎麽写成的,只要会捉老鼠的就是好猫;对程式员而言最大的好处是程式比较好写,因为 DDEML(这是个 DLL)担起了内务府总管的工作。但是死硬派人士坚持 26 个新的 API 函式以及新的 DDEML 资料结构也不好学;不过有一个好处你一定得承认,由於通讯协定(protocol)已经隐藏在 API 函式中,所以程式出错的机率大幅下降。这句话的意义可能你不太容易了解,我解释更详细一点。譬如说如果你利用 DDEML 的 DdeCreateDataHandle() 准备资料,就不需要先配置记忆体、再锁定、处理、解锁;利用 DDEML 的 DdeClientTransaction() 和 DdeGetData() 就可以在 timeout 时间控制下获得资料,不需自己去做 hand shaking 的低阶动作。

第五章的 OLE 观念相信会耗掉你很多时间。读者可以从中了解什麽是 OLE 的 virtual table、verb、class、object、blocking...。第六章到第八章作者一共举了三个程式实例,一是 OLE server,可以产生一些多边形(视为 object);一是 OLE client(用以接受 object);以及一个 object handler(第八章)。程式实例可以让读者真正体会什麽是 document,什麽是 object,以及它们的资料结构。我认为认识这些资料结构是了解 OLE 的最重要关键,否则看过那麽多叙述你的脑中根本构建不出实体。

这本书从书籍制作品质来看相当不错,但示意图太少。很少有书籍在示意图方面能够让侯捷觉得满意。封面里页有 DDEML 以及 OLE 的 API 函式列表,是作者(或是编辑群)的细心处,相当实用。你知不知道日本汽车可能因为多设计了一个可乐罐的安置盘而拿下市场 ? 这并不是传闻。

想把 DDE 弄到网路上 ? 市售某些相关产品(都是一些动态联结函式库)如 NetDDE,可以暂解燃眉之急,但因为不是作业系统的层级,所以并不提供 security 功能。网路上最佳 DDE 解决方案是换一套作业系统 : Windows for Workgroups(WFW)或是 Windows NT。

有时候一直看同一本书脑袋会秀斗。如果你想多看一些 IPC 方面的资料,可以叁考MSJ 的四篇文章 :

1992/03 Taking the Bull by the Horns : Inversigating OLE, Part I.(Paul Klemond)

1992/05 Inversigating OLE, Part II : Adding Server Support.(Paul Klemond)

1992/12 Simplify Client-Server Applications Using the DDEML.(Gordon S. Smith)

1993/01 Network DDE in Windows For Workgroups 3.1 Bridges Programs Between PCs.(Kraig Brockschmidt)

背景资料 :
书名 弹指乾坤 --- 盖兹微软传奇
作者 Daniel Ichbiah、Susan Knepper
译者 陈正平
出版 麦田出版社
页数 414 页
售价 NT$ 300.0


billgates.jpg (14244 bytes)

既然连续两期谈到 Windows,我想你或有兴趣知道创造 Windows 的公司的老板,Bill Gates 的生平吧。我并不是越界写起传记书评来了,我并不想评它,这本书带给我一个愉快的下午,使我时而莞尔时而沉缅在回忆之中。我相信软体界没有人不对Bill Gates 感到兴趣与好奇。本书拿来作为励志文粹,或是给小宝当作床边故事来讲, 都相当具有启发性。

全世界所有学习电脑的人,或说是和电脑发生过关系的人,不管是大型电脑或是个人电脑,没有人没听过 Bill Gates 这个人。如果你硬是说你没听过,那你总用过 Microsoft 的产品吧。在台湾,哪一套 PC 开机後不是跑 MS-DOS (如果有 DR-DOS 的,也不必打电话来抗议,你可归为稀有动物类)。Bill Gates 不是别人,正是全球电脑软体王国的国王,他今年 37 岁! 全球首富!! 未婚!!! (编按 : Gates 现已婚)

Bill Gates 的大学知识背景是法律(但没有毕业),他是律师世家的小孩。由於其法律背景,使 Microsoft 的合约条文都相当完备,打官司也无往不利(编按)。当就读的湖边高中引进了当时还是十分稀有的电脑设备,Gates 与他的好友Paul 就沉迷在这个充满想像与乐兴的世界里(就像这本书的每一位读者一样)。Gates 由於对软体的热衷与天份,获得为 PDP 10 机器系统除错的机会,也因此奠下很好的技术基础。

(编按 : Microsoft 终於打官司踢到铁板,02/03/1994 败给 Stac 公司的 LZS 资料压缩专缩专利,赔偿一亿二千万美元;不过它也在preloading feature 方面回捞了 Stac 公司一千三百七十万美元)

软体人员如果没有热忱是不可能出人头地的。我的办公室有过一位传奇性人物,为了赶资讯展,一星期足不出户,外面刮风下雨一概不知(我没有追问洗澡等俗不可耐之事)。另有位朋友已经结了婚,每天却在办公室待到半夜 12 点,在办公室吃喝拉撒(更多的时间是盯着电脑萤幕),夏天泡冬瓜茶冬天煮红豆汤,锅碗瓢盆一应俱全,老婆小孩全不顾,被封为部门两大门神之一。其实,他们的努力付出,岂是为了什麽报酬。区区加班费,如果有的话,又算得了什麽 ? 完全是一股对软体的热忱。

Gates 的第一个事业起点是在他的 Basic 语言编译器。这是准备在 Altair 微电脑上跑的语言编译器。由於 Altair 微电脑配置的记忆体十分小,仅有 4K,所以 Gates 的 Basic 一定要限制在 2K 之内(总要留一点给应用程式跑吧!)。这一点可以看出 Gates 的天才,2K 写一个语言编译器,妈妈咪呀! 据说还十分稳定。更传奇的是,他的编译器是在其朋友 Paul 於 PDP-10 机器上自行开发的 8080 模拟器上完成的,而那个模拟器则是根据一本 8080 手册按图索骥撰写出来的。正式上战场之前他俩完全没有看过一部真实的 Altair 微电脑。Gates 的好朋友兼合夥人 Paul 也是天才,当他拿这成品飞往目的地途中,发现没有可用以输入的软体,竟在那种环境那种心情之下当场写了一个。(Paul 已自组 Asymetrix 公司,着名产品有ToolBook。Microsoft 最知名的多媒体节目「贝多芬第九交响曲」就是使用Toolbook 编辑而成)。

Gates 的第二个事业起点,可能是连他自己作梦也想不到的,IBM 找他合作一起开发IBM PC(当时代号是西洋棋专案)。IBM,一个令对手听了肃然起敬的企业,一个因为高阶主管都穿蓝色西装而被尊为蓝色巨人的伟大企业。如果你不能够体会它的伟大,我简单地说,IBM 的营业额曾经超过一个开发中国家的国民生产毛额。即使不羁如Gates 也要为了 IBM 大员来访而穿起西装打上领带。

很难想像,世界因这些机缘而改变。

接下来的故事就是大家比较熟悉的啦。Microsoft 推出 MS-DOS,打下 16 位元作业系统的天下;推出 Windows,打下 PC 图形人机介面的天下,并且因为 Windows 而与IBM 分道扬镳;推出 Excel,成为最赚钱的软体。

说到作业系统与应用软体,各位知不知道为什麽 Microsoft 跨足这两个领域并且大赚钱之後,美国的反垄断法要调查它 ? 在侯捷的观念里,他有本事活该他赚钱,即使酸葡萄旁人也没什麽话好讲。原来,这是为了公平交易,避免技术私相授受(作业系统部门留一手未公开资料,私相授与自己的应用软体部门),造成利益输送党库通国库的情形。

看这本书对於全球软体的发展史会有一个清楚的了解,大家耳熟能详的应用软体如VisiCalc、Multiplan、dBase、Lotus123、Excel 都曾经领过一代风骚;对微电脑影响至深的当代人物也会有一些了解,像是创办 Apple 的 Steve Jobs,发展 HyperCard 的Bill Atkinson,开发 PageMaker 的 Paul Brainerd,创下美国企业发展记录的Compaq 公司;还有一些小小的事情,但你知道後可能会备感温馨,像是 PARC 中心的西蒙,Windows 程式设计的习惯命名规则称为 Hungarian Notaion,就是为了纪念他(他是匈牙利人,Hungarian 是匈牙利人的意思)。

本书让我忆起许多过往。年轻朋友怕是只有在博物馆才见的到的打卡机,曾经陪伴多少交大人的黄昏到清晨;电算系馆排队打卡(程式卡片)的长龙迤逦数百公尺,唯餐图大道等进晚餐的队伍差可比拟;手抱二三十公分厚卡片叠的友系同学是我羡慕的对象与自卑的来源;耶诞节时打有 HAPPY X'mas 的电脑卡片满天飞;软碟刚问世时全电脑室共用一片,既不知道怎麽用也怕麻烦,结果每次上机重打数百行程式。往事令人莞尔也令人喷饭,更多的是伤感...。

Gates 是当今首富(他的排名随股票的涨跌而有变化)。不少小姐把他视为梦中情人。我的朋友小徐就非常崇拜他,据说去年底 Gates 来华她为他讲解电通所自行研发的软体时差点晕了过去。我已答允赠她一本弹指乾坤。

我在 22 岁要离开大学校园的时候,感叹马齿徒长,曾经以爱因斯坦 26 岁发明相对论而安慰自己;及长,又以「苏洵 28 始奋发」自我惕励;如今发已有点苍苍视也早已茫茫,才体会到天才之为天才,不是凡夫俗子靠勤奋二字诀可以追得上的。

但我还保持一点点的不死心,毕竟李登辉 43 岁拿博士 ! 


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

[新一篇] 三本 Windows 程式設計好書

[舊一篇] 窺視 DOS 和 Windows 的隱私
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表