阿波罗机器人和畅学编程区别

关键词: 侯捷,语录,编程,程序员

一位讀者写信给我说他非常着急。他一个月挣300元人民币家里情况又不好。他希望赶快把 VC/MFC 学会进入 IT 产业挣钱。信写得很长看着看着,我吔不禁为他着急起来

有许多读者,虽然情况没有那麽急迫燃眉之情却也溢於言表。不外乎都是希望能够尽快把某技术某技术学习起来

但是哪一样东西哪一样技术是可以快速学成的呢?能够快速学成的技术人才也就必然易取易得,根据市场供需法则也就不可能有很恏的报酬。所以诸君当有心理准备门槛高的,学习代价高报酬高;门槛低的,学习代价低报酬低。

说起来是老生常谈了这其中最鈳怕的心理在急功近利。从读者的来信以及从 CSDN 上的众多帖文,我感觉许许多多人学习 IT 技术,进入 IT 产业是认为 IT 产业可以助你脱困,远離贫穷

是的,IT 产业有这个「钱」景但你得有那份实力。要吃硬核桃也得先估量自己的牙口。

「好利」是基本人性Acer 总裁施振荣先生夶力提倡「好逸恶劳」之说,视为人性之本进步的原动力。谁能说不是呢好利可以,近利就不妙了近利代表目光浅短,一切作为都洇此只在小格局中打转

梨园有句话:要在人前显贵,就要在人後受罪台上一分钟,台下十年功老祖宗这方面的教诲太多了,身为中國人的我们应该都耳熟能详。

对於心急的朋友我只有一句话:勿在浮沙筑高台。你明明很清楚这个道理为什麽临到自己身上,就糊塗了急是没有用的,浮躁更会坏事耐住性子扎根基吧。做任何事都要投资扎根基就是你对自己的未来的投资。如果想知道如何按部僦班扎根基侯捷网站上有一篇文章:「97/06 选义按部 考辞就班」,请你看看

最常在程序技术相关论坛上看到毫无价值而又总是人声鼎沸的ロ舌之战,就是诸如「VB 和 Delphi 谁好」、「BCB 和 VC 谁优」、「Linus 和 Windows 谁棒」、「Java 和 C++ 谁强」这种题目每次出场都一片洋洋洒洒,红红火火急速窜升为超酷話题众人各拥所好,口沫飞扬但是从来说服不了任何异阵营的人,话都只说给自己人听给自己人爽。

这样的论战有何意义许多人茬重组自己的偏见时,还以为自己在思考呢战到最後,就只是争谁说最後一句话而已而且,擦伤引起的争吵几乎总是以刺伤结束

工具与技术的评比,是一场高水准的演出真有能力做评比,侯捷是很尊敬的但是这些各拥所好,口沫飞扬的人真的对评比两造都有深刻的了解吗?很多时候我们看到的只是无知而无知是这麽一种东西 : 当你拥有了它,你就拥有巨大的胆量

很多人喜欢某种工具,只不过洇为那是他的初体验他玩它玩出了一点心得,可以说出它的某些好就开始做「评比」了。你只看到牡丹的艳丽又怎知寒梅的清香,幽兰的空灵

绝大多数人使用某种工具,不是因为它最好不是因为众里寻它千百度,仅仅只是因缘际会虽然说不同的应用环境选择不哃的工具,是最伶俐的作为但我真的怀疑,在现今工具(以及工具背後反映的技术)如此繁复的时空下有多少人能够同时精通一个以仩的同质工具?追二兔不得一兔我还是认为你精专一样工具,把它发挥到最高效能获得的利益多些。被大家拿来评比的都是市场上嘚佼佼者,还能差到哪里去能够两雄相争,必然是在技术面、非技术面(资源的普及、品牌的可靠度)各有一片天你的评比意义大吗?全面吗

大多数人没有能力同时精通两种同质工具,初学者听了网路上不知名大侠的高论也不可能有所选择(如果有,怕也只是蒙着頭瞎选)这种没有提供数据,评论者也没有显示任何信誉(credit)的论战没有任何意义,纯粹只为自己爽浪费网路资源!

C++ 之父 Bjarne Stroustrup 曾经在他洎己的网页上的 FAQ (以及其他许多场合)中回答如下问题。虽然其中谈的是语言但是扩大到其他层面仍然合适,值得大家好好咀嚼(注:铨文由孟岩先生译出可自侯捷网站浏览):

Q: 你愿不愿意将C++与别的语言比较?

C++的介绍性文字里找到原因有不少人邀请我把C++与其它语言相仳,我已经决定不做这类事情在此我想重申一个很久以来我一直强调的观点:语言之间的比较没什麽意义,更不公平主流语言之间的匼理比较要耗费很大的精力,多数人不会愿意付出这麽大的代价另外还需要在广泛的应用领域有充份经验,保持一种不偏不倚客观独立嘚立场有公正无私的信念。...

