偶像崇拜(一)
你的偶像是谁?在高中时代,我的偶像是抒情浪漫、高亢激昂的空中补给(Air Supply)以及静如处子、动如脱兔的凯莉·米洛(Kylie Minogue);现在我的偶像是David Flanagan、Jonathan Knudsen、Elliotte Rusty Harold、Bruce Eckel等人。你问我David Flanagan等人唱过什么歌,喔!你误会了,他们不唱歌,他们是Java技术作家。
我认为,适当地崇拜优质的偶像,可以激励起自己“有为者亦若是”的精神,使得自己加倍努力地向偶像看齐,对于自己能力的提升有莫大的助益。崇拜的对象在于精,不在于多,你得好好地挑选出“优质的偶像”。
在学习C/C++程序设计的时代,我的偶像是Herbert Schildt和Bruce Eckel。在我学习Windows程序设计的时代,我的偶像是Jeffrey Richter和Tom Swan。而现在我全部的精力都放在Java上面,我的偶像变成了David Flanagan、Jonathan Knudsen、Bruce Eckel、Elliotte Rusty Harold。为什么是他们四个?因为他们四个都已经出过数本Java书籍,而且几乎每一本的内容都独一无二,都是经典。
David Flanagan写过的书包括Java、J2EE、JFC、JavaScript,每一本都很精采,其中的《Java in Nutshell》一书更是人手一本的Java经典,此书年年获得JDJ的Java好书读者票选榜首。要写出《Java in Nutshell》这样深入浅出、叫好叫座、可读可查的书,我想David Flanagan肯定是花了不少心力。
Jonathan写过几本主题特殊的书籍,包括《Java密码学》、《Java 2D图学技术》、《乐高可编程积木》,每一本都得到非常好的评价。基本上,Java 2D并不如EJB、Servlet、Swing等主题来的热门,O'Reilly的Java 2D一书能如此畅销,甚至跃居 JDJ的Java好书票选排行第四,作者Jonathan功不可没。目前,Jonathan正全力在O'Reilly写书,所以我们可以期待不久之后他一定又会推出新书。只是,Jonathan是如此地博学多闻,我们无法预期他的下一本书会是什么主题。
Bruce Eckel是一名专业的顾问、讲师、和作家,他的研究范围以面向对象的应用为核心,涵盖C++、Java、Python、CORBA、Design Patterns。Bruce Eckel 的经典名作包括《Thinking in Java》和《Thinking in C++》。早在他的《Thinking in C++》第一版推出时(大概五年前),我就注意到他了。他的书中遍布深入而独到的见解,让我获益良多。Bruce Eckel这些年来大发慈悲,把他几本“最新版”的书的电子文件放到网站上供人下载,根本不管这样会影响到印刷版的销售量,少赚许多钱。我的周遭有许多人都是透过下载回来的《Thinking in Java》来学习Java的。《Thinking in Java》一书还得到今年Jolt Award的奖项。
Elliotte Rusty Harold是我最喜欢的作者,我喜欢他的程度更甚于前三位作者。Elliotte的《Java Network Programming》、《Java I/O》、《XML Bible》等书都是该领域 #1 书。Elliotte还维护一个Cafe Au Lait网站,天天更新内容,提供最新的 Java/XML动态。Elliotte 的书好到连 Bruce Eckel 都称赞:“在读过Elliotte的《Java Network Programming》一书之后,我才真正了解到网络程序设计是怎么回事。”
当然我的Java偶像不只这四位,还有许多。没有这些作者,我的Java程度就不能如此快速地日渐精进。如同Bette Midler的一首歌:“You are the wind beneath my wings”。
如果你光只是崇拜技术偶像,而没有把这股力量导向正面,没有努力地读完并彻底了解偶像所写的书,那就可惜了。我有一个同学,他的嗜好是收集了技术偶像的签名书并和偶像合照,只差见到技术偶像不会尖叫,感谢老天!在被他收集的名家当中,面向对象大师Grady Booch更是赫然在列,他甚至将Grady Booch和他的合照放在皮夹中,可以随时拿出来瞻仰一番,但是他却没详读过Grady Booch的书,甚至不知道Booch Notation中的实线云朵和虚线云朵之间的差异,这样的技术偶像崇拜就太肤浅了。
你没有技术偶像吗?我不介意你和我崇拜相同的人。
偶像崇拜(二)
试探性地摘下墨镜和帽子,我冒着极大的风险绕了天珑书局一圈,大家浑然未察觉一个名人就在附近。这就怪了,不是有许多读者写email给我,说我是他们的偶像吗?这时候竟然没有半个人出来簇拥我,枉费我特别穿了一件容易被扯烂的衣服,真是叫人“失望”!不!我是说“庆幸”。
不过读者会把我当成偶像,实在是令人匪夷所思。我除了在“Sleepless in Java”专栏上写了一些文章,又翻译过几本销售量屡创新低的书之外,实在没什么了不起的事迹。读者email给我的问题,有不少我是答不出来的,这样的人还配当偶像?一定是因为我在偶像崇拜一文中所介绍的偶像太少了,所以此次的文章又多介绍四个偶像,好让大家有移情别恋的对象。
Martin Fowler是我近期的新欢,是一位不可多得的大师级信息作家。他不但技术能力强,写出来的书更是相当好读。许多人称经典的书往往过于艰涩难读,所以当我看到 Martin Fowler能够把高深的知识讲得深入浅出,清晰有条理,读起来毫无压力时,我马上移情别恋,把Martin Fowler 移到我的偶像排行榜第一名。
Martin Fowler所写的《Refactoring》一书,可以说是继四人帮(Gang of Four)的《Design Patterns》之后,又一本影响力深远的书,Martin Fowler也因为此书变成 Refactoring的掌门人。Refactoring是XP(eXtreme Programming)的一个重要的因素。Martin Fowler所写的这本《Refactoring》成功地将常用的Refactoring分类、命名、举例说明。热门的主题往往会引来一阵跟风(Design Pattern 即为一例),但《Refacotring》一书问世至今,尚未有人写书赶此一热潮,我想可能是因为Martin Fowler的这本书实在太成功的缘故。建议你现在就去抢购,这本书很棒,“如果这本书不好的话,你们就来捶我好了”(语出多芬洗发精的电视广告。)
Martin Fowler另外两本很有名的作品是《UML Distilled》和《Analysis Patterns》。《UML Distilled》以去芜存菁的方式叙述UML,许多人都是透过此书才认识UML 的。而《Analysis Patterns》一书可以说是四人帮《Design Patterns》的OOA版,也是目前唯一一本Analysis Pattern领域的书。虽然《Analysis Patterns》未若《Design Patterns》掀起巨大的旋风,但实在不是Martin Fowler书写得不好,而是业界一向都比较重OOD轻OOA的缘故。
第二个偶像是Bill Day。在今年台北的Sun TechDays研讨会上,不经意地遇到Bill Day,我马上进入小鹿乱撞、袋鼠乱跳、又大象乱蹦的高度亢奋状态,逮着机会就不要脸地缠着他猛聊。还好我一直都在加强英文,和他沟通起来没有障碍。
Bill Day大学主修的是航空工程,毕业后却转换跑道到信息产业,而且还非常成功。Bill Day几年前的领域是在 JMF(Java Media Framework),JMF的规格书中有许多他的贡献,我记得当时他可以说是JMF领域中的第一把交椅。目前,Bill Day任职于Sun,负责带领一个J2ME的team,他同时还在大学开课教Java 3D。Bill Day原本拟在O'Reilly 出版一本JMF的书,但书写了半本之后,就没下文了,毕竟优秀的人总是很忙的。但我可管不了这么多,我还怂恿他写一本Java 3D的书。
我觉得像Bill Day这样可以从航空跨到信息,从多媒体通讯(JMF)跨到无线通讯和嵌入式系统(J2ME),再跨到计算器图学(Java 3D),而且都成果丰硕的软件工程师,实在很少。
第三个偶像是Alistair Cockburn,他所写的《Writing Effective Use Cases》一书刚刚得到今年的 Jolt Award(软件界很重要的奖)Books and Computer-Based Training 类的 Productivity Award。《Writing Effective Use Cases》一书针对写Use Case时的know-how有相当不凡的见解,这本书得奖绝对是实至名归。他在书中所提出的方法让我们在写 Use Case的时候有所依循,而且我觉得他独创的符号实在很酷,希望Use Case的写作软件也能支持这些有趣的符号。
Cockburn还有另一本书名为《Surviving Object-Oriented Projects》,我尚未阅读,手边也还没有此书。我把这本书列入我Future Reading List的书目中。糟糕!这个Future Reading List的书越来越多了。
第四号偶像是Scott Oaks。他在O'Reilly 写过数本Java 书,包括《Java Threads》、《Java Security》、《Jini in a Nutshell》。我发现Scott Oaks和Jonathan Knudsen有点类似,所写的每一本书主题差异都颇大。Scott Oaks所写出来的每一本书,内容循序渐进,很好阅读,而且深度也很够。以Java Threads一书来说,内容采取引导式教学的方式,这是自学类书籍内容安排最好的方式,也是最不容易写的方式。Scott Oaks的《Java Security, 2nd Ed》和《Jini in a Nutshell》也都是读者评价很好的书。
从我所崇拜的偶像名单中,可以看出我近期的喜好。上次列出的四位偶像都是Java书籍作者,此次却是一位Java书籍作者、一个Java程序员、两个软件工程类书籍作者。我最近对于软件工程有莫名的狂热。
偶像崇拜(三)
这是“偶像崇拜”系列的第三篇,当初怎么也没想到“偶像崇拜”会从一篇文章变成一系列文章。其实我的想法是:独乐乐不若众乐乐,介绍大家多多认识一些优秀的信息界贤达,也算是功德一桩。不过我要强调,我鼓励偶像崇拜,但不鼓励盲目崇拜,失去理性而不分青红皂白的偶像崇拜,很可能会招来灾难(你瞧瞧我们台湾的政坛,不正是如此)。
这个世界盲目崇拜偶像的人太多了,比方说:几周前,我在电视上看到日本举办一个活动,不是签名会,不是握手会,而是令人匪夷所思的“掴脸会”:一堆日本人排队让摔角明星猪木狠狠地掴耳光(真的打得很大力),被掴后还笑脸盈盈地频频称谢。崇拜偶像可以崇拜到这种地步,在我看来是很不可思议的。我就不一样了,这么说好了,虽然我很崇拜人称Java之父的James Gosling,但如果James Gosling 掴我耳光的话,翻脸比翻书还快的我,肯定马上回敬他一脸奶油派,并且从此变节改用C#。
同以前一样,此次的文章中要介绍的偶像也是四位,James Gosling 正是其中一位。James Gosling是名校卡内基梅隆大学(Carnegie-Mellon University)的信息科学博士,目前是Sun Microsystems的副总裁。他设计过许多系统,包括了卫星数据采集系统、多CPU版的Unix、编译器、电子邮件系统、窗口管理系统。他还自己写了一套“所见即所得”(WYSIWYG)的Unix平台文字编辑器“Gosling Emacs”。他到Sun工作之后,早期是NeWS窗口系统的首席工程师,后来是Java语言、编译器、和虚拟机器的原创者,所以常被称为“Java 之父”。目前他正在设计Java实时系统(real-time system),也对软件开发工具有浓厚的兴趣。
James Gosling是一个很幽默的人,常常会亲自搞笑,在这个毫无情趣的信息圈子可谓相当难得。参加过今年Taiwan JavaTwo的人应该都看过他的搞笑影片,他甚至也在1998年的JavaOne上演一段亲手拿奶油派砸比尔·盖兹的戏码,当然这个比尔·盖兹并非本人,只是一个戴上比尔·盖兹橡胶头套的演员,真是反应时事民心的大胆演出!(注:当时的不久前才发生比尔·盖兹在比利时被人砸奶油派的事件。)
第二位偶像是Bertrand Meyer,他是ISE(Interactive Software Engineering)公司的CTO,他所设计的Eiffel相当宏观,把语言、软件工程方法、和工具整合在一起。Bertrand Meyer是TOOLS研讨会的主席,他也是数本程序语言和软件工程类书籍的作者和编辑。早期他是一家大公司的技术和管理阶层,也曾是加州大学的教员。他参与过第一个版本 Z 语言规格的设计。
Bertrand Meyer所著的《Object Oriented Software Construction,2nd Ed》一书得到1997年的JOLT信息图书类“卓越产品”大奖。该书把面向对象的相关技术,里里外外地剖析得很清楚,难怪厚成那样。我认为面向对象的好书不用看太多本,只要看这本就足够了。Bertrand Meyer所创的 DBC(Design by Contract)技术已经开始影响到其它语言的设计,Java未来应该也会引进这样的观念。
第三位偶像是Guido van Rossum,他是Python语言的原创者。原是荷兰人,后来移居美国。他是荷兰阿姆斯特丹大学的硕士,在荷兰的时候,参与过ABC语言的设计实做,也参与过一套分布式操作系统的设计(Amoeba)。后来设计了Python语言。Python语言创立至今已经十一年了,也渐渐地变成一个相当受欢迎的语言,但他仍持续不断地在研究改进Python。1999年五月时,他与Donald Becker同时得到 Dr. Dobb's Journal的程序设计卓越奖(1999 Excellence in Programming Award)。
去年五月以前,他在CNRI(the Corporation for National Research Initiatives)工作,带领一个研究团队研究 Python在无线通讯上的应用,兼任Python Consortium(一个专司倡导Python的组织)的领导人。最近一年多,他开始为Digital Creations(Zope 的公司)工作,担任PythonLabs 的领导人。目前他正在进行一个项目,叫做CP4E(Computer Programming For Everybody),计划把Python这套易学好用的语言推广给每个人。CP4E也正在设计一个好用的工具来帮助程序设计的初学者与高手使用 Python。
第四位偶像是Carl Sassenrath,他是REBOL科技公司的创始者,也是该公司的CTO,致力于简化程序设计和软件操作的复杂度。他认为MS-Windows、C++、TCP/IP、HTML等现在流行的技术都是junk(垃圾),这些垃圾的设计者总是把事情搞得太复杂。他的理念是:软件应该使用起来很直观,简单的事就该简单地做到,但仍要保有做到复杂的事的能力。我相当喜爱Carl Sassenrath设计出来的 REBOL,它的确是简单、占空间很小、跨平台、又有许多创意(比方说程序方言)。值得在程序语言、编译器设计、以及操作系统的教科书记上一笔。
在很早的时候,Carl Sassenrath就设计并实做出深受好评的AmigaOS(Motorola CPU上的多任务操作系统)。他并领先开发多套多媒体软件产品,包括了STB(Set-Top Box,视讯控制盒)、CDTV、程序语言、以及数字剪辑编辑工具……等。他任职过的公司包括Apple、Commodore Amiga、以及Hewlett-Packard。Carl有加州大学的电子工程和信息科学学士学位。
这四个偶像刚好都是属于不同的族裔,而且都是重要程序语言的设计者,贡献非常卓越。相较于这四位理论基础与实务经验都如此杰出的偶像,再反观我们自己,国内的偶像理论懂得不多,也没做过什么了不起的项目,莫名其妙就被奉为偶像(我说的是我自己,其它人请勿对号入座),真是怪事一桩。
现在出版业也有许多偶像,他们喜欢在新书发表时办签名会。O'Reilly可能是从这里得到灵感,他们告诉我,以后我如果在O'Reilly出版自己写的书,他们可以帮我在诚品书局举办新书签名会。对于他们这样的想法,我期期以为不可。都什么时代了,还在办 LKK 的签名会,实在是很落伍,我希望O'Reilly能顺应时代的潮流,让我把“签名会”改成“掴唱会”(“掴脸会”加上“签唱会”),移师西门町举行,相信自动来讨打的善男信女一定不少,我也一定会展现出“能掴善唱”的一面,边掴边唱,表现得令大家刮目相看的。
偶像崇拜(四)
受到美国和伊拉克战争所带来的恐怖威胁影响,今年的奥斯卡颁奖典礼破天荒地取消星光大道,让许多喜欢在红地毯旁欣赏偶像风采的影迷,大失所望。
由张艺谋执导,颇受全球华人瞩目的电影英雄(Hero),入围今年奥斯卡最佳外语片。Hero 除了是「英雄」的意思,也常作「偶像」解,且比 idol 或 icon 更常用。例如,Bette Midler 在电影 Beaches(情比姊妹深)里面的那首「Wind Beneath My Wings」,有句歌词「Did you ever know that you're my hero? And everything I'd like to be?」,正是「偶像」的意思。
这次的文章要介绍的几个偶像,正是我努力学习的对象(everything I'd like to be)。他们共同具备的特色是:能够与时俱进,不会在新技术出现后被淘汰。
首先介绍的是大名鼎鼎的 Charles Petzold。他是 Windows 程序设计的鼻组,甚至是 OS/2 程序设计的鼻组。十多年前,在 Windows 3.0 的时代,我就已经开始买他的《Programming Windows》一书了,目前该书已经出版到第五版,我几乎是每一版都买,我甚至有幸在大学时期与人合译该书第三版。在进入 .NET 时代后,Charles Petzold 也写了一本《Programming Windows with C#》。这么多年过去了,Charles Petzold 依然维持 Windows GUI 程序设计首席作家的地位。
尽管 Charles Petzold 是 Windows GUI 程序设计首席作家,但是他显然对 MFC 很不捧场,他说:「I never like MFC. Ever since it was introduced, I thought it was poorly designed and barely object oriented.」(我从来就不喜欢 MFC,从一开始就不喜欢,我认为它的设计不良,且几乎不能算是对象导向)。也因此,他未曾写过 MFC 的书。
许多人都以为 Charles Petzold 只写 Windows 的书,其实他也写了一本计算器概论的书,名为《Code》,等于是把信息系好几门课的精华浓缩在一起,写得相当浅显易懂。如果你不是信息系科班出身,我建议你可以读一读这本书,会有很大的帮助。
第二位偶像是 Jeffrey Richter:Jeffrey Richter 是 Windows System 程序设计的头头。我记得他好像年轻时在 Borland 待过,但是未获重用,后来到 Microsoft 之后,反而开始窜红。从 Windows 3.0 开始到现在,Jeffrey 写书也超过十年了,每一本都对 Windows 核心有很精彩的剖析,显示出 Jeffrey Richter 真才实学,绝非光是吃技术老本或靠塑造形象的许多其它作家能比。
Jeffrey Richter 的主要领域是 Windows System Programming,是该领域最重要的作家。Jeffrey 的书提供许多不凡的见解,深入的剖析,和第一手的数据,所以他的书一直都是我的最爱。我无法一一介绍他的每一本书,因为他的书相当多,而且每一本都很深入,带给我很大的收获。
在进入 .NET 时代之后,Jeffrey Richter 依然以一本《Applied Microsoft .NET Framework Programming》让大家更深入了解 .NET,我认为这是 .NET 语言和 CLR 最重要的一本书。目前 Jeffrey Richter 是 Wintellect 的当家支柱。他经常在 MSDN 上发表文章,每一篇都是经典。
第三位偶像是 Jeff Prosise,他从 DOS 时代就开始写书了,早期写了好几本 DOS 领域的书,在 MFC 正流行的时候,他写了一本 MFC 的书《Programming Windows 95 with MFC》(1996 年出版),现在则是写 .NET 的书《Programming Microsoft .NET》。我最喜欢的 MFC 的书正是 Jeff Prosise 写的这本,而不是 David J. Kruglinski 所著的《Inside Visual C++》,我觉得前者写得比后者更平顺、好读、清晰。
Jeff Prosise 曾经写了一本《How Computer Graphics Work》,这是当时 Ziff-Davis 出版社很畅销的「How ...Works」系列。该系列以精致的插画,简单易懂的叙述著称,主要的读者对象是社会大众,而非信息专业人士。我想,或许「简单易懂」就是 Jeff Prosise 惯有的风格吧!
进入 .NET 的时代,Jeff Prosise 的定位似乎比较偏向 ASP.NET。他写的那本《Programming Microsoft .NET》里面有大半的章节是和 ASP.NET 有关,应该改名为《Programming ASP.NET》。Jeff Prosise 现在已经不像 90 年代初期那样多产,最近的这本 .NET 书距离他的上一本书《Programming Windows 95 with MFC》居然有六年之久。但无论如何,我还是很高兴看到 Jeff Prosise 又重出江湖。
第四位偶像是 Ted Neward。我超喜欢 Ted Neward 的,觉得有他一种亲切感,因为他的学习历程和我很像:先是 C++,然后 Win32,然后 Borland OWL,然后 Java,然后 Enterprise Java,然后 .NET。我常逛他的网站 The Mountain of Worthless Information,从哪儿得到不小的收获。我建议你有空也去逛逛。
Ted Neward 是 Manning 出版社的元老级作者,Manning 最早出版的书正是 Ted Neward 的《Core OWL》与《Advanced OWL》(一本入门,一本进阶)。有趣的是,当 Ted Neward 的 OWL 这两本书快出版时,Borland 居然宣布停止开发 OWL。Ted Neward 花了这么多心血,居然换来这样的结果。OWL 本来市场就很小,又被 Borland 宣布死刑,Ted Neward 的这两本书卖得奇惨。
后来,Ted Neward 转向 Java,在 Manning 出版了一本很受好评的 Server-Side Java 书籍。接着,Ted Neward 开始和 O'Reilly 合作,出版了好几本与他人合着的 .NET 书,包括了《C# in a Nutshell》、《VB.NET Core Classes in a Nutshell》、《C# Language Packet Reference》、《Shared Source CLI Essentials》。其中,《Shared Source CLI Essentials》一书是剖析 Rotor 的第一本书,2003 年三月底出版,目前我手上有此书的数个章节,读起来很过瘾,对于我的 .NET 功力提升也有帮助。
这次介绍的四位技术作家,都是属于长青树,在软件技术圈子,这可是很不容易的。我常常觉得,等到哪天 Java 功成身退,被其它技术取代之后,我或许会变成一只玩不出新把戏的老狗,就这么会被淘汰了也说不定。
想成为技术上的长青树,必须在既有的技术上持续钻研,还得随时留意新技术,并适时抛弃一些技术上既有的意识型态。唉!还真是挺辛苦的。
本文作者:蔡学镛
文章出处:Sleepless 2.0
张贴日期:2003/3/24