Titan專欄

          用文字來整理生命

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 49 文章 :: 19 評(píng)論 :: 0 Trackbacks

          急功近利是大忌
          一位讀者寫信給我,說他非常著急。他一個(gè)月掙300元人民幣,家里情況又不好。他希望趕快把 VC/MFC 學(xué)會(huì),進(jìn)入 IT 產(chǎn)業(yè)掙錢。信寫得很長,看著看著,我也不禁為他著急起來。

          有許多讀者,雖然情況沒有那麼急迫,燃眉之情卻也溢於言表。不外乎都是希望能夠盡快把某技術(shù)某技術(shù)學(xué)習(xí)起來。

          但是哪一樣?xùn)|西哪一樣技術(shù)是可以快速學(xué)成的呢?能夠快速學(xué)成的技術(shù),人才也就必然易取易得,根據(jù)市場供需法則,也就不可能有很好的報(bào)酬。所以諸君當(dāng)有心理準(zhǔn)備,門檻高的,學(xué)習(xí)代價(jià)高,報(bào)酬高;門檻低的,學(xué)習(xí)代價(jià)低,報(bào)酬低。

          說起來是老生常談了。這其中最可怕的心理在急功近利。從讀者的來信,以及從 CSDN 上的眾多帖文,我感覺,許許多多人學(xué)習(xí) IT 技術(shù),進(jìn)入 IT 產(chǎn)業(yè),是認(rèn)為 IT 產(chǎn)業(yè)可以助你脫困,遠(yuǎn)離貧窮。

          是的,IT 產(chǎn)業(yè)有這個(gè)「錢」景,但你得有那份實(shí)力。要吃硬核桃,也得先估量自己的牙口。

          「好利」是基本人性,Acer 總裁施振榮先生大力提倡「好逸惡勞」之說,視為人性之本,進(jìn)步的原動(dòng)力。誰能說不是呢?好利可以,近利就不妙了。近利代表目光淺短,一切作為都因此只在小格局中打轉(zhuǎn)。

          梨園有句話:要在人前顯貴,就要在人後受罪。臺(tái)上一分鐘,臺(tái)下十年功。老祖宗這方面的教誨太多了,身為中國人的我們,應(yīng)該都耳熟能詳。

          對(duì)於心急的朋友,我只有一句話:勿在浮沙筑高臺(tái)。你明明很清楚這個(gè)道理,為什麼臨到自己身上,就糊涂了?急是沒有用的,浮躁更會(huì)壞事。耐住性子扎根基吧。做任何事都要投資,扎根基就是你對(duì)自己的未來的投資。如果想知道如何按部就班扎根基,侯捷網(wǎng)站上有一篇文章:「97/06 選義按部 考辭就班」,請(qǐng)你看看。


          口舌之戰(zhàn)有何益
          最常在程序技術(shù)相關(guān)論壇上看到毫無價(jià)值而又總是人聲鼎沸的口舌之戰(zhàn),就是諸如「VB 和 Delphi 誰好」、「BCB 和 VC 誰優(yōu)」、「Linus 和 Windows 誰棒」、「Java 和 C++ 誰強(qiáng)」這種題目。每次出場都一片洋洋灑灑,紅紅火火急速竄升為超酷話題。眾人各擁所好,口沫飛揚(yáng),但是從來說服不了任何異陣營的人,話都只說給自己人聽,給自己人爽。

          這樣的論戰(zhàn)有何意義?許多人在重組自己的偏見時(shí),還以為自己在思考呢。戰(zhàn)到最後,就只是爭誰說最後一句話而已。而且,擦傷引起的爭吵幾乎總是以刺傷結(jié)束。

          工具與技術(shù)的評(píng)比,是一場高水準(zhǔn)的演出。真有能力做評(píng)比,侯捷是很尊敬的。但是這些各擁所好,口沫飛揚(yáng)的人,真的對(duì)評(píng)比兩造都有深刻的了解嗎?很多時(shí)候我們看到的只是無知,而無知是這麼一種東西 : 當(dāng)你擁有了它,你就擁有巨大的膽量。

          很多人喜歡某種工具,只不過因?yàn)槟鞘撬某躞w驗(yàn)。他玩它玩出了一點(diǎn)心得,可以說出它的某些好,就開始做「評(píng)比」了。你只看到牡丹的艷麗,又怎知寒梅的清香,幽蘭的空靈?

          絕大多數(shù)人使用某種工具,不是因?yàn)樗詈?,不是因?yàn)楸娎飳にО俣?,僅僅只是因緣際會(huì)。雖然說不同的應(yīng)用環(huán)境選擇不同的工具,是最伶俐的作為,但我真的懷疑,在現(xiàn)今工具(以及工具背後反映的技術(shù))如此繁復(fù)的時(shí)空下,有多少人能夠同時(shí)精通一個(gè)以上的同質(zhì)工具?追二兔不得一兔,我還是認(rèn)為你精專一樣工具,把它發(fā)揮到最高效能,獲得的利益多些。被大家拿來評(píng)比的,都是市場上的佼佼者,還能差到哪里去?能夠兩雄相爭,必然是在技術(shù)面、非技術(shù)面(資源的普及、品牌的可靠度)各有一片天,你的評(píng)比意義大嗎?全面嗎?

          大多數(shù)人沒有能力同時(shí)精通兩種同質(zhì)工具,初學(xué)者聽了網(wǎng)路上不知名大俠的高論,也不可能有所選擇(如果有,怕也只是蒙著頭瞎選)。這種沒有提供數(shù)據(jù),評(píng)論者也沒有顯示任何信譽(yù)(credit)的論戰(zhàn),沒有任何意義,純粹只為自己爽。浪費(fèi)網(wǎng)路資源!

          C++ 之父 Bjarne Stroustrup 曾經(jīng)在他自己的網(wǎng)頁上的 FAQ (以及其他許多場合)中回答如下問題。雖然其中談的是語言,但是擴(kuò)大到其他層面仍然合適,值得大家好好咀嚼(注:全文由孟巖先生譯出,可自侯捷網(wǎng)站瀏覽):

          Q: 你愿不愿意將C++與別的語言比較?

          A: 抱歉,我不愿意。你可以在The Design and Evolution of C++的介紹性文字里找到原因。有不少人邀請(qǐng)我把C++與其它語言相比,我已經(jīng)決定不做這類事情。在此我想重申一個(gè)很久以來我一直強(qiáng)調(diào)的觀點(diǎn):語言之間的比較沒什麼意義,更不公平。主流語言之間的合理比較要耗費(fèi)很大的精力,多數(shù)人不會(huì)愿意付出這麼大的代價(jià)。另外還需要在廣泛的應(yīng)用領(lǐng)域有充份經(jīng)驗(yàn),保持一種不偏不倚客觀獨(dú)立的立場,有公正無私的信念。...

          人們?cè)噲D把各種語言拿來比較長短,有些現(xiàn)像我已經(jīng)一次又一次地注意到,坦率地說我感到擔(dān)憂。作者們盡力表現(xiàn)出公正無私,但最終都是無可救藥地偏向于某一種特定的應(yīng)用程序,某一種特定的編程風(fēng)格,或者某一種特定的程序員文化。更糟的是,當(dāng)某一種語言明顯地比另一種語言更出名時(shí),一些不易察覺的偷梁換柱就開始了:比較有名的語言中的缺陷被有意淡化,而且被拐彎抹角地加以掩飾;同樣的缺陷在不那麼出名的語言里就被描述為致命傷。同樣的道理,較出名的語言的技術(shù)資料經(jīng)常更新,而不太出名的語言的技術(shù)資料往往是陳年老酒,試問這種比較有何公正性和意義可言?

          Q: 別人可是經(jīng)常拿他們的語言與C++比來比去,這讓你感到不自在嗎?

          A: 當(dāng)這些評(píng)比不夠完整,或者出於商業(yè)目的,我確實(shí)感覺不爽。那些散布最廣的比較性評(píng)論大多是由某種語言,比方說Z語言的擁護(hù)者發(fā)表的,其目的是為了證明Z比其它語言好。由於C++被廣泛運(yùn)用,所以C++通常成了黑名單上的頭一個(gè)名字。通常這類文章被夾在Z語言供貨商提供的產(chǎn)品之中,成了其市場競爭的一個(gè)手段。令人震驚的是,相當(dāng)多的此類評(píng)論竟然引用的是那些Z語言開發(fā)廠商的員工的文章,而這些經(jīng)不起考驗(yàn)的文章無非想證明Z是最好的。尤其當(dāng)評(píng)論之中確實(shí)有一些零零散散的事實(shí)...,特意選擇出來的事實(shí)雖然好像正確,有時(shí)卻是完全誤導(dǎo)。

          以後再看到語言評(píng)比文章時(shí),請(qǐng)留心是誰寫的,他的表述是不是以事實(shí)為依據(jù),以公正為準(zhǔn)繩,特別是評(píng)判的標(biāo)準(zhǔn)是不是對(duì)於所引述的每一種語言來說都公平合理。這可不容易做到。

          我說過了,真正精譬的技術(shù)評(píng)比,對(duì)於相當(dāng)程度的研究者,是很有價(jià)值的,但我很少在論壇上看到精品 ─ 論壇還能有什麼精品,99% 是打屁閑談沒有營養(yǎng)的文字。我們每每在其中看到偏見、我執(zhí)、以及最後免不了因擦傷而引起的刺傷。這真令人傷感。這些人把時(shí)間拿來學(xué)習(xí),多好。奉勸各位少花時(shí)間瞎打屁,多花時(shí)間學(xué)習(xí),看些真正的精典,別動(dòng)不動(dòng)就在論壇上提問,也別動(dòng)不動(dòng)就掛在論壇上看別人的瞎打屁。

          不但評(píng)比性的話題,大家喜歡強(qiáng)出頭,其他話題,情緒性的反應(yīng)也很多。中國強(qiáng)盛之道,眼前彷佛全壓寶在 IT產(chǎn)業(yè)(尤其軟件工業(yè))上面。程序員被賦予了過多的期許,程序員也自我膨脹了許多。夾雜著民族主義或個(gè)人好惡,看到不滿意的人事物,就號(hào)召大家「黑(hack)」過去。這是什麼心態(tài)?比拳頭嗎?說實(shí)話,就算要比拳頭大小,「黑」個(gè)網(wǎng)站算是什麼尺寸的拳頭?網(wǎng)路是個(gè)大暗室,君子不欺暗室。


          雜志定位在哪里
          CSDN上頭,前一陣子曾經(jīng)請(qǐng)大家就《程序員》的定位問題給意見。很熱鬧。我不知道刊物掌門人在看了那麼多建言之後,有沒有收獲。猜想是沒有 ─ 就算有也恐怕不大。

          就像面對(duì)書籍一樣,讀者最直觀的感覺,就是要看他所需要的東西。100個(gè)人有100種需求,這樣的詢問得不出總結(jié)。隱性讀者、不上網(wǎng)的讀者、不投票的讀者、不寫帖文的讀者,你又如何知道他的想法。

          我以為,只需把握一個(gè)原則:永遠(yuǎn)比大眾水平高一個(gè)檔次,扮演引導(dǎo)者,帶領(lǐng)讀者接觸前沿思想與宏觀視野,那就是了。讀者本身會(huì)成長,不論你把刊物定位在實(shí)質(zhì)技術(shù)的哪一個(gè)層次,都會(huì)有人不滿足;今年的讀者成長了,不見得明年還是你的讀者。唯有保持前沿思想與宏觀視野,時(shí)常導(dǎo)入新的技術(shù)形式、新的思維、專家的見解、意見領(lǐng)袖的看法,才能夠長期吸引讀者,并對(duì)許多人以及整個(gè)技術(shù)開發(fā)環(huán)境做出長久的貢獻(xiàn)。

          美國大物理學(xué)家費(fèi)曼,曾經(jīng)批評(píng)物理課的教學(xué)。他說老師老是在傳授解物理習(xí)題的技巧,而不是從物理的精神層面來啟發(fā)學(xué)生。這一點(diǎn)是不是可以給刊物經(jīng)營者和刊物讀者一點(diǎn)點(diǎn)啟發(fā)?

          以此觀之,就我個(gè)人的專長領(lǐng)域,STL 之父訪談錄、算法大師 Donald Knuth 采訪、C++/OOP 大系、GP/STL 大系、將標(biāo)準(zhǔn)C++視為一個(gè)新語言┅以及一些總括性、大局觀的文章,是我認(rèn)為最好的主題。此中有侯捷自己的作品,唔,我向來不客氣。

          當(dāng)然啦,太形而上的東西是不行的,太過抽象的東西不容易被接受。抽象層次愈高,人的自由度愈大,但抽象思考是層次高的人的專利,要普羅大眾能夠接受,還需具象細(xì)節(jié)稍做輔助。

          如何長期保持具有前沿思想與宏觀視野的稿源?與外國雜志合作是一個(gè)既快又好的辦法。每一期《程序員》最前數(shù)頁都有當(dāng)期重要外文期刊的前沿摘要,可見《程序員》編輯群一直與外文專業(yè)期刊保持著閱讀上的接觸。要挑選合作夥伴,心中一定有譜。

          當(dāng)然啦,與國外合作涉及經(jīng)費(fèi)問題。旁人(尤其讀者)很難體會(huì)或換位思考經(jīng)費(fèi)上的種種困難。就像有人痛心疾首義正詞嚴(yán)地埋怨 CSDN 速度慢得像蝸牛,卻可曾想過網(wǎng)站的資源從哪里來。向你收費(fèi),你接受嗎?臺(tái)灣已經(jīng)倒掉很多很多家著名的網(wǎng)站,我等著看免費(fèi)的服務(wù)撐到幾時(shí)。

          要刊物宏觀耐讀,讀者們也得成熟些。一群很好的讀者,才拱得起一本很好的刊物。

          下面是一封讀者來信:

          現(xiàn)在技術(shù)發(fā)展太快了,國外(甚至印度)在實(shí)現(xiàn)「軟件工業(yè)化」的時(shí)候,大陸(至少我周圍是這樣)還停留在小作坊手工打造的水平。我認(rèn)為未來的世界不再屬于「個(gè)人數(shù)字英雄」,軟件工程似乎比一兩項(xiàng)技術(shù)更迫切。以您的大局觀和豐富的閱歷,對(duì)這個(gè)問題是否有不同的看法,不知您是否愿意就此從技術(shù)(或其他)角度寫篇文章發(fā)表您的見解。

          軟件工程對(duì)整個(gè)軟件工業(yè)的提升,至為重要。但是一個(gè)程序員要修練到對(duì)「軟件工程」這個(gè)題目感興趣,非三五載(甚至更多)不為功。我的意思是什麼呢?我的意思是,這類書籍、這類工具、這類網(wǎng)站、這類刊物,在一個(gè)嘈嘈切切、急功近利的環(huán)境中難有生存空間。這是為什麼蔣濤先生想要將《程序員》雜志導(dǎo)向軟件工程主題時(shí),我對(duì)他興起巨大的尊敬與憂慮的原因。

          順帶一提,《程序員》的文字水平一直以來帶給我「閱讀的樂趣」。這個(gè)評(píng)語我從來少有機(jī)會(huì)用在臺(tái)灣的電腦刊物或電腦書籍上。比起臺(tái)灣的電腦讀物,這里的文字有深度多了。


          輕浮躁進(jìn)沒信心
          只要上網(wǎng)看看程序員出沒的論壇,你就會(huì)看到一片浮躁與焦慮。反映出來的就是沒有信心。

          「C# 推出,Java 將死」,「Java 演進(jìn),C++ 將亡」,「.Net 推出,VB程序員死定了」,「Kylix 推出,大夥兒快學(xué)」,「Delphi 持續(xù)新版,哥兒們別怕」,「我剛學(xué)VC,怎麼它就出場了」,「MFC 真的要過時(shí)了嗎」┅。諸如此類的問題,不知該歸類為謠言還是童語?

          很奇怪也很感嘆,為什麼大家對(duì)這類問題如此感到興趣。那透露出一種膚淺 ─ 沒有深刻了解技術(shù)本質(zhì),因而汲汲營營慌慌張張惶惶惑惑於新工具、新事務(wù)、并且認(rèn)為新的大概一定都是好的。對(duì)自己沒有信心,對(duì)整個(gè)環(huán)境也沒有信心。

          有深度的程序員絕對(duì)不會(huì)在意這種事情。當(dāng)然,并不是早晚三柱香就萬事保平安。并不是告訴自己別在乎別在意,就真的能夠不在乎不在意了。那必需是發(fā)自內(nèi)心,胸中自有丘壑的一種篤定,有著好的本質(zhì)學(xué)能做靠山。

          臺(tái)灣 BBS(連線)前陣子也有許多熱烈討論 Java, C#, C++, .NET 的貼信。我把我最欣賞的一封引於下。其最後結(jié)語,擴(kuò)張到任何領(lǐng)域都是合適的。

          發(fā)信人: algent@kkcity.com.tw (流云), 看板: programming
          標(biāo) 題: 一些想法Re: 不懂,業(yè)界一直喊Java,在喊些什麼..."
          發(fā)信站: KKCITY (Sun Feb 18 12:55:49 2001)

          以目前臺(tái)灣業(yè)界的情形來看,CC++ 應(yīng)該是想成為一個(gè)軟體工程師的基本技能;至於 Java,如果熟悉 C++,學(xué) Java 應(yīng)該花不了一個(gè)月的時(shí)間。

          以我個(gè)人的觀點(diǎn),Java 的 OO 程度是勝於 C++ 的,而且在這個(gè) Internet盛行的年代,效率的瓶頸在於網(wǎng)路本身的頻寬而不在單機(jī)執(zhí)行時(shí)的效率,Java 所提供的 Collection framework 是非常威力強(qiáng)大的程式設(shè)計(jì)工具,又內(nèi)建了對(duì) Multi-thread 程式的支援,豐富的 class library 讓人在設(shè)計(jì)網(wǎng)路、資料庫┅的相關(guān)軟體時(shí)無後顧之憂。

          C++ 可能是過去十多年以來最重要的程式語言之一,它的效率顯然較Java為佳,但在撰寫需要安裝在Internet上成千上萬種不同廠牌的機(jī)器上執(zhí)行的程式時(shí),相對(duì)於Java可能就不是最好的解決方案。

          「目前」不需要以 Java 來開發(fā) DeskTop 上的應(yīng)用程式,因?yàn)椤府?dāng)下」而言 Java 撰寫的程式相對(duì)於 C++ 會(huì)占據(jù)更多的記憶體且執(zhí)行效能不彰。

          我們不能期待免子游得比魚快,也不能期待魚飛得比鷹高。

          工程上的需求使得各種場合有不同的適合的程式語言,不必費(fèi)心去批評(píng) A、推崇B、打壓 C。基本的理論比這些事重要多了。

          VB 將死?Java 將亡?C++ 將被 Java 取代...,這很重要嗎?我用Java 也用 C++,即使明年它們?nèi)急?Java++、C++++、Lisp++、Forth++取代,何有於我哉?FFT 還是 FFT、Dijkstra algorithm 還是Dijkstra algorithm...還是別太擔(dān)心這些事了...

          侯捷除了偶在 BBS 上自說自話外,絕少回應(yīng)或叁與討論??戳松戏庑?,忍不住回了一帖:

          作者: jjhou (jjhou) 看板: programming
          標(biāo)題: 一些想法Re: 不懂,業(yè)界一直喊Java,在喊些什麼..."
          時(shí)間: Fri Feb 23 21:12:14 2001

          同意你的看法。寫得非常精采。

          人到了一個(gè)層次,才會(huì)去思考事物的本質(zhì)是什麼,不被浮面的工具所系絆。

          熟練工具是必要的,但工具的演化汰換,不是大家在這里關(guān)起門來喊爽就好。

          Donald Knuth 說:「語言持續(xù)演進(jìn),那是必要的。不論現(xiàn)在流行什麼語言,你都可以肯定十年二十年之後它不再風(fēng)光。我總是在自己的書中寫些不時(shí)髦的東西,但這些東西卻值得後代子孫記取?!梗ㄗⅲ阂陨暇植渴恰冻绦騿T》2000/12 的譯文)

          DDJ 1996/04 p18:
          "Language keep evolving, and that is necessary. ...Whatever computer language is in fashion, you can guarantee that whitin a decade or two it will be completely out of fashion. In my book, I try to write things that are not trendy, but are things that are going to be worth remembering for other generations."


          追求新知固然是一個(gè)計(jì)算機(jī)從業(yè)人員該有的態(tài)度,但是追求新工具與充實(shí)固有知識(shí)兩者之間,應(yīng)該取得一個(gè)平衡。過猶不及!

          再說,凡走過必留下足跡。你現(xiàn)今的任何努力,只要它是扎扎實(shí)實(shí)的,就絕不至於落空。技術(shù)是有累積性的呀,技術(shù)總是觸類旁通的呀。你說 MFC 和 OWL 就沒有累積性,我說有,message map 的原理不一樣嗎?framework 的工作原理不一樣嗎?

          我個(gè)人并非任何語言或任何工具或任何技術(shù)的狂熱者,我是務(wù)實(shí)派。對(duì)於自稱熟稔多種(屬性不同的)語言的人,我充滿敬畏并保持工作上的距離。要精通一個(gè)語言,使自己能發(fā)揮其最大效能,不是件容易的事,需要不少精力的投注。99.99% 的人都是凡人,身為凡人的我們,把時(shí)間用來精通一(或二)種適合其工作性質(zhì)的「語言」,比泛泛認(rèn)識(shí)多種「語法」,要高明得多,回報(bào)也大得多。

          真的,還是別太擔(dān)心誰將興起誰將亡的事了吧。


          天才的沃土
          教育永遠(yuǎn)是我最關(guān)心的議題。教育的重要性絕對(duì)不亞於產(chǎn)業(yè)。沒有好的教育,何來好的產(chǎn)業(yè)人才?

          學(xué)校教育就不提了,那不是侯捷能夠著力的地方。雖然我也在大學(xué)教書,但一年不過教育數(shù)十位學(xué)生,影響能有多大?書籍的讀者動(dòng)輒數(shù)萬人,刊物的讀者動(dòng)輒數(shù)十萬人,這才是有大影響力的地方。

          自修教育如影隨形,打你離開學(xué)校就跟隨你一輩子,重要性遠(yuǎn)勝於學(xué)校教育。談到自修,離不開讀物 ─ 各種型式的書籍和刊物。在咱們程序員這一行,書籍和刊物的情況如何?

          下面是一封讀者來信:

          我記得您說過,到一個(gè)地區(qū)的書店去逛逛,對(duì)這里的IT技術(shù)水平就知道大概。這話太得我心了。我學(xué)習(xí)軟件技術(shù)5年,花在買書的錢有一萬二千(人民幣)以上,如今回頭來看,絕大部份是垃圾。以前曾經(jīng)擔(dān)心:若要到外地工作,這麼多書怎麼帶走?現(xiàn)在則是一種心痛的輕松,因?yàn)橹档脦ё叩臅粔蛞惶帷W(xué)習(xí)IT之初,誰不想在產(chǎn)業(yè)上做出一番成成績?但多年之後回首,則恐怕都會(huì)為自己當(dāng)時(shí)所處的教育環(huán)境痛心。

          關(guān)於計(jì)算機(jī)書籍的浮濫、低劣,我收到太多太多的讀者反應(yīng)了。以上只是冰山一角,有興趣的讀者請(qǐng)上侯捷網(wǎng)站看個(gè)飽。有些出版社甚至以出爛書聞名,看看這封信:

          您想必看過蔣先生在《程序員》上寫的文章,知道所謂IT出版四大家。蔣先生可能礙於禮儀,有些地方還沒講透。例如其中的XXX出版社,在譯作方面現(xiàn)在已經(jīng)是一塊榜樣粗制濫造的榜樣。

          再看這封信:

          我在您網(wǎng)站中看到了有關(guān)對(duì)關(guān)於xxx 出版社的評(píng)價(jià),深有感慨。其實(shí)該出版社是大陸IT業(yè)引進(jìn)外文書籍的鼻祖,我們這一輩程序員(92年以前的)就是讀該出版社的譯著成長起來的(我至少還有兩大紙箱xxx出版社的舊書),在那個(gè)時(shí)候,差不多所有的計(jì)算機(jī)類圖書都是它們引進(jìn)并翻譯的,現(xiàn)在看來,那個(gè)時(shí)候的翻譯質(zhì)量差得無法忍受(比Incide VC++ 5/e還差許多),但我們那個(gè)時(shí)候已經(jīng)很滿足了,畢竟有比沒有好?,F(xiàn)在大家對(duì)xxx出版社的批評(píng),我想是競爭的結(jié)果,因?yàn)榇蠹铱吹搅烁玫淖g著,有了比較。總而言之,xxx 出版社當(dāng)年的特點(diǎn)是大量翻譯,草草出版,讓科技人員能夠在盡快的讀到優(yōu)秀作品。這種作風(fēng)顯然已經(jīng)不合時(shí)宜了,或者說它已經(jīng)完成了它的歷史使命。我現(xiàn)在當(dāng)然也不象從前那樣狂買xxx 出版社的書了,因?yàn)橛辛烁嗟倪x擇。

          這封信讓我跌入回憶。臺(tái)灣也曾有兩家出版社,有過同等劣質(zhì)的作法。這兩家惡貫滿盈的出版社,一名瑩圃,一叫松格。兩家都關(guān)門了。他們的作法都是,快速而大量地翻譯外文書。由於速度快,也由於選材之中不乏好書,所以曾經(jīng)擁有一定的市場。怎地都關(guān)門了?因?yàn)樽x者只能被欺負(fù)一次兩次,不會(huì)永遠(yuǎn)當(dāng)傻瓜。這樣的出版心態(tài)擺明沒有長遠(yuǎn)打算,只想撈一票走人,不關(guān)門才怪。

          我們可能因?yàn)椋阎卸嗌贀爝^一些經(jīng)過修補(bǔ)尚稱堪用的東西,而對(duì)刻意制造這些垃圾的人產(chǎn)生一種奇怪的情愫。東西明明不好,但我們從中吸收了一點(diǎn)點(diǎn)養(yǎng)份。該謝他還是該恨他?

          該唾棄他!

          這些商人之所以大量而快速地引進(jìn)外文書,因?yàn)橛欣蓤D。有利可圖是好事,但他沒把他該做的事做好。他們放棄品質(zhì)而無所懼,因?yàn)樗麄冎溃谠鯓拥臅r(shí)空背景下可以怎樣輕松地賺錢。大陸出版界朋友告訴我,誰誰誰(都有名有姓)很輕松地在幾年里就這樣積聚了幾百萬人民幣的身家。幾百萬人民幣呀,我的天。這也算 IT 產(chǎn)業(yè)吧,果然是一片紅火,雞犬升天。

          因努力做事而致富,應(yīng)該得到我們的贊美和祝福??蛇@樣的出版社,花更大的功夫賺更多更長遠(yuǎn)的錢他們不要,因?yàn)檩p松錢賺起來不費(fèi)勁兒。百分之一的人可能從這些垃圾中吸收到一些養(yǎng)份,百分之百的人從中感受了閱讀的痛苦。誰知道從中被誤導(dǎo)的人又有百分之幾?買書的錢我們沒少花,得到的正價(jià)值卻是那麼少,痛苦指數(shù)那麼高。

          這位讀者說『總而言之xxx 出版社當(dāng)年的特點(diǎn)是大量翻譯,草草出版,讓科技人員能夠盡快的讀到優(yōu)秀作品』,又說『它們引進(jìn)并翻譯的,現(xiàn)在看來,翻譯質(zhì)量差得無法忍受』。喔,一本優(yōu)秀的原作,經(jīng)過無法忍受的翻譯質(zhì)量洗禮後,還會(huì)是一本優(yōu)秀的作品嗎?待人寬厚是美德,但是刻意制造餿水油讓人吃壞肚子者,不值得為他們說話。你說『它已經(jīng)完成了它的歷史使命』。不,他們從來就沒有歷史使命,也沒有使命。

          如此「仁厚自持」而且忍耐度奇佳的讀者,相當(dāng)稀少。絕大部份程序員談到計(jì)算機(jī)圖書,都是斑斑血淚的控訴。《程序員》2001/03 p119 可不就有一篇「計(jì)算機(jī)圖書出版商的陷阱」。

          讀者來信寫道:

          魯迅說,未有天才之前,應(yīng)該要先營造天才的土壤。...您的心情我確實(shí)能夠深刻理解(這大概就是堆在墻角那幾百本垃圾書的最大貢獻(xiàn)吧)。

          「天才的土壤」,嗯,魯迅說得好。不正應(yīng)該是出版社的職志嗎?我們卻能向誰說去?其實(shí)我們也只是希望有一些好書造就一些資質(zhì)不錯(cuò)的程序員而已。前一陣子才沸沸揚(yáng)揚(yáng)於印度程序員與中國程序員的比較,我們哪企望天才?不過就是希望培養(yǎng)一些扎實(shí)的人才而已。

          看倌也許奇怪,書不好,侯捷為什麼不把矛頭對(duì)準(zhǔn)作者,卻大罵出版社。哇勒,我早就抱著「得之我幸,不得我命」的卑微態(tài)度,不敢期望創(chuàng)作性中文好書。上面我說的,以及讀者最痛心疾首的,是翻譯書的低劣水平。人才濟(jì)濟(jì)的中國,怎麼可能找不到夠格的譯者?如果不是出版社的搶錢搶短心態(tài),會(huì)造就出這一大批劣品嗎?我能不怪罪出版社嗎?

          到頭來,還是要靠自己?!赣?jì)算機(jī)圖書出版商的陷阱」一文最終是這麼說的:『記住,您花的是自己辛苦掙來的錢,所以千萬不要浪費(fèi)在沒有用的東西上。對(duì)於出版了優(yōu)秀圖書的出版公司要有所回報(bào)。買他們的書,給他們寫信,讓他們知道你在想什麼,你需要什麼?!?/P>


          良性循環(huán)
          一個(gè)體系的建制,需要從底層到頂層的堅(jiān)實(shí)構(gòu)筑。不論是 C++, Java, .Net, OO, UML, Windows programming, Linux programming,每一個(gè)主題欲成就一個(gè)完整體系,都需要一大套書。拿C++/OOP 來說,就得涵蓋語法語意的、物件模型的、專家經(jīng)驗(yàn)的、設(shè)計(jì)樣式(design patterns)的、入門的、進(jìn)階的,作為叁考工具的┅。拿 GP/STL 來說,就得有 GP 泛論型的、STL 源碼剖析的、STL 應(yīng)用大全的、STL 規(guī)格大全的、STL 組件設(shè)計(jì)的、其他泛型技術(shù)的┅。拿Java 來說,就得有語言核心的、物件導(dǎo)向的、多緒編程的、圖形介面的、網(wǎng)路應(yīng)用的┅。對(duì)生手而言,不先把底層的東西弄清楚就學(xué)習(xí)高層的抽象,必會(huì)成為空中樓閣,流于形式。對(duì)熟手而言,缺乏抽象思維,意味層次上的停滯。

          寫作、翻譯、乃至於出版全體系好書,真的是一件需要目光長遠(yuǎn)、意志堅(jiān)定、帶點(diǎn)理想色彩的人,才做得起來的志業(yè)。

          如果這樣的人,這樣的出版社,沒有得到大家理念上和實(shí)質(zhì)上的支持,誰會(huì)投入這種傻事?

          我個(gè)人一向是高品質(zhì)高價(jià)位的堅(jiān)定信奉者。高品質(zhì)高價(jià)位是生產(chǎn)者經(jīng)營的最大誘因。因?yàn)榕ψ龀隽烁咂焚|(zhì),所以得享高價(jià)位帶來的高利潤,天經(jīng)地義。否則誰要費(fèi)心去做高品質(zhì)?慈善家嗎?傻瓜嗎?

          對(duì)於消費(fèi)者,高價(jià)位當(dāng)然令他不舒服。但是你應(yīng)當(dāng)思考是否物有所值,甚至物超所值。拿英文書為例,USD 49.95 一本的 The C++ Standard Library,或是 USD 49.95 一本的 Generic Programming and the STL,完全物超所值。當(dāng)我了解這些書的價(jià)值,就算他們?cè)儋F兩倍,我也要買。有人拼死吃河豚,我可是要拼命買好書。現(xiàn)實(shí)地說,眼下「知識(shí)經(jīng)濟(jì)」喊得震天響,好書帶來的知識(shí)不正是賺錢工具嗎?對(duì)賺錢工具小氣,是不是和自己過不去?

          下面是一封讀者來信:

          相較日本無論是漫畫作家、文學(xué)作家或是偶像歌星、影星的客觀條件來比較,在臺(tái)灣,身為專業(yè)作家竟如此難為?有人可以連夜搭帳篷排隊(duì)買票看演唱會(huì),有人卻可以論斤計(jì)兩地討論頁數(shù)與書價(jià)高低。或許他們不知道,一本介紹C程式語言的入門書,在德國索價(jià)100 DM (約NT$2000)。因此我的德國同事們購書前必定徵詢意見或叁考書評(píng)。書價(jià)雖不低,但其讀書風(fēng)氣仍不亞於日本。

          這里點(diǎn)出了一個(gè)重點(diǎn):書價(jià)很高,於是大家慎選好書,重視書評(píng)。下面是另一封讀者來信:

          我是一名大陸的讀者,同時(shí)也是一名計(jì)算機(jī)的初學(xué)者。我在網(wǎng)上看到網(wǎng)友都十分推崇您的著作及譯作。知道您的作品《深入淺出MFC》第二版即將在內(nèi)陸出版,我決定買這本書,并與華中科技大學(xué)出版社取了聯(lián)系。從那里知道您今年還會(huì)在大陸出幾本書,我非常高興,但在知道了您對(duì)價(jià)格的看法後,又有些失望。

          大陸與臺(tái)灣的經(jīng)濟(jì)水平是不同的,作為普通的工薪階層,購買力也是有限的。我們這里,各類圖書中計(jì)算機(jī)類圖書的價(jià)格是最高的,圖書頁碼的最高位與書價(jià)的最高位基本相同 -- 700頁的書,價(jià)格在70到80元之間,1000頁以上的,價(jià)格在100元以上。這是目前大陸書價(jià)的大體情況。如果按您所說,350頁,書價(jià)80元,在這里算是很高的價(jià)格了,這種價(jià)格的書,只能看,不能買。

          "春蠶到死絲方盡,蠟炬成灰淚始干",教師工作被我們看成很神圣的職業(yè),燃燒自己,照亮別人。我想您出書的目的,也是想讓更多渴望知識(shí)的人受益于它,少走彎路。作為讀者,我們也希望能夠看到更多更好的書。但是在一定歷史時(shí)期內(nèi),購買力與價(jià)格應(yīng)當(dāng)有一個(gè)平衡,350頁80元的價(jià)格確實(shí)太高了,如果能夠降到60元以內(nèi),我相信大多數(shù)讀者可以接受。

          您的書的品質(zhì)很高這是大家的共識(shí),從價(jià)格上應(yīng)當(dāng)與其它書區(qū)別開來,但書價(jià)也不宜太高。名牌服裝走高價(jià)位的路線,當(dāng)然可以提高它的身價(jià),顯得它檔次很高,但是太高的價(jià)格使它脫離了主要的消費(fèi)群體,大多數(shù)人只能在口頭上談?wù)撍瑓s只有極少數(shù)的人會(huì)把它穿在身上。書籍與名牌服裝不同,只有經(jīng)過很多讀者長時(shí)間的閱讀之後,才能夠證明它的價(jià)值,如果很多人都知道侯先生的書質(zhì)量很好,但是卻很少有人讀過(因?yàn)閮r(jià)格問題),那豈不是一種悲哀。

          我最不樂意看到「xxx 頁的書,售價(jià) xxx 元」這種觀念。一本書的價(jià)值在內(nèi)容,不在頁數(shù)。真要這麼算,每本書我們都應(yīng)該檢視一下其字型大小、行距字距、硬拷圖多寡、留白多寡 -- 因?yàn)檫@些都關(guān)系著頁數(shù)。如果大家都接受頁數(shù)和書價(jià)的固定比例,肯定會(huì)有大量浮濫的書跑出來(不就是現(xiàn)在的情況)。

          不必這麼累。一本書值它的價(jià),就買;不值它的價(jià),就別買。很簡單的邏輯。

          我們難道能夠拿著尺衡量一件亞曼尼用了多少碼布,來決定它的價(jià)格嗎?或是拿著尺衡量一張梵谷是幾號(hào),來決定它的價(jià)格?我能夠說因?yàn)槲耶嫷睦C球花比梵谷的鳶尾花大兩倍,所以我應(yīng)該賣他的兩倍價(jià)?

          買東西不能光看有形;那無形的往往更重要。買書不是買紙。正確價(jià)值觀必須建立起來。

          當(dāng)然很有可能你認(rèn)為買名牌服裝或名畫的人都是瘋子。你要的只是布和框。那表示那些物品在你心中不值那個(gè)價(jià)。很好,你有你的評(píng)價(jià),你有你的選擇。

          我不打算在「引喻」(例如名牌服裝或名畫)上面多著墨。引喻有顧此失彼的時(shí)候,筆戰(zhàn)都是這樣打起來的。各位知道我要強(qiáng)調(diào)的是什麼。

          350頁的書,不應(yīng)該一定賣 80元,也不應(yīng)該一定不賣 80 元。這要看350頁的含金量有多少。況且我從沒說過侯捷有 350頁的書要賣 80元。但所有的可能都存在。350頁可以是180元,也可以是80元,也可能 530 頁連 18 元都不值。請(qǐng)不要再以頁數(shù)做為書價(jià)的依據(jù)了。

          教師的工作很神圣,但「燃燒自己,照亮別人」太沉重?!溉紵约骸?,呵呵,說起來多麼容易,做起來多麼痛苦。某人的工作對(duì)眾人有益,他會(huì)很開心。但你要他燃燒自己照亮別人,除非圣人,否則不干的。我很樂意照亮別人,卻不想燃燒自己。燃燒自己,我只能照亮別人五年;把自己照顧好,我可以一輩子照亮別人。抬出大帽子,會(huì)讓有能力寫作好書的人畏懼不前。

          請(qǐng)大家接受這樣的觀念吧:書的價(jià)值在內(nèi)容,不在厚薄,不在頁數(shù)。價(jià)值影響價(jià)格,價(jià)值帶動(dòng)價(jià)格。接受這樣的觀念,便是對(duì)好書的所有出力者致上敬意與實(shí)質(zhì)支持。如果大家慎選好書,10 本垃圾書的價(jià)格支撐兩三本高價(jià)(其實(shí)是適價(jià))好書綽綽有馀。走編程這條路,誰手上沒有 10 本 20 本垃圾書!當(dāng)大家慎選好書,支持好書(盡管它價(jià)格較高),就會(huì)帶動(dòng)書評(píng)風(fēng)氣,帶動(dòng)優(yōu)良寫譯風(fēng)氣。這對(duì)所有的人都好。不需有人燃燒自己,大家都被照亮了。

          當(dāng)然,高價(jià)位的薄書很可能帶來盜印與影印的歪風(fēng)。但無論如何,我是堅(jiān)持己見不會(huì)退縮的。如果大環(huán)境真的無法提升,好書離開了,好人退出了,最後損失的是誰?

          不論各位相信不信,侯捷企圖以個(gè)人影響力(如果有的話)建立優(yōu)良的技術(shù)寫作大環(huán)境,對(duì)臺(tái)灣如此,對(duì)大陸也是如此?!竼柷驳们迦缭S,為有源頭活水來」,要讓大家有更多好書可讀,就要有源頭活水注入;要有源頭活水,就要有更多誘因吸引更多才能之士到技術(shù)寫譯領(lǐng)域來。更多的誘因是什麼?讓他們知道,好作品可以突出,可以區(qū)隔(講白了就是有好價(jià)格),不會(huì)牛驥同一皂,這就是一種誘因。不,這不算誘因,這根本是一種基本道理。

          優(yōu)質(zhì)的書使讀者受惠,優(yōu)質(zhì)書籍所帶來的高報(bào)酬使作者、出版社受惠,并吸引更多優(yōu)秀人才到這個(gè)領(lǐng)域。形成一個(gè)良性循環(huán),大家都受惠。

          另外我要建議大陸出版社,善用你們獨(dú)特的「影印版」。臺(tái)灣的計(jì)算機(jī)類翻譯書,由於也是良窳不齊,窳多於良,曾有讀者開玩笑建議,出版社取得授權(quán)後,不要譯了,直接以原文出版,讀者看得高興,售價(jià)又得以大幅下降。想來這就是大陸的影印版(在臺(tái)灣是不許的)。既然翻譯書已到了千夫所指的地步,何不乾脆多多引進(jìn)影印版?不是要搶短搶快嗎?這個(gè)最快了,讀者也多一種選擇。


          翻譯出了什麼問題
          計(jì)算機(jī)翻譯書的一個(gè)大問題是,譯者沒有時(shí)間(或正確的心態(tài),或足夠的中文能力)將譯稿一看再看,一改再改。中文有一個(gè)缺點(diǎn),那就是名詞本身表現(xiàn)不出復(fù)數(shù),動(dòng)詞本身表現(xiàn)不出時(shí)態(tài)。多數(shù)時(shí)候這可能不是很重要,因而可以忽略。但某些時(shí)候它們占有關(guān)鍵地位,於是一個(gè)精準(zhǔn)的英文句子,往往需要譯者額外花很大的心力,才能精準(zhǔn)地以中文表達(dá)出來,那麼譯者就得有足夠的時(shí)間和足夠的中文能力。而唯有譯者在專業(yè)技術(shù)上具備足夠的素養(yǎng),才能夠看出某些隱微地方對(duì)理解之正確性有關(guān)鍵性影響。

          英文里頭的子句如果又臭又長,別說中國人,老外也得費(fèi)一番手腳才看得懂??纯催@個(gè)(C++ Primer 3/e, p730):

          [code..] where the conditional test if (this != &rhs) prevents assigning a class object to itself. This is particularly inappropriate in a copy assignment operator that first frees a resource currently associated with the class in order to assign the resource associated with the class being copied.

          我的譯文是:

          [code..] 其中的條件測試 if ( this != &rhs ) 避免將 class object 指派給自己,因?yàn)椤缸约褐概山o自己」這個(gè)動(dòng)作,對(duì)於那種「先將目前系結(jié)於自己身上的資源釋放掉,以便稍後將該份資源再系結(jié)於即將被拷貝的那個(gè) object 身上」的 copy assignment 運(yùn)算子而言,尤其不合適。

          只需加幾個(gè)引號(hào),標(biāo)示出子句,就好看多了。尋常一樣窗前月,才有梅花便不同。如果沒有引號(hào)輔助,你試譯看看會(huì)是什麼樣子。別對(duì)我說「根據(jù)教育部規(guī)范,上下引號(hào)只適用於強(qiáng)調(diào)專有名詞或特殊語氣┅」,規(guī)范是死的,人是活的呀。只要能夠靈活而正確地表現(xiàn)出文意,就是好辦法。小平同志不是說,管它黑貓白貓,會(huì)抓老鼠的就是好貓嗎。阿波羅13號(hào)登月計(jì)劃失敗時(shí),太空艙內(nèi)的備用排氣罩規(guī)格不符,地面控制中心要求宇航員必須想辦法將方形罩子塞進(jìn)圓形的排氣管中,否則大家都得因?yàn)轱柺扯趸级漓短铡_@時(shí)候還想什麼規(guī)范?腦筋靈活點(diǎn)。

          另一個(gè)中文表達(dá)的大缺點(diǎn)是:動(dòng)名詞不分。操作是名詞(operation),也可以是動(dòng)詞(operate);實(shí)現(xiàn)是名詞(implementation),也可以是動(dòng)詞(implement);叁考是名詞(reference),也可以是動(dòng)詞(refer);請(qǐng)求是名詞(request),也可以是動(dòng)詞(request);委托是名詞(delegation),也可以是動(dòng)詞(delegate)。當(dāng)動(dòng)詞名詞混雜一起的時(shí)候,就造成閱讀上的錯(cuò)亂。於是你可以看到這樣的句子(取材自《設(shè)計(jì)模式》p14,李英軍等譯,機(jī)械工業(yè)出版社)。請(qǐng)諸位先看原譯,能否就中文語句結(jié)構(gòu)分析出其大致意思:

          (1)原譯:只有當(dāng)委托使設(shè)計(jì)比較簡單而不是更復(fù)雜時(shí),它才是好的選擇。

          (1)侯譯:只有當(dāng)「委托方式」簡化了設(shè)計(jì),它才是一個(gè)好的選擇。

          (1)原文:Delegation is a good design choice only when it simplifies more than it complicates.

          (2)原譯:委托方式為了得到同樣的效果,接受請(qǐng)求的對(duì)象將自己傳給被委托者(代理人),使被委托的操作可以引用接受請(qǐng)求的對(duì)象。

          (2)侯譯:為了以「委托方式」獲得相同效果,「請(qǐng)托(request)受理者」將自己傳給被委托人,使自己得以讓「被委托之操作行為」取用。

          (2)原文:To achieve the same effect with delegation, the receiver passes itself to the delegate to let the delegated operation refer to the receiver.

          我沒有一別苗頭之意。我的譯法不見得最高明。況且翻譯一整本書所需的各種前後呼應(yīng)的考量,遠(yuǎn)比光譯一兩個(gè)句子復(fù)雜許多。只是既然我提出了問題,我總要提出自己的解法,給大家叁考評(píng)量。對(duì)於機(jī)械工業(yè)出版社愿意出版這樣一本經(jīng)典,李英軍先生等人愿意翻譯這樣一本高階而吃力不討好的書,我是帶有敬意的。

          另一個(gè)翻譯上的問題就是大家往往在計(jì)算機(jī)類書中硬套一般字典查來的詞匯,沒人敢突圍。要知道,一般字典并未考量電腦技術(shù),更不可能考慮到上下文(context)。太多人抱著少做少錯(cuò),不做不錯(cuò)的心理,一昧緊跟字典,不敢變動(dòng),才會(huì)造成目前許多譯詞不夠理想,卻動(dòng)彈不得。我印象最深刻的是這幾個(gè)字:

          instance:臺(tái)灣和大陸均有不少人譯為「實(shí)例」。這個(gè)「例」字根本不好。臺(tái)灣甚至有人譯為「案例」,更不妥當(dāng)。為什麼這麼譯,因?yàn)樽值洳閬淼默F(xiàn)成詞匯是這樣。所謂 instance 就是根據(jù)某個(gè)東西(可能是實(shí)物,可能是某種表述)產(chǎn)生出來的一份實(shí)際物體。我認(rèn)為譯為「實(shí)體」是很合適的。根據(jù) class 產(chǎn)生出來的便是object實(shí)體,根據(jù) class template 產(chǎn)生出來的則是class 實(shí)體,根據(jù) function template 產(chǎn)生出來的是function 實(shí)體。根據(jù)可執(zhí)行檔(executable files)產(chǎn)生出來的,則是一份 process 實(shí)體。

          paradigm:臺(tái)灣常譯為「典范」。為什麼?喔,字典查來的現(xiàn)成詞匯。有時(shí)候這樣譯有點(diǎn)道理,例如 paradigm shift 叫做「典范移轉(zhuǎn)」。問題是,何謂「典范移轉(zhuǎn)」?很難望文生義是吧。把 generic paradigm 譯為泛型典范,更是令人不知所以。我們?nèi)粘S谜Z里也有「典范」一詞,我們會(huì)說某某人是國家社會(huì)的典范,那和計(jì)算機(jī)術(shù)語里頭的 paradigm 根本不是同一個(gè)意思。根據(jù) paradigm 在計(jì)算機(jī)術(shù)語中的實(shí)際意義,我把它譯為「思維模式」 ─ 典型的、根本的思維模式。

          讀者來了這樣一封信:

          我向您討教一個(gè)翻譯風(fēng)格的問題。正如您所說,英文技術(shù)書籍最難在長句子,因?yàn)橛⑽牡木涫浇M合形式比中文大大豐富,理解起來已經(jīng)費(fèi)力,翻譯成順口的中文更難。我有時(shí)遇到這種句型,切分組合,翻來覆去掂量,還是覺得中文不忍卒讀。您認(rèn)為此時(shí) (1) 我可不可以放棄 "信" 而求 "達(dá)",也就是說略掉部份句子成份以保全譯句的通順?還是 (2) 務(wù)求將原義表達(dá)出來,寧可中文句子不順暢也在所不惜?更有甚者,有時(shí) (3) 某些句子無關(guān)宏旨,卻異常難譯,可不可以乾脆略過不譯?您的看法是什麼?

          (各位有沒有注意到,這位讀者的中文很好?!盖蟹纸M合,反覆掂量」這幾個(gè)字用得多精簡傳神)我的看法是,譯者有權(quán)利也有義務(wù)通權(quán)達(dá)變,但也必須有這份能耐才行。因此你的第一個(gè)問題我認(rèn)為可以,你的第二個(gè)問題我認(rèn)為不可以。你的第三個(gè)問題我認(rèn)為可以,但需謹(jǐn)慎為之,莫因譯者本身水平,犧牲了某些東西。

          科技翻譯應(yīng)該務(wù)求義譯而非字譯。信與達(dá),應(yīng)從整個(gè)句子或甚至整個(gè)段落來看,不是從一個(gè)個(gè)單字來看。技術(shù)文章和文學(xué)多有不同,譯者最重要的任務(wù)是正確傳達(dá)知識(shí),并盡量減少讀者的吸收困難。

          到底彈性的底限在哪里?我這麼認(rèn)為,譯者於技術(shù)層次上愈有把握,便享有愈大的彈性。只要技術(shù)層次夠,有把握正確了解并傳達(dá)了原作者要表達(dá)的技術(shù),那麼,文字上不必字字拘泥。

          中文在科技表達(dá)中并非一無是處。中文有一個(gè)優(yōu)點(diǎn),就是資訊密度高,很多時(shí)候精簡漂亮的一行中文,可以表達(dá)出「子句夾帶子句再夾帶子句」的三行冗長英文。中文有優(yōu)美的詞藻與取之不盡用之不竭的典故、成語、俗諺,如果善用它們,冰冷的技術(shù)文字一下子就能有閱讀的樂趣。一本爛譯本,會(huì)讓讀者詰屈聱牙,痛苦至極;但是一本好譯本,能使人如沐春風(fēng)。

          容我說一句,正確的心態(tài)、足夠的時(shí)間、充裕的中文表達(dá)能力、水平以上的專業(yè)素養(yǎng),是造就好譯本的基本元素。現(xiàn)今情況如何?話說回頭,好譯者的報(bào)酬幾何?你愿意多花點(diǎn)錢表示你對(duì)他們的付出的認(rèn)同嗎?


          健康的選書心態(tài)
          以下談到選書的心態(tài)和作學(xué)問的態(tài)度,由於都以讀者來信展開討論,因此避免不了提到我寫的《深入淺出MFC》。我要談的問題,其實(shí)不局限於某一本書,或某一種技術(shù)。就像這篇文章先前舉的許多例子一樣,都是可以放大來看的。

          讀者修書一封如下:

          2個(gè)星期前好不容易讀完了您的大作,讓我對(duì)MFC的認(rèn)識(shí)多了不少,不過一點(diǎn)遺憾的是從您的書里并不能學(xué)到如何寫一個(gè)具體的程序,僅僅是明白了MFC的“包裝技術(shù)”。本來我還以為又上當(dāng)了呢因?yàn)槲屹I這本書的目的就是要學(xué)習(xí)用MFC來做程序的...一個(gè)偶然的機(jī)遇讓我得到了 Jeff Prosise的《programming windows with MFC》,這才發(fā)現(xiàn)老師您的書是多麼的重要,假如沒有您的《深入淺出MFC》我又怎麼可能programming with MFC呢?...您的書救我于水深火熱之中,帶領(lǐng)我沖破MFC的條條封鎖線。

          雖然這位讀者最終對(duì)侯捷和侯捷的書以感謝和贊美作收,但我頗有感慨。

          讀者往往以最直觀的態(tài)度來審視一本書的價(jià)值,以最直接的方式來表達(dá)他的愛憎。但不能凡是不需要的,一律視為灌水;凡不符合需求的,一律視為欺騙。這不是一種健康的選書態(tài)度。即使你最後并沒有發(fā)現(xiàn)《深入淺出MFC》「是多麼的重要,救我于水深火熱之中,帶領(lǐng)我沖破MFC的條條封鎖線」,這本書又何嘗在書名或內(nèi)容欺騙過你,使你「以為又上當(dāng)了呢」。再者「我買這本書的目的就是要學(xué)習(xí)用MFC來做程序的」,可是你若連MFC與application 的第一線接軌都不了解,照著葫蘆畫瓢,能寫出多好的程序?

          我不是責(zé)怪這位讀者,只是這封來信代表某些現(xiàn)象,讓我心有感慨。下面是另一種偏激:

          您的書我覺得有些無用的原理講的太多了! 你所寫的并不是真正的教人怎麼用VC,而是教人VC運(yùn)做是怎麼樣進(jìn)行的! 其實(shí)很多讀者真正關(guān)心的問題并不是在這里! 而是在怎麼對(duì)用VC設(shè)計(jì)出真正出色的程序!

          讀者永遠(yuǎn)只想要看自己想看的內(nèi)容,這一點(diǎn)很自然。但是你不想看到的東西并非就是「無用」,它對(duì)別人可能「很有用」。再說,連MFC與application 的第一線接軌都不了解,照著葫蘆畫瓢,我不知道你能寫出什麼「出色的程序」。只要出一點(diǎn)差錯(cuò),你連除錯(cuò)的能力都沒有。開車是很簡單的,開車上路遇到各種突發(fā)狀況而能應(yīng)付并排除障礙,才是困難的地方,才是技術(shù)的表現(xiàn)。

          下面是兩封臺(tái)灣讀者的意見,有點(diǎn)年代了。當(dāng)然我必得先說明,抱持這種態(tài)度的讀者,比例大約在百分之零點(diǎn)零一。

          讀者意見一

          這本書包裝太厚。不該有的東東太多,附錄A所列的無責(zé)任書評(píng),在我想來也是多馀。因?yàn)檫@篇書評(píng)在RUN!PC早有提及,後來也出了無責(zé)任書評(píng)第三集,因此實(shí)在沒有這個(gè)必要。想來是侯先生要增加書的厚度,有以致也。

          讀者意見二

          書評(píng)不應(yīng)該放在這本書里吧! 因?yàn)檫@些東西而讓書太厚實(shí)在有點(diǎn)┅這些灌水的東西共計(jì)有:
          (a)1-16頁的讀者來函:共16頁
          (b)超長的序,嗯,這應(yīng)該沒有關(guān)系
          (c)843-872頁的無責(zé)任書評(píng):共30頁(其實(shí)里面有一些發(fā)人省思的東西,還好)
          (d)873-914頁的Scribble原始碼:共42頁(這最嚴(yán)重,幾乎沒必要的東西)
          (e)915-920頁的VC范例程式一覽:共6頁(很可惜,如果再多加發(fā)揮的話很有用,
          但是侯Sir只是列個(gè)標(biāo)題,連說明都是英文,和看Help檔沒什麼差別)
          共計(jì):94頁

          不是我無聊找碴,您可曾看到有哪本書有將近一百頁的贅肉?更別題書中動(dòng)不動(dòng)就列出四五頁的原始碼了。這些在光碟上都有,何必浪費(fèi)紙張? 不過消掉這些贅肉,這本書還是有它的價(jià)值┅至於書中缺少的部份,我認(rèn)為要看您如何去定位這本書。
          總不能要求一本書把所有Program的東西講完吧! 以探討MFC的內(nèi)部而言,本書沒什麼好批評(píng)的了??偠灾@本書該不該買,我想還是肯定的。但是如果書能瘦點(diǎn)、售價(jià)能低點(diǎn),那就更好了。

          說來說去,原來是為了「如果書能瘦點(diǎn)、售價(jià)能低點(diǎn)那就更好了」。這便是頁數(shù)和售價(jià)牽扯觀念下的可憐受害者,他們扭曲了書籍的價(jià)值,也嚴(yán)重扭曲了自己該有的正確價(jià)值觀。如果我告訴這些讀者,少掉那100頁的所謂「贅肉」,售價(jià)一樣是 NTD 860,恐怕他們又要對(duì)這些「贅肉」熱情擁抱來一個(gè)親親了。真的是這樣,這本書是先確定價(jià)格,最後為了給讀者更多資訊和更大的方便,我才加上那些「贅肉」的。

          這一類讀者,站在敵對(duì)的立場,看待出版社和作者,幻想每一個(gè)人都在覬覦他的錢包,并且認(rèn)為對(duì)他無實(shí)質(zhì)幫助的每一頁(可能只是因?yàn)樗芽催^)都是被刻意灌水的結(jié)果,都是為了欺騙他的鈔票。這樣的讀者在杯弓蛇影的壓力之下,忘記了沒有任何一本書是為個(gè)人量身打造的,也忘記了其他人可能有不同的需求,完全以自我為中心。

          這一類不成熟的讀者,實(shí)在是當(dāng)前劣品充斥下的犧牲者。老實(shí)說我個(gè)人并不喜歡他們成為我的讀者。只是,讀者有選擇作者的權(quán)利,作者卻沒有選擇讀者的機(jī)會(huì)。


          正確的作學(xué)問態(tài)度
          前面兩篇來信透露出一個(gè)疑惑,《深入淺出MFC》是不是一本對(duì)VC編程有幫助的書。我不是要在這里夾帶推薦該書(相信我,我不需要如此),而是想透過MFC與VC的關(guān)系,引申談?wù)勛鲗W(xué)問的態(tài)度。如果「作學(xué)問」太高遠(yuǎn)了,那我們來談?wù)劇笇W(xué)習(xí)」的態(tài)度吧。

          以下是一封讀者來函:

          我有個(gè)疑惑,想請(qǐng)你幫助。我們今天學(xué)C/C++,明天學(xué)MFC,OWL(如果流行的話)
          後天學(xué)C#,JAVA...如果 WINDOW 被 X WINDOW 淘汰,豈不是都要從頭學(xué)過?有沒有必要把一切搞得如此精通?同樣的目的,為什麼不用更方便簡單的快速RAD開發(fā)工具?而非要以鉆研繁雜作為樂趣?和體現(xiàn)水平?是否搞錯(cuò)了方向和目標(biāo)?我認(rèn)為這正是目前大陸(臺(tái)灣我不了解)軟件開發(fā)的一個(gè)錯(cuò)誤的方向。

          所有同質(zhì)的技術(shù)都有累積性與共通性。信中提到的三組東西:MFC, OWL, 或是 Windows, X Window, 或是 C++, Java, C#, 都有類似性與共通性。技術(shù)是會(huì)累積的,有了某種經(jīng)驗(yàn),學(xué)習(xí)新技術(shù)會(huì)快很多。經(jīng)驗(yàn)愈多,學(xué)習(xí)愈快。所以我常喜歡說「觸類旁通」。如果每種技術(shù)都得從新學(xué)習(xí),大家三五年就得歸零一次,人類世界就不會(huì)在 20 世紀(jì)像爆炸似地進(jìn)步這麼快。

          「有沒有必要把一切搞得如此精通?」我的回答是:看個(gè)人需求與定位?;A(chǔ)知識(shí)的精通,是做為應(yīng)用的一種過程與手段,而不是目的。如果你不需要通過這樣的過程,就可以把你要做的事情做得很好,那麼當(dāng)然你可以跳過這個(gè)過程。我所知道的是,許多許多人必須先有這樣的過程,才能夠良好達(dá)成期望目標(biāo)。我自己也需要通過這樣的過程(否則寫不出這樣的書)。這不是你所謂的「鉆研繁雜」或「體現(xiàn)水平」。

          既然信中提到RAD,我也談?wù)勎业目捶āN以?jīng)寫過一篇文章,把RAD喻為「匹夫無罪,懷璧其罪」(見侯捷網(wǎng)站 1999/01/26 懷璧其罪 RAD),建議各位看看。我很贊成使用RAD。我書寫MFC書籍,探討MFC技術(shù),但從來沒有認(rèn)為它最好,或不好,我只是要幫助那麼多使用MFC的人。和Bjarne 的態(tài)度一樣,我對(duì)諸如此類的工具評(píng)比活動(dòng)一點(diǎn)興趣都沒有。我樂意當(dāng)一名觀眾,但從來不評(píng)比(應(yīng)該可以說,也沒有能力評(píng)比)。

          RAD 的情況,可以拿汽車做比喻?,F(xiàn)今誰開車還需要知道齒輪箱、傳動(dòng)軸、離合器、引擎點(diǎn)火原理、火星塞呢?但是滿街開車人誰又能夠表演360度大回旋?要到達(dá)「車手」的程度,就必須對(duì)車子的原理有相當(dāng)程度的了解。同樣是開車,洗拿(F1方程式冠軍車手)和侯捷兩人發(fā)揮車輛功能的程度,絕對(duì)有天壤之別。我認(rèn)識(shí)的所有慣使RAD 的高手,無一不是有底層深厚功力。以RAD始,以RAD終,斷不能在技術(shù)上有所太大長進(jìn)。你的生涯將是空白的五線譜,沒有高音,沒有低音,永遠(yuǎn)的水平┅。

          RAD是要用的,有好工具不用,和自己過不去。但是使用RAD的同時(shí),對(duì)底層做更多的了解才有助於在某種情況下脫困或自助。這和 STL 的運(yùn)用也一樣。會(huì)用STL,是一種檔次。對(duì)STL原理有所了解,又是一個(gè)檔次。追蹤過STL源碼,又是一個(gè)檔次。第三種檔次的人用起 STL 來,虎虎生風(fēng)之勢絕非第一檔次的人能夠望其項(xiàng)背。

          學(xué)習(xí)某種工具,及其背後代表的某種技術(shù),究竟要鉆研到什麼深度?唔,答案視你想扮演什麼角色而定?!窮1方程式車手」和「半夜三點(diǎn)才敢上臺(tái)北大馬路的用車人」之間,有許多許多的層次,你自己定位自己。

          有些人絕對(duì)擁護(hù)RAD,有些人又重新反省RAD。下面是另一封信:

          我原本是一個(gè)一天到晚使用RAD工具的人...但是歷經(jīng)了三個(gè)版本之後,我有一種被騙的感覺,因?yàn)樘幵谶@個(gè)環(huán)境中,似乎是投身在別人設(shè)好的一個(gè)圈套里!這種東西會(huì)讓人對(duì)於『了解 OS 內(nèi)部運(yùn)作以及各種規(guī)范與協(xié)定的基礎(chǔ)層面』的欲望慢慢減低至零。今天為了突破某一個(gè)元件的限制而自己寫了一個(gè)元件,明天新版RAD內(nèi)附元件就出現(xiàn)了比自己寫得還要好的東西。到了最後,自己不想寫,只想等別人寫給你
          ;要是別人不寫,你就徹頭徹尾地喪失了一項(xiàng)能力...(天曉得要等到何年何月),要不然就是官方給的元件功能少東少西。不只這些!最讓我受不了的是,我竟然發(fā)現(xiàn):程式用這種方式去寫,簡直就比用Office 還要簡單,深入的思考幾乎是零...。

          我在「懷璧其罪 RAD」一文中是這麼回答的:

          1. RAD 并非罪惡,而是優(yōu)點(diǎn)。要怎麼用它則是你自己的問題。我有兩位朋友是 Delphi 專家,他們可以使用 Delphi 做任何事情,沒有任何你想像中 RAD「該有」的限制。

          2. 果真能夠「寫一個(gè)程式,比使用 Office 還要簡單,深入的思考幾乎是零」,并不是壞事。大家都能夠隨手寫個(gè)小程式解決手邊幾個(gè)小問題,是為component software 以及 RAD 的大貢獻(xiàn)。但你的形容太夸張了,目前的 RAD 還不至於美好若此,總還需要一些程式邏輯和程式語言的基本訓(xùn)練。真到了你說的那一天,我覺得是件好事而不是壞事。只不過,那樣子完成的程式,都需藉助現(xiàn)成的元件。如果要突破現(xiàn)成的框框,就得有更深的功力。無論如何,RAD 不會(huì)是你的絆腳石。

          這類話題很難一言以蔽之??傊瑑?yōu)秀的技術(shù)者一定需要一個(gè)向下沉淀的歷練,通過了這層歷練,有了扎實(shí)的基礎(chǔ),就可以向上浮升,開始以抽象的思考,抽象的語言、快速開發(fā)工具來進(jìn)行高層次的開發(fā)工作。這時(shí)候運(yùn)用 RAD 工具,當(dāng)能如虎添翼。

          所謂百煉成鋼;鋼的形成,是將鐵塊不斷錘打,不斷回火,不斷淬煉。做為一個(gè)程式員,本身技能的層次,和回火淬煉的次數(shù)有密切關(guān)系。

          讓我們?cè)倩仡^談?wù)劵A(chǔ)建設(shè)。很多資訊科系在學(xué)學(xué)生對(duì)學(xué)校所開的課程,非常不服氣,非常不屑,認(rèn)為對(duì)編程能力一點(diǎn)幫助也沒有。首先我要說,編程、軟件開發(fā)并不是資訊系學(xué)生的唯一出路。資訊領(lǐng)域何其廣泛,編程只是其中小小的一支而已(但對(duì)就業(yè)市場而言則是大大的一脈)。其次我要說,基礎(chǔ)理論課程并非對(duì)你的編程一無是處 ─ 不是無用,只是未到用時(shí)。有些科目的影響非常直接而深遠(yuǎn),例如對(duì)編程最重要的兩門課:資料結(jié)構(gòu)(data structure)和演算法(algorithm),這兩門課對(duì)邏輯思考與實(shí)現(xiàn)能力的訓(xùn)練,有關(guān)鍵性的價(jià)值。沒有這兩門課做底,任你 C/C++/Java 多強(qiáng)多行,也寫不出個(gè)好程式。其他基礎(chǔ)理論課程也都各有用途,會(huì)不會(huì)在你未來的編程生涯中帶來幫助,那得看你編哪一種程。就業(yè)與學(xué)校所學(xué),不必然會(huì)發(fā)生關(guān)系,不必然不會(huì)發(fā)生關(guān)系。

          編程能力強(qiáng)的年輕同學(xué),容易孳生一種趾高氣揚(yáng)的惡習(xí),看這不順眼,看那不順眼,教授都老朽,同學(xué)都可笑。問他為什麼,哦,因?yàn)椤杆麄兊木幊坦αΧ疾蝗缥摇???尚Φ恼悄阕约貉健?/P>

          編程實(shí)力的培養(yǎng)其實(shí)很容易的。我所謂容易,是指不需借助外力,純粹自修就幾乎可以做到。再?zèng)]有比這更幸運(yùn)的事了。當(dāng)然你的進(jìn)修必須按部就班(在我的專長范圍內(nèi),我寫了很多讓你前進(jìn)時(shí)有所依循的文章,都在侯捷網(wǎng)站上)。任何高深的理論,只要實(shí)際操作過都可以霍然理解,編程的實(shí)作又有什麼難的。數(shù)本好書,一部電腦,一些必要的工具,全部搞定,只欠一股「頭懸梁錐刺股」的苦讀精神。實(shí)力進(jìn)展到一個(gè)階段後,我非常鼓勵(lì)你追蹤名家源碼(有人指導(dǎo)更好)。司馬相如說:能讀千賦則善賦,能觀千劍則善劍。侯捷說:讀過千賦亦能賦,觀過千劍亦能劍。

          最後我還要說,學(xué)校(尤其大學(xué))原本不是職訓(xùn)所。但是關(guān)於人格的培養(yǎng),思想的啟迪,視野的開拓,現(xiàn)今言之,恐怕是陳義過高,沒人愛聽了。

          學(xué)??隙ㄓ袑W(xué)校的缺失。其一是課程太過理論,高來高去。以大學(xué)生的程度而言,太過抽象的東西他們是沒有能力接受的。但是要化抽象為具象,化繁為簡,可得有非常深厚的實(shí)力才行。其二是教材、教具、教師太過陳舊,跟不上時(shí)代。我印象最深刻的是,臺(tái)灣BBS時(shí)常有學(xué)生問 Turbo C 3.0 上的問題。我的媽呀,C++ Standard 都出來兩年了,學(xué)校還在用TC3.0。倒不是說一定要追最新最炫的工具或產(chǎn)品,但是TC3.0 距離 C++ Standard,有月球到地球的距離吧。用這個(gè)編譯器,可想而知老師教的是什麼內(nèi)容,可想而知老師本身跟上外界脈動(dòng)的程度。如果新工具新產(chǎn)品都很貴,顧及學(xué)校經(jīng)費(fèi),我們也能體諒???Borland C++ 5.5, GNU C++ 2.96, TAI C++ 都是可以免費(fèi)下載或限期試用的呀。它們對(duì) C++ Standard 的實(shí)現(xiàn),比TC3.0 好太多太多了。

          這就涉及學(xué)校教育里頭最重要的關(guān)鍵:師資。說句實(shí)在話,大學(xué)里頭有不少老師,書是念得很棒,就是沒有實(shí)作經(jīng)驗(yàn),更沒有業(yè)界經(jīng)驗(yàn)。因循茍且之念一動(dòng),萬年教材一攤,同學(xué)們就只有自求多福。

          自救之道當(dāng)然有:你必須更勤奮。勤奮看書,勤奮發(fā)問。勤奮搜尋好的導(dǎo)師和好的讀物?;蛟S天道酬勤,就讓你碰上一個(gè)傳道授業(yè)解惑的貴人,就讓你知道一本必讀的經(jīng)典,并且就讓你找到它。

          說到勤奮發(fā)問,讓我發(fā)出本文的最後一聲感嘆做為結(jié)束。臺(tái)灣大學(xué)生在「表達(dá)能力」這一點(diǎn),程度普遍低下幼稚。能夠條理分明把自己的意思表達(dá)清楚的,十分罕見。反映出來的,就是怯怯懦懦,理不直而氣不壯。私底下聲若洪鐘,要他站起來公開表示意見,卻如細(xì)蚊之嗡嗡。不論口語或文字,用詞普遍地「俗」。大陸情況,就我的印象,以及我收到的讀者來信,感覺好很多。以前臺(tái)灣的說法是,因?yàn)榇箨懚窢巺柡?,人人得有一口利嘴以求自保。但文革已過數(shù)十年,我看大家的表達(dá)能力普遍還是很不錯(cuò),是不是求學(xué)階段中曾經(jīng)特別重視這個(gè)?

          發(fā)問的能力影響學(xué)習(xí)甚巨。善問者使人繼其聲,善教者使人承其志。我常自詡為一名善教者,但如課堂上兼能有一名善問者,高潮迭起,全班受惠。

          posted on 2006-01-08 16:47 Titan 閱讀(367) 評(píng)論(0)  編輯  收藏 所屬分類: 候捷老師的文筆

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 介休市| 连江县| 洛宁县| 饶河县| 陵水| 邮箱| 永靖县| 桑植县| 云浮市| 衡山县| 镇平县| 阿克| 西畴县| 通州市| 澎湖县| 德钦县| 固镇县| 宣恩县| 西畴县| 介休市| 仁化县| 称多县| 枣阳市| 盐山县| 中牟县| 岳普湖县| 佛冈县| 百色市| 板桥市| 阿拉尔市| 关岭| 马龙县| 施甸县| 嘉兴市| 乌拉特中旗| 独山县| 潞西市| 福州市| 平谷区| 临颍县| 乌苏市|