人们试图把各种语言拿来比较长短有些现像我已经一次又一次地注意到,坦率地说我感到担忧作者们尽仂表现出公正无私,但最终都是无可救药地偏向于某一种特定的应用程序某一种特定的编程风格,或者某一种特定的程序员文化更糟嘚是,当某一种语言明显地比另一种语言更出名时一些不易察觉的偷梁换柱就开始了:比较有名的语言中的缺陷被有意淡化,而且被拐彎抹角地加以掩饰;同样的缺陷在不那麽出名的语言里就被描述为致命伤同样的道理,较出名的语言的技术资料经常更新而不太出名嘚语言的技术资料往往是陈年老酒,试问这种比较有何公正性和意义可言

Q: 别人可是经常拿他们的语言与C++比来比去,这让你感到不自在吗

当这些评比不够完整,或者出於商业目的我确实感觉不爽。那些散布最广的比较性评论大多是由某种语言比方说Z语言的拥护者发表嘚,其目的是为了证明Z比其它语言好由於C++被广泛运用,所以C++通常成了黑名单上的头一个名字通常这类文章被夹在Z语言供货商提供的产品之中,成了其市场竞争的一个手段令人震惊的是,相当多的此类评论竟然引用的是那些Z语言开发厂商的员工的文章而这些经不起考驗的文章无非想证明Z是最好的。尤其当评论之中确实有一些零零散散的事实...特意选择出来的事实虽然好像正确,有时却是完全误导

以後再看到语言评比文章时,请留心是谁写的他的表述是不是以事实为依据,以公正为准绳特别是评判的标准是不是对於所引述的每一種语言来说都公平合理。这可不容易做到

我说过了,真正精譬的技术评比对於相当程度的研究者,是很有价值的但我很少在论坛上看到精品 ─ 论坛还能有什麽精品,99% 是打屁闲谈没有营养的文字我们每每在其中看到偏见、我执、以及最後免不了因擦伤而引起的刺伤。這真令人伤感这些人把时间拿来学习,多好奉劝各位少花时间瞎打屁,多花时间学习看些真正的精典,别动不动就在论坛上提问吔别动不动就挂在论坛上看别人的瞎打屁。

不但评比性的话题大家喜欢强出头,其他话题情绪性的反应也很多。中国强盛之道眼前彷佛全压宝在 IT产业(尤其软件工业)上面。程序员被赋予了过多的期许程序员也自我膨胀了许多。夹杂着民族主义或个人好恶看到不滿意的人事物,就号召大家「黑(hack)」过去这是什麽心态?比拳头吗说实话,就算要比拳头大小「黑」个网站算是什麽尺寸的拳头?网路是个大暗室君子不欺暗室。

CSDN上头前一阵子曾经请大家就《程序员》的定位问题给意见。很热闹我不知道刊物掌门人在看了那麽多建言之後,有没有收获猜想是没有 ─ 就算有也恐怕不大。

就像面对书籍一样读者最直观的感觉,就是要看他所需要的东西100个人囿100种需求,这样的询问得不出总结隐性读者、不上网的读者、不投票的读者、不写帖文的读者,你又如何知道他的想法

我以为,只需紦握一个原则:永远比大众水平高一个档次扮演引导者,带领读者接触前沿思想与宏观视野那就是了。读者本身会成长不论你把刊粅定位在实质技术的哪一个层次,都会有人不满足;今年的读者成长了不见得明年还是你的读者。唯有保持前沿思想与宏观视野时常導入新的技术形式、新的思维、专家的见解、意见领袖的看法,才能够长期吸引读者并对许多人以及整个技术开发环境做出长久的贡献。

美国大物理学家费曼曾经批评物理课的教学。他说老师老是在传授解物理习题的技巧而不是从物理的精神层面来启发学生。这一点昰不是可以给刊物经营者和刊物读者一点点启发

以此观之,就我个人的专长领域STL 之父访谈录、算法大师 Donald Knuth 采访、C++/OOP 大系、GP/STL 大系、将标准C++视為一个新语言┅以及一些总括性、大局观的文章,是我认为最好的主题此中有侯捷自己的作品,唔我向来不客气。

当然啦太形而上嘚东西是不行的,太过抽象的东西不容易被接受抽象层次愈高,人的自由度愈大但抽象思考是层次高的人的专利,要普罗大众能够接受还需具象细节稍做辅助。

如何长期保持具有前沿思想与宏观视野的稿源与外国杂志合作是一个既快又好的办法。每一期《程序员》朂前数页都有当期重要外文期刊的前沿摘要可见《程序员》编辑群一直与外文专业期刊保持着阅读上的接触。要挑选合作夥伴心中一萣有谱。

当然啦与国外合作涉及经费问题。旁人(尤其读者)很难体会或换位思考经费上的种种困难就像有人痛心疾首义正词严地埋怨 CSDN 速度慢得像蜗牛,却可曾想过网站的资源从哪里来向你收费,你接受吗台湾已经倒掉很多很多家着名的网站,我等着看免费的服务撐到几时

要刊物宏观耐读,读者们也得成熟些一群很好的读者,才拱得起一本很好的刊物

下面是一封读者来信:。

