国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

解讀Java中的“垃圾方言”

2019-11-18 11:52:46
字體:
來源:轉載
供稿:網友

  中國人學電腦,多數情況下是通過看中文版的資料書來學習的。但是有過學電腦,非凡是學習程序設計語言經歷的讀者(包括本人)都會有這樣的體會:中文電腦書拿起來易如反掌,讀起來卻抓耳撓腮。原因之一就是書中有許多莫名其妙的中文專業術語。當然,它們都是從英文翻譯過來的,只是翻譯得太晦澀。
  
  在我的記憶里,第一個讓我念念不忘且深惡痛絕的中文專業術語是:“良基”。現在可能很少有人知道這個詞。那是在我上大學時,在一門和人工智能有關的課程中,老師講解“良基關系”。所謂“良基關系”就是滿足幾個條件的關系。我明白這幾個條件的意思,當然算學會了“良基關系”,只是不明白為什么叫“良基”不叫“燒雞”?“良基關系”好象很重要,因為老師“良基”了一個學期。許多年過去了,我現在還記得它。學期末的時候,要交一篇論文。我去查了英文資料,才知道滿足那幾個條件的關系是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
  “定制”是個聞名的中文計算機術語,幾乎出現在每本電腦書中。“定制

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦化市| 靖州| 哈巴河县| 唐河县| 延吉市| 丹寨县| 枞阳县| 峨眉山市| 广东省| 高青县| 弥勒县| 宕昌县| 余干县| 海口市| 云龙县| 酒泉市| 昌平区| 建湖县| 博白县| 孟州市| 如东县| 大方县| 洱源县| 邹城市| 原平市| 东安县| 天峻县| 吴忠市| 札达县| 石渠县| 贡觉县| 英山县| 株洲市| 神农架林区| 龙江县| 调兵山市| 浮山县| 辰溪县| 敦煌市| 温宿县| 石屏县|