作者:張洪斌 本文選自:開放系統世界——賽迪網2002年09月24日 中國人學電腦,多數情況下是通過看中文版的資料書來學習的。但是有過學電腦,特別是學習程序設計語言經歷的讀者(包括本人)都會有這樣的體會:中文電腦書拿起來易如反掌,讀起來卻抓耳撓腮。原因之一就是書中有許多莫名其妙的中文專業術語。當然,它們都是從英文翻譯過來的,只是翻譯得太晦澀。
在我的記憶里,第一個讓我念念不忘且深惡痛絕的中文專業術語是:“良基”,F在可能很少有人知道這個詞。那是在我上大學時,在一門和人工智能有關的課程中,老師講解“良基關系”。所謂“良基關系”就是滿足幾個條件的關系。我明白這幾個條件的意思,當然算學會了“良基關系”,只是不明白為什么叫“良基”不叫“燒雞”?“良基關系”好象很重要,因為老師“良基”了一個學期。許多年過去了,我現在還記得它。學期末的時候,要交一篇論文。我去查了英文資料,才知道滿足那幾個條件的關系是Well-Founded(基礎良好),意思是設計良好、沒有矛盾的關系。
我想我的同學應該和我一樣,初見“良基”,一定會感到莫名其妙,相信本文的讀者也有同感。因為它不是一個正常的中文名詞,中文字典里找不到(可能是有人捏造出來的)。
Java是純粹面向對象的程序設計語言,類似的語言還有C++等。如果你已經學過面向對象技術,還記得第一次看到“對象”一詞的感覺嗎?如果你沒有學過,那么能看懂下面關于對象的解釋嗎?
“世界上是由對象組成的。例如人是對象、電腦是對象、豬是對象、泥巴也是對象......”。
上面是大意,是我第一次學習面向對象技術時,一本中文書上的說法。我不明白,所以整個一本書都沒有看懂。直到我知道對象翻譯自英文的Object(物體),才慢慢學會面向對象技術。上面的說法實際上的意思是:
“世界上是由物體組成的。例如人是物體、電腦是物體、豬是物體、泥巴是物體......”。
中文“專業”垃圾術語有幾個特征。其一如“良基”,它是一個字典里和生活中聞所未聞的漢字組合:每個漢字都認識,但是拼在一起就不懂。其二如“對象”,它偏離了英文原意而導致誤解,完全是張冠李戴。但是這些中文莫名其妙的術語對應的英文卻都是簡單的、生活化的英文單詞,并非很晦澀。實際上,以我閱讀英文資料的體會看,我并不認為有多少“專業”的英文計算機術語。相反,不知道譯者出于何種原因,簡單的英文單詞翻譯成中文后,就常常變得撲朔迷離、高深莫測,所以就成了中文“專業”術語。
下面主要以Java語言為例,列出一些中文計算機“術語”和它們對應的英文。
面向對象與Object-Oriented
Object-Oriented的意思是“對象為主的、對象主導的”,而“面向”的同義詞是“面對”,絲毫沒有主導的含義。此中文術語與“對象”的垃圾特征相同。
本人在業余時間去講課,我的一個學員在課上嘲笑“對象”,指出“面向對象”也非善類。我從來沒有想到質疑“面向對象”,所以突然意識到,很多垃圾已經不知不覺成了我們學識的一部分了。
在此,我把“面向對象”列為本文的頭條,以示對這位學員的感謝。
重載/重置與Overload/Override
在我上課講Overload/Override前,我總是先問這兩個單詞的中文術語是什么,應該怎么念,結果答案還不止一個。有的說“重載= Overload”,有的說“重載=Override”。一般都把“重載”和“重置”的“重”念成“重新”的“重”。
Overload的原意是“超載”,指幾個方法的名字相同,但是方法的參數不同。本人理解其意思可能就是一個名字承擔了太多的功能,就像一個人要打幾份工伺候幾個老板一樣,活太多,有些超載了。所以,Overload應該對應“重載”,而“重載”的“重”是“沉重”而不是“重新”的意思。有些書把Overload翻譯為“過載”,值得贊揚。
Override的含義和Overwrite相同,其原意是“越過”、“跳過”,即是某事情無效。它在Java中,表示子類的方法覆蓋了父類的同名方法。因此我猜測Override對應“重置”,也許是“重新安置”的縮寫?所以,“重置”的“重”應該是“重新”的“重”,不是“沉重”的“重”,不要與“重載”混淆了。“重置”和“良基”的垃圾特征相同,“重載”還勉強算個正常名詞。唉!每次我講課,都要嚼半天舌頭來解釋這兩個中文“專業”術語。
函數與Function
函數并非計算機專門術語。在中學時,數學課本上就有了函數一詞。坦率地說,直到上大學,才知道“函數=Function(功能)”,不過目前仍然不明白為什么叫“函數”,是音譯還是意譯?所以雖然我知道它是垃圾,卻不知道是哪一類,是“良基”的還是“對象”的,或者是某個垃圾新類型?如果說數學中的“函數”還和“數”多少有點關系的話,它可是和程序設計語言中的Function沒有什么字面的關聯。也許該把Function翻譯為“函碼”?
在Java中,可喜的是已經用method(方法)取代Function一詞了,所以不必為解釋“函數”再費口舌了。
顯式/隱式與Explict/Implicit
一看“顯式/隱式”,就知道它們和“良基”同類,也是翻遍大字典,都找不到的中文計算機術語!帮@式”譯自explict,意思是明顯地、明白的,例如語句int x= 4的結果是x被賦值4,可以很“明顯”地能夠看出x被賦初值。而x如果是類的成員,那么int x的結果是x被賦初值0。這種賦初值不太容易看出來,稱為“隱式”賦值。隱式譯自英文implicit,意思是隱含的、默認的。
線程與Thread
“線程”譯自英文的Thread,如果查字典就知道它指“線”,比如縫衣服用的線。衣服上有縱橫交錯的很多線,好象程序的流程圖一樣,所以,Thread在英文中比喻程序執行的線路。例如,判斷語句如果真,就走流程圖的這條“線”,如果為假,那么就走另外一條“線”。因此Multi-Threads指得就是程序在運行時,有幾條“線”上的代碼同時在運行。而非多線程的程序在流程圖上只能有一條線上的代碼在運行:一段代碼沒有執行完,絕對不許執行另外的代碼。順便補充一句,以上的“說文解字”是作者自己的猜測(因此也是原創)。猜測得對不對不知道,但是比喻卻與Thread在程序設計中的含義完全吻合?梢姡熬程”的垃圾特征與“良基”相同。
數據報文與Datagram
UDP (User Datagram Protocol) 發送的數據稱為Datagram。gram是表示重量的“克”,克在實際生活中是很小的重量單位,所以Datagram表示UDP發送接收數據的基本單位。每個Datagram獨立發送,彼此沒有關聯,因此速度快,但是不可靠,所謂“欲速而不達”。
Datagram好象被某些書翻譯成“數據報文”,猛一看還以為和拍電報有什么瓜葛呢,這就是作者第一次看到這個中文“術語”時的感覺。
套接字與Socket
網絡中的一個著名中文術語是“套接字”,這是個什么“字”?恐怕連第一個造這個“字”的人都不知道。
這個“字”譯自英文的Socket,其原意是插座、插孔的意思。當兩臺電腦通過網絡、電纜或者電話線等建立連接,可以互相通訊后,可以想象連接線是插在每個電腦的Socket中,盡管實際上電腦上并沒有這樣的物理部件。Socket是一種形象的比喻,可看作是實現電腦之間通訊的程序或者方法,和任何“字”都沒有關系。
令牌與Token
Token的原意是“標記、記號、標志”。Token在Java的StreamTokenize中大體指流中有意義的內容,例如一個字母、一個數字都是一個Token,但是空格、回車則不是Token。
Token常常被翻譯成“令牌”,例如所謂的“令牌網”。這聽起來像古代打仗時下達作戰命令的“令牌”,此中文與Token的原意有幾成相似?
文件/正文/文檔/歸檔與File/Text/Document/Archive
無論中文還是英文,這些術語都是很容易混淆的。
依我的理解,File是“文件”,泛指計算機中存儲的信息或者數據。
Text指文件的內容,通常是可以理解的字符,常常翻譯為“正文”,但是我不知道“偏文”或者“非正文”是什么。例如本文的內容就是Text。而Text文件屬于文件的一種,指其內容大體是可見的字符,沒有格式化的信息。
Document大概被翻譯為“文檔”,它應該算File的一種,常用來說明什么,例如說明書就是Document。這個詞在HTML有關的內容中出現的比較多,例如“HTML文檔”、“XML文檔”等。
Archive的原意是“檔案”,含義是有關某個主題、項目的一系列文件,例如中國每個人都有一份人事檔案,這一份檔案中有不止一份File或者Document。Java中有jar程序,用于壓縮文件(一個或者多個),我想它應該是Java Archieve的縮寫。我看到有的書把Archieve翻譯為“歸檔”,可是“歸檔”聽起來像動詞,例如,“我有一份歸檔”是什么意思?
在寫到這里時,正好聽到電視里的一個藥廠廣告,廣告詞堅定而莊重:關注生命,健康人類。瞧,它把“健康”當動詞用了,跟“歸檔”可謂半斤八兩。
應用/實現與Appliaction/Implementation
這兩個詞的翻譯比前面的“歸檔”稍好,但是仍然搞錯了詞性。“應用”和“實現”在正常的漢語中是動詞,可是在電腦書中常常當名詞。例如“本協議有了不少實現和應用”,是很多電腦書(特別是翻譯書)的說法,聽起來不太像中國話。正常的語句應該是“本協議有了不少實現方法和實際應用的例子”。
總線與Bus
剛學計算機時就聽說電腦有“總線”技術,但是老師和課本一直避而不談“支線”在哪,直到看到Bus一詞,才明白“支線”技術還沒被發明出來。
反省、內省與Introspector
Introspector的原意是“向內看、觀察和分析內部”,在Java中,它指分析一個類例如JavaBean的內部情況,了解其中有哪些屬性、方法和事件。我看到的譯文有“反省”和“內省”,聽起來像干了壞事做檢討一樣。
定制與Customization
“定制”是個著名的中文計算機術語,幾乎出現在每本電腦書中。“定制”譯自Customization,而與該英文詞相關的單詞為Customer(顧客、用戶)。定制某個東西就是按照用戶的要求進行設計,而不是采用一般的或者標準的方法,其實就是“定做”的意思。例如您在裁縫店定做一套西裝就是Customization。因為這套衣服是按照您的身材和喜好設計制作的,而到商場買一套就不是Customization。
也許我文化水平有限,當第一次看到中文“定制”時,不知道它的意思就是“定做”。但是我現在還是認為,“定做”比“定制”更通俗、更容易理解。也許這就是為什么大家非要“定制”不要“定做”的原因:不把名詞故意弄得莫名其妙,怎么體現出IT技術的高深呢?
子句與Clause
SQL語句中的Where、From部分被稱為“子句”,它的英文為Clause。英文語法書稱Clause為“從句”,例如以If開始的“條件從句”等,表示從句是組成完整語句的一部分。應該說,“子句”這個中文術語翻譯得不錯,可是中學學英語時就知道了“從句”,為什么到了電腦領域,非要改個名字叫“子句”?
公開/私有密鑰與Public/Private Key
記得在大學學密碼學時,就知道了“公開密鑰”一詞,當時感覺字面上似乎很矛盾,既已“公開”、“密”又在哪里?而“私有密鑰”似乎有點羅嗦,既然是“密”,當然就“私有”了。
幾乎所有密碼學的著作都把Key翻譯成“密鑰”,但是Key沒有“密”的含義,是“密鑰”的始作俑者強行加了“密”,可能是為了顯示密碼學的深奧吧。
會話與Session
術語Session的英文原意是“聚會”或者“開會”。如果某個瀏覽器在一段時間中持續訪問服務器,那么這種情況被稱為Session,就好像瀏覽器和服務器在聚會一樣。大致可認為,只要瀏覽器不關閉,那么就一直是同一個Session,就像不散會,總是在開同一個會一樣。關閉瀏覽器相當于散會,再次啟動瀏覽器相當于開始一次新的會議。
一些中文書將Session翻譯成“會話”或者“對話”,例如所謂的“會話Bean”(Session Bean),是否以為開會就是講話?
表單與Form
中文“表單”譯自英文的Form。從字面上看,中文的“表單”好象既指Form,還指Table,其實Form的樣子和Table根本不同。后者是“表”,就像數據庫的Table一樣,是田字型的表格,而Form是調查表、申請表之類的東西,遠遠沒有Table那樣規則。
流與Stream
記得在大學時就知道了“流”是關于I/O的,只是不明白為什么是一個字的“流”,老感到“流”是不是比I/O更高級?
流譯自Stream,原意是水流。輸入和輸出實際上是數據的運動。數據從一個地方運動到另外一個地方就像水的流動一樣,也許這就是流Stream這個術語名字的來源吧。
應該說“流”是很好的譯文,只是我的大學老師沒有給我講“流=Stream”,或者是我上課走了神沒聽到,反正本人很久以后才明白,多少時光已經無情地“流”逝了。
計算機中如“對象、套接字”之類的中文“垃圾方言”不少。由于本人對中文電腦書通常是“懼而遠之”,所以了解的中文垃圾方言較少,受害較淺。我想垃圾術語一定不止本文列出的這十幾個。如果哪位讀者是“重傷員”,不得不常常與很多垃圾術語搏斗,不妨就為本文寫個續吧。
(責任編輯 Sunny)
|