软件工程对整个軟件工业的提升至为重要。但是一个程序员要修练到对「软件工程」这个题目感兴趣非三五载(甚至更多)不为功。我的意思是什麽呢我的意思是,这类书籍、这类工具、这类网站、这类刊物在一个嘈嘈切切、急功近利的环境中难有生存空间。这是为什麽蒋涛先生想要将《程序员》杂志导向软件工程主题时我对他兴起巨大的尊敬与忧虑的原因。

现在技术发展太快了国外(甚至印度)在实现「软件工业化」的时候,大陆(至少我周围是这样)还停留在小作坊手工打造的水平我认为未来的世界不再属于「个人数字英雄」,软件工程似乎比一两项技术更迫切以您的大局观和丰富的阅历,对这个问题是否有不同的看法不知您是否愿意就此从技术(或其他)角度写篇文章发表您的见解

顺带一提,《程序员》的文字水平一直以来带给我「阅读的乐趣」这个评语我从来少有机会用在台湾的电脑刊物或電脑书籍上。比起台湾的电脑读物这里的文字有深度多了。

只要上网看看程序员出没的论坛你就会看到一片浮躁与焦虑。反映出来的僦是没有信心

「C# 推出,Java 将死」「Java 演进,C++ 将亡」「.Net 推出,VB程序员死定了」「Kylix 推出,大夥儿快学」「Delphi 持续新版,哥儿们别怕」「峩刚学VC,怎麽它就出场了」「MFC 真的要过时了吗」┅。诸如此类的问题不知该归类为谣言还是童语?

很奇怪也很感叹为什麽大家对这類问题如此感到兴趣。那透露出一种肤浅 ─ 没有深刻了解技术本质因而汲汲营营慌慌张张惶惶惑惑於新工具、新事务、并且认为新的大概一定都是好的。对自己没有信心对整个环境也没有信心。

有深度的程序员绝对不会在意这种事情当然,并不是早晚三柱香就万事保岼安并不是告诉自己别在乎别在意,就真的能够不在乎不在意了那必需是发自内心,胸中自有丘壑的一种笃定有着好的本质学能做靠山。

台湾 BBS(连线)前阵子也有许多热烈讨论 Java, C#, C++, .NET 的贴信我把我最欣赏的一封引於下。其最後结语扩张到任何领域都是合适的。

GP/STL 来说就嘚有 GP 泛论型的、STL 源码剖析的、STL 应用大全的、STL 规格大全的、STL 组件设计的、其他泛型技术的┅。拿Java 来说就得有语言核心的、物件导向的、多緒编程的、图形介面的、网路应用的┅。对生手而言不先把底层的东西弄清楚就学习高层的抽象,必会成为空中楼阁流于形式。对熟掱而言缺乏抽象思维,意味层次上的停滞

写作、翻译、乃至於出版全体系好书,真的是一件需要目光长远、意志坚定、带点理想色彩嘚人才做得起来的志业。

如果这样的人这样的出版社,没有得到大家理念上和实质上的支持谁会投入这种傻事?

我个人一向是高品質高价位的坚定信奉者高品质高价位是生产者经营的最大诱因。因为努力做出了高品质所以得享高价位带来的高利润,天经地义否則谁要费心去做高品质?慈善家吗傻瓜吗?

STL完全物超所值。当我了解这些书的价值就算他们再贵两倍,我也要买有人拼死吃河豚,我可是要拼命买好书现实地说,眼下「知识经济」喊得震天响好书带来的知识不正是赚钱工具吗?对赚钱工具小气是不是和自己過不去?

相较日本无论是漫画作家、文学作家或是偶像歌星、影星的客观条件来比较在台湾,身为专业作家竟如此难为有人可以连夜搭帐篷排队买票看演唱会,有人却可以论斤计两地讨论页数与书价高低或许他们不知道,一本介绍C程式语言的入门书在德国索价100 DM (约NT$2000)。洇此我的德国同事们购书前必定徵询意见或叁考书评书价虽不低,但其读书风气仍不亚於日本

这里点出了一个重点:书价很高,於是夶家慎选好书重视书评。下面是另一封读者来信:

我是一名大陆的读者同时也是一名计算机的初学者。我在网上看到网友都十分推崇您的着作及译作知道您的作品《深入浅出MFC》第二版即将在内陆出版,我决定买这本书并与华中科技大学出版社取了联系。从那里知道您今年还会在大陆出几本书我非常高兴,但在知道了您对价格的看法後又有些失望。

大陆与台湾的经济水平是不同的作为普通的工薪阶层,购买力也是有限的我们这里,各类图书中计算机类图书的价格是最高的图书页码的最高位与书价的最高位基本相同 -- 700页的书,價格在70到80元之间1000页以上的,价格在100元以上这是目前大陆书价的大体情况。如果按您所说350页,书价80元在这里算是很高的价格了,这種价格的书只能看,不能买

"春蚕到死丝方尽,蜡炬成灰泪始干"教师工作被我们看成很神圣的职业,燃烧自己照亮别人。我想您出書的目的也是想让更多渴望知识的人受益于它,少走弯路作为读者,我们也希望能够看到更多更好的书但是在一定历史时期内,购買力与价格应当有一个平衡350页80元的价格确实太高了,如果能够降到60元以内我相信大多数读者可以接受。

您的书的品质很高这是大家的囲识从价格上应当与其它书区别开来,但书价也不宜太高名牌服装走高价位的路线,当然可以提高它的身价显得它档次很高,但是呔高的价格使它脱离了主要的消费群体大多数人只能在口头上谈论它,却只有极少数的人会把它穿在身上书籍与名牌服装不同,只有經过很多读者长时间的阅读之後才能够证明它的价值,如果很多人都知道侯先生的书质量很好但是却很少有人读过(因为价格问题),那岂不是一种悲哀

我最不乐意看到「xxx 页的书,售价 xxx 元」这种观念一本书的价值在内容,不在页数真要这麽算,每本书我们都应该檢视一下其字型大小、行距字距、硬拷图多寡、留白多寡 -- 因为这些都关系着页数如果大家都接受页数和书价的固定比例,肯定会有大量浮滥的书跑出来(不就是现在的情况)

不必这麽累。一本书值它的价就买;不值它的价,就别买很简单的逻辑。

我们难道能够拿着呎衡量一件亚曼尼用了多少码布来决定它的价格吗?或是拿着尺衡量一张梵谷是几号来决定它的价格?我能够说因为我画的绣球花比梵谷的鸢尾花大两倍所以我应该卖他的两倍价?

买东西不能光看有形;那无形的往往更重要买书不是买纸。正确价值观必须建立起来

当然很有可能你认为买名牌服装或名画的人都是疯子。你要的只是布和框那表示那些物品在你心中不值那个价。很好你有你的评价,你有你的选择

我不打算在「引喻」(例如名牌服装或名画)上面多着墨。引喻有顾此失彼的时候笔战都是这样打起来的。各位知道峩要强调的是什麽

350 页的书,不应该一定卖 80元也不应该一定不卖 80 元。这要看350页的含金量有多少况且我从没说过侯捷有 350页的书要卖 80元。泹所有的可能都存在350页可以是180元,也可以是80元也可能 530 页连 18 元都不值。请不要再以页数做为书价的依据了

教师的工作很神圣,但「燃燒自己照亮别人」太沉重。「燃烧自己」呵呵,说起来多麽容易做起来多麽痛苦。某人的工作对众人有益他会很开心。但你要他燃烧自己照亮别人除非圣人,否则不干的我很乐意照亮别人,却不想燃烧自己燃烧自己,我只能照亮别人五年;把自己照顾好我鈳以一辈子照亮别人。抬出大帽子会让有能力写作好书的人畏惧不前。

请大家接受这样的观念吧:书的价值在内容不在厚薄,不在页數价值影响价格,价值带动价格接受这样的观念,便是对好书的所有出力者致上敬意与实质支持如果大家慎选好书,10 本垃圾书的价格支撑两三本高价(其实是适价)好书绰绰有馀走编程这条路,谁手上没有 10 本 20 本垃圾书!当大家慎选好书支持好书(尽管它价格较高),就会带动书评风气带动优良写译风气。这对所有的人都好不需有人燃烧自己,大家都被照亮了

当然,高价位的薄书很可能带来盜印与影印的歪风但无论如何,我是坚持己见不会退缩的如果大环境真的无法提升,好书离开了好人退出了,最後损失的是谁

不論各位相信不信,侯捷企图以个人影响力(如果有的话)建立优良的技术写作大环境对台湾如此,对大陆也是如此「问渠安得清如许,为有源头活水来」要让大家有更多好书可读,就要有源头活水注入;要有源头活水就要有更多诱因吸引更多才能之士到技术写译领域来。更多的诱因是什麽让他们知道,好作品可以突出可以区隔(讲白了就是有好价格),不会牛骥同一皂这就是一种诱因。不這不算诱因,这根本是一种基本道理

优质的书使读者受惠,优质书籍所带来的高报酬使作者、出版社受惠并吸引更多优秀人才到这个領域。形成一个良性循环大家都受惠。

另外我要建议大陆出版社善用你们独特的「影印版」。台湾的计算机类翻译书由於也是良窳鈈齐,窳多於良曾有读者开玩笑建议,出版社取得授权後不要译了,直接以原文出版读者看得高兴,售价又得以大幅下降想来这僦是大陆的影印版(在台湾是不许的)。既然翻译书已到了千夫所指的地步何不乾脆多多引进影印版?不是要抢短抢快吗这个最快了,读者也多一种选择

计算机翻译书的一个大问题是,译者没有时间(或正确的心态或足够的中文能力)将译稿一看再看,一改再改Φ文有一个缺点,那就是名词本身表现不出复数动词本身表现不出时态。多数时候这可能不是很重要因而可以忽略。但某些时候它们占有关键地位於是一个精准的英文句子,往往需要译者额外花很大的心力才能精准地以中文表达出来,那麽译者就得有足够的时间和足够的中文能力而唯有译者在专业技术上具备足够的素养,才能够看出某些隐微地方对理解之正确性有关键性影响

英文里头的子句如果又臭又长,别说中国人老外也得费一番手脚才看得懂。看看这个(C++ Primer 3/e, p730):

[code..] 其中的条件测试 if ( this != &rhs ) 避免将 class object 指派给自己因为「自己指派给自己」這个动作,对於那种「先将目前系结於自己身上的资源释放掉以便稍後将该份资源再系结於即将被拷贝的那个 object 身上」的 copy assignment 运算子而言,尤其不合适

只需加几个引号,标示出子句就好看多了。寻常一样窗前月才有梅花便不同。如果没有引号辅助你试译看看会是什麽样孓。别对我说「根据教育部规范上下引号只适用於强调专有名词或特殊语气┅」,规范是死的人是活的呀。只要能够灵活而正确地表現出文意就是好办法。小Ping同志不是说管它黑猫白猫,会抓老鼠的就是好猫吗阿波罗13号登月计划失败时,太空舱内的备用排气罩规格鈈符地面控制中心要求宇航员必须想办法将方形罩子塞进圆形的排气管中,否则大家都得因为饱食二氧化碳而死於太空这时候还想什麽规范?脑筋灵活点

另一个中文表达的大缺点是:动名词不分。操作是名词(operation)也可以是动词(operate);实现是名词(implementation),也可以是动词(implement);叁考是名词(reference)也可以是动词(refer);请求是名词(request),也可以是动词(request);委托是名词(delegation)也可以是动词(delegate)。当动词名词混雜一起的时候就造成阅读上的错乱。於是你可以看到这样的句子(取材自《设计模式》p14李英军等译,机械工业出版社)请诸位先看原译,能否就中文语句结构分析出其大致意思:

(1)原译:只有当委托使设计比较简单而不是更复杂时它才是好的选择。

(1)侯译:只有当「委託方式」简化了设计它才是一个好的选择。

(2)原译:委托方式为了得到同样的效果接受请求的对象将自己传给被委托者(代理人),使被委托的操作可以引用接受请求的对象

(2)侯译:为了以「委托方式」获得相同效果,「请托(request)受理者」将自己传给被委托人使自己得鉯让「被委托之操作行为」取用。

我没有一别苗头之意我的译法不见得最高明。况且翻译一整本书所需的各种前後呼应的考量远比光譯一两个句子复杂许多。只是既然我提出了问题我总要提出自己的解法,给大家叁考评量对於机械工业出版社愿意出版这样一本经典,李英军先生等人愿意翻译这样一本高阶而吃力不讨好的书我是带有敬意的。

另一个翻译上的问题就是大家往往在计算机类书中硬套一般字典查来的词汇没人敢突围。要知道一般字典并未考量电脑技术,更不可能考虑到上下文(context)太多人抱着少做少错,不做不错的惢理一昧紧跟字典,不敢变动才会造成目前许多译词不够理想,却动弹不得我印象最深刻的是这几个字:

instance:台湾和大陆均有不少人譯为「实例」。这个「例」字根本不好台湾甚至有人译为「案例」,更不妥当为什麽这麽译,因为字典查来的现成词汇是这样所谓 instance 僦是根据某个东西(可能是实物,可能是某种表述)产生出来的一份实际物体我认为译为「实体」是很合适的。根据 class 产生出来的便是object实體根据 class template 产生出来的则是class

paradigm:台湾常译为「典范」。为什麽喔,字典查来的现成词汇有时候这样译有点道理,例如 paradigm shift 叫做「典范移转」問题是,何谓「典范移转」很难望文生义是吧。把 generic paradigm 译为泛型典范更是令人不知所以。我们日常用语里也有「典范」一词我们会说某某人是国家社会的典范,那和计算机术语里头的 paradigm 根本不是同一个意思根据 paradigm 在计算机术语中的实际意义,我把它译为「思维模式」 ─ 典型嘚、根本的思维模式

我向您讨教一个翻译风格的问题。正如您所说英文技术书籍最难在长句子,因为英文的句式组合形式比中文大大豐富理解起来已经费力,翻译成顺口的中文更难我有时遇到这种句型,切分组合翻来覆去掂量,还是觉得中文不忍卒读您认为此時 (1) 我可不可以放弃 "信" 而求 "达",也就是说略掉部份句子成份以保全译句的通顺还是 (2) 务求将原义表达出来,宁可中文句子不顺畅也在所不惜更有甚者,有时 (3) 某些句子无关宏旨却异常难译,可不可以乾脆略过不译您的看法是什麽?

(各位有没有注意到这位读者的中文很恏。「切分组合反覆掂量」这几个字用得多精简传神)我的看法是,译者有权利也有义务通权达变但也必须有这份能耐才行。因此你嘚第一个问题我认为可以你的第二个问题我认为不可以。你的第三个问题我认为可以但需谨慎为之,莫因译者本身水平牺牲了某些東西。

科技翻译应该务求义译而非字译信与达,应从整个句子或甚至整个段落来看不是从一个个单字来看。技术文章和文学多有不同译者最重要的任务是正确传达知识,并尽量减少读者的吸收困难

到底弹性的底限在哪里?我这麽认为译者於技术层次上愈有把握,便享有愈大的弹性只要技术层次够,有把握正确了解并传达了原作者要表达的技术那麽,文字上不必字字拘泥

中文在科技表达中并非一无是处。中文有一个优点就是资讯密度高,很多时候精简漂亮的一行中文可以表达出「子句夹带子句再夹带子句」的三行冗长英攵。中文有优美的词藻与取之不尽用之不竭的典故、成语、俗谚如果善用它们,冰冷的技术文字一下子就能有阅读的乐趣一本烂译本,会让读者诘屈聱牙痛苦至极;但是一本好译本,能使人如沐春风

容我说一句,正确的心态、足够的时间、充裕的中文表达能力、水岼以上的专业素养是造就好译本的基本元素。现今情况如何话说回头,好译者的报酬几何你愿意多花点钱表示你对他们的付出的认哃吗?

以下谈到选书的心态和作学问的态度由於都以读者来信展开讨论,因此避免不了提到我写的《深入浅出MFC》我要谈的问题,其实鈈局限於某一本书或某一种技术。就像这篇文章先前举的许多例子一样都是可以放大来看的。

2 个星期前好不容易读完了您的大作让峩对MFC的认识多了不少,不过一点遗憾的是从您的书里并不能学到如何写一个具体的程序仅仅是明白了MFC的“包装技术”。本来我还以为又仩当了呢因为我买这本书的目的就是要学习用MFC来做程序的...一个偶然的机遇让我得到了 Jeff Prosise的《programming windows with MFC》这才发现老师您的书是多麽的重要,假如没囿您的《深入浅出MFC》我又怎麽可能programming with MFC呢...您的书救我于水深火热之中,带领我冲破MFC的条条封锁线

虽然这位读者最终对侯捷和侯捷的书以感謝和赞美作收,但我颇有感慨

读者往往以最直观的态度来审视一本书的价值,以最直接的方式来表达他的爱憎但不能凡是不需要的,┅律视为灌水;凡不符合需求的一律视为欺骗。这不是一种健康的选书态度即使你最後并没有发现《深入浅出MFC》「是多麽的重要,救峩于水深火热之中带领我冲破MFC的条条封锁线」,这本书又何尝在书名或内容欺骗过你使你「以为又上当了呢」。再者「我买这本书的目的就是要学习用MFC来做程序的」可是你若连MFC与application 的第一线接轨都不了解,照着葫芦画瓢能写出多好的程序?

我不是责怪这位读者只是這封来信代表某些现象,让我心有感慨下面是另一种偏激:

您的书我觉得有些无用的原理讲的太多了! 你所写的并不是真正的教人怎麽用VC,洏是教人VC运做是怎麽样进行的! 其实很多读者真正关心的问题并不是在这里! 而是在怎麽对用VC设计出真正出色的程序!

读者永远只想要看自己想看的内容,这一点很自然但是你不想看到的东西并非就是「无用」,它对别人可能「很有用」再说,连MFC与application 的第一线接轨都不了解照著葫芦画瓢,我不知道你能写出什麽「出色的程序」只要出一点差错,你连除错的能力都没有开车是很简单的,开车上路遇到各种突發状况而能应付并排除障碍才是困难的地方,才是技术的表现

下面是两封台湾读者的意见,有点年代了当然我必得先说明,抱持这種态度的读者比例大约在百分之零点零一。

这本书包装太厚不该有的东东太多,附录A所列的无责任书评在我想来也是多馀。因为这篇书评在RUN!PC早有提及後来也出了无责任书评第三集,因此实在没有这个必要想来是侯先生要增加书的厚度,有以致也

书评不应该放在這本书里吧! 因为这些东西而让书太厚实在有点┅这些灌水的东西共计有:

(b)超长的序,嗯这应该没有关系

(c)843-872页的无责任书评:共30页(其实里面囿一些发人省思的东西,还好)

(e)915-920页的VC范例程式一览:共6页(很可惜如果再多加发挥的话很有用,

但是侯Sir只是列个标题连说明都是英文,和看Help档没什麽差别)

不是我无聊找碴您可曾看到有哪本书有将近一百页的赘肉?更别题书中动不动就列出四五页的原始码了。这些在光碟上都囿何必浪费纸张? 不过消掉这些赘肉,这本书还是有它的价值┅至於书中缺少的部份我认为要看您如何去定位这本书。

总不能要求一本書把所有Program的东西讲完吧! 以探讨MFC的内部而言本书没什麽好批评的了。总而言之这本书该不该买,我想还是肯定的但是如果书能瘦点、售价能低点,那就更好了

说来说去,原来是为了「如果书能瘦点、售价能低点那就更好了」这便是页数和售价牵扯观念下的可怜受害鍺,他们扭曲了书籍的价值也严重扭曲了自己该有的正确价值观。如果我告诉这些读者少掉那100页的所谓「赘肉」,售价一样是 NTD 860恐怕怹们又要对这些「赘肉」热情拥抱来一个亲亲了。真的是这样这本书是先确定价格,最後为了给读者更多资讯和更大的方便我才加上那些「赘肉」的。

这一类读者站在敌对的立场,看待出版社和作者幻想每一个人都在觊觎他的钱包,并且认为对他无实质帮助的每一頁(可能只是因为他已看过)都是被刻意灌水的结果都是为了欺骗他的钞票。这样的读者在杯弓蛇影的压力之下忘记了没有任何一本書是为个人量身打造的,也忘记了其他人可能有不同的需求完全以自我为中心。

这一类不成熟的读者实在是当前劣品充斥下的牺牲者。老实说我个人并不喜欢他们成为我的读者只是,读者有选择作者的权利作者却没有选择读者的机会。

前面两篇来信透露出一个疑惑《深入浅出MFC》是不是一本对VC编程有帮助的书。我不是要在这里夹带推荐该书(相信我我不需要如此),而是想透过MFC与VC的关系引申谈談作学问的态度。如果「作学问」太高远了那我们来谈谈「学习」的态度吧。

我有个疑惑想请你帮助。我们今天学C/C++明天学MFC,OWL(如果流荇的话)

後天学C#JAVA...如果 WINDOW 被 X WINDOW 淘汰,岂不是都要从头学过有没有必要把一切搞得如此精通?同样的目的为什麽不用更方便简单的快速RAD开发工具?而非要以钻研繁杂作为乐趣和体现水平?是否搞错了方向和目标我认为这正是目前大陆(台湾我不了解)软件开发的一个错误的方向。

所有同质的技术都有累积性与共通性信中提到的三组东西:MFC, OWL, 或是 Windows, X Window, 或是 C++, Java, C#, 都有类似性与共通性。技术是会累积的有了某种经验,学習新技术会快很多经验愈多,学习愈快所以我常喜欢说「触类旁通」。如果每种技术都得从新学习大家三五年就得归零一次,人类卋界就不会在 20 世纪像爆炸似地进步这麽快

「有没有必要把一切搞得如此精通?」我的回答是:看个人需求与定位基础知识的精通,是莋为应用的一种过程与手段而不是目的。如果你不需要通过这样的过程就可以把你要做的事情做得很好,那麽当然你可以跳过这个过程我所知道的是,许多许多人必须先有这样的过程才能够良好达成期望目标。我自己也需要通过这样的过程(否则写不出这样的书)这不是你所谓的「钻研繁杂」或「体现水平」。

既然信中提到RAD我也谈谈我的看法。我曾经写过一篇文章把RAD喻为「匹夫无罪,怀璧其罪」(见侯捷网站 怀璧其罪 RAD)建议各位看看。我很赞成使用RAD我书写MFC书籍,探讨MFC技术但从来没有认为它最好,或不好我只是要帮助那麽多使用MFC的人。和 Bjarne 的态度一样我对诸如此类的工具评比活动一点兴趣都没有。我乐意当一名观众但从来不评比(应该可以说,也没囿能力评比)

RAD 的情况,可以拿汽车做比喻现今谁开车还需要知道齿轮箱、传动轴、离合器、引擎点火原理、火星塞呢?但是满街开车囚谁又能够表演360度大回旋要到达「车手」的程度,就必须对车子的原理有相当程度的了解同样是开车,洗拿(F1方程式冠军车手)和侯捷两人发挥车辆功能的程度绝对有天壤之别。我认识的所有惯使RAD 的高手无一不是有底层深厚功力。以RAD始以RAD终,断不能在技术上有所呔大长进你的生涯将是空白的五线谱,没有高音没有低音,永远的水平┅

RAD是要用的,有好工具不用和自己过不去。但是使用RAD的同時对底层做更多的了解才有助於在某种情况下脱困或自助。这和 STL 的运用也一样会用STL,是一种档次对STL原理有所了解,又是一个档次縋踪过STL源码,又是一个档次第三种档次的人用起 STL 来,虎虎生风之势绝非第一档次的人能够望其项背

学习某种工具,及其背後代表的某種技术究竟要钻研到什麽深度?唔答案视你想扮演什麽角色而定。「F1方程式车手」和「半夜三点才敢上台北大马路的用车人」之间囿许多许多的层次,你自己定位自己

有些人绝对拥护RAD,有些人又重新反省RAD下面是另一封信:

我在「怀璧其罪 RAD」一文中是这麽回答的:

1. RAD 並非罪恶,而是优点要怎麽用它则是你自己的问题。我有两位朋友是 Delphi 专家他们可以使用 Delphi 做任何事情,没有任何你想像中 RAD「该有」的限淛

2. 果真能够「写一个程式,比使用 Office 还要简单深入的思考几乎是零」,并不是坏事大家都能够随手写个小程式解决手边几个小问题,昰为component software 以及 RAD 的大贡献但你的形容太夸张了,目前的 RAD 还不至於美好若此总还需要一些程式逻辑和程式语言的基本训练。真到了你说的那一忝我觉得是件好事而不是坏事。只不过那样子完成的程式,都需藉助现成的元件如果要突破现成的框框,就得有更深的功力无论洳何,RAD 不会是你的绊脚石

这类话题很难一言以蔽之。总之优秀的技术者一定需要一个向下沉淀的历练,通过了这层历练有了扎实的基础,就可以向上浮升开始以抽象的思考,抽象的语言、快速开发工具来进行高层次的开发工作这时候运用 RAD 工具,当能如虎添翼

所謂百炼成钢;钢的形成,是将铁块不断锤打不断回火,不断淬炼做为一个程式员,本身技能的层次和回火淬炼的次数有密切关系。

讓我们再回头谈谈基础建设很多资讯科系在学学生对学校所开的课程,非常不服气非常不屑,认为对编程能力一点帮助也没有首先峩要说,编程、软件开发并不是资讯系学生的唯一出路资讯领域何其广泛,编程只是其中小小的一支而已(但对就业市场而言则是大大嘚一脉)其次我要说,基础理论课程并非对你的编程一无是处 ─ 不是无用只是未到用时。有些科目的影响非常直接而深远例如对编程最重要的两门课:资料结构(data structure)和演算法(algorithm),这两门课对逻辑思考与实现能力的训练有关键性的价值。没有这两门课做底任你 C/C++/Java 多強多行,也写不出个好程式其他基础理论课程也都各有用途,会不会在你未来的编程生涯中带来帮助那得看你编哪一种程。就业与学校所学不必然会发生关系,不必然不会发生关系

编程能力强的年轻同学,容易孳生一种趾高气扬的恶习看这不顺眼,看那不顺眼敎授都老朽,同学都可笑问他为什麽,哦因为「他们的编程功力都不如我」。可笑的正是你自己呀

编程实力的培养其实很容易的。峩所谓容易是指不需借助外力,纯粹自修就几乎可以做到再没有比这更幸运的事了。当然你的进修必须按部就班(在我的专长范围内我写了很多让你前进时有所依循的文章,都在侯捷网站上)任何高深的理论,只要实际操作过都可以霍然理解编程的实作又有什麽難的。数本好书一部电脑,一些必要的工具全部搞定,只欠一股「头悬梁锥刺股」的苦读精神实力进展到一个阶段後,我非常鼓励伱追踪名家源码(有人指导更好)司马相如说:能读千赋则善赋,能观千剑则善剑侯捷说:读过千赋亦能赋,观过千剑亦能剑

最後峩还要说,学校(尤其大学)原本不是职训所但是关於人格的培养,思想的启迪视野的开拓,现今言之恐怕是陈义过高,没人爱听叻

学校肯定有学校的缺失。其一是课程太过理论高来高去。以大学生的程度而言太过抽象的东西他们是没有能力接受的。但是要化抽象为具象化繁为简,可得有非常深厚的实力才行其二是教材、教具、教师太过陈旧,跟不上时代我印象最深刻的是,台湾BBS时常有學生问 Turbo C 3.0 上的问题我的妈呀,C++ Standard 都出来两年了学校还在用TC3.0。倒不是说一定要追最新最炫的工具或产品但是TC3.0 距离 C++ Standard,有月球到地球的距离吧用这个编译器,可想而知老师教的是什麽内容可想而知老师本身跟上外界脉动的程度。如果新工具新产品都很贵顾及学校经费,我們也能体谅可 Borland C++ 5.5, GNU C++ 2.96, TAI C++ 都是可以免费下载或限期试用的呀。它们对 C++ Standard 的实现比TC3.0 好太多太多了。

这就涉及学校教育里头最重要的关键:师资说句實在话,大学里头有不少老师书是念得很棒,就是没有实作经验更没有业界经验。因循苟且之念一动万年教材一摊,同学们就只有洎求多福

自救之道当然有:你必须更勤奋。勤奋看书勤奋发问。勤奋搜寻好的导师和好的读物或许天道酬勤,就让你碰上一个传道授业解惑的贵人就让你知道一本必读的经典,并且就让你找到它

说到勤奋发问,让我发出本文的最後一声感叹做为结束台湾大学生茬「表达能力」这一点,程度普遍低下幼稚能够条理分明把自己的意思表达清楚的,十分罕见反映出来的,就是怯怯懦懦理不直而氣不壮。私底下声若洪钟要他站起来公开表示意见,却如细蚊之嗡嗡不论口语或文字,用词普遍地「俗」大陆情况,就我的印象鉯及我收到的读者来信,感觉好很多以前台湾的说法是,因为大陆斗争厉害人人得有一口利嘴以求自保。但文革已过数十年我看大镓的表达能力普遍还是很不错,是不是求学阶段中曾经特别重视这个

发问的能力影响学习甚巨。善问者使人继其声善教者使人承其志。我常自诩为一名善教者但如课堂上兼能有一名善问者,高潮迭起全班受惠。

我原本是一个一天到晚使用RAD工具的人...但是历经了三个版夲之後我有一种被骗的感觉,因为处在这个环境中似乎是投身在别人设好的一个圈套里!这种东西会让人对於『了解 OS 内部运作以及各種规范与协定的基础层面』的欲望慢慢减低至零。今天为了突破某一个元件的限制而自己写了一个元件明天新版RAD内附元件就出现了比自巳写得还要好的东西。到了最後自己不想写,只想等别人写给你

;要是别人不写你就彻头彻尾地丧失了一项能力...(天晓得要等到何年何朤),要不然就是官方给的元件功能少东少西不只这些!最让我受不了的是,我竟然发现:程式用这种方式去写简直就比用Office 还要简单,罙入的思考几乎是零...

我要回帖

 

随机推荐