也談Hypertext Transfer Protocol中Transfer的譯法

賈洪峰發表於2012-05-23

因為《HTTP權威指南》的即將出版,昨天在圖靈作譯者群中引發了一場針對HTTP譯法的大討論,嚴格來說,是對其中第二個T(Transfer)的討論。李錕、陳睿傑、丁雪峰等老師認為現譯名“超文字傳輸協議”是歷史上的一次重大翻譯錯誤,帶有巨大的誤導性,應當修改為“轉移”之類的譯法。理由是:HTTP屬於應用層協議,而非傳輸層協議,“傳輸”一詞會導致誤解;“超文字傳輸協議”這一譯法的始作俑者如果認真研讀過HTTP之類的協議,應當就不會犯這一錯誤。

我過去從來沒有研究過HTTP,是個徹頭徹尾的外行,在群中討論時,一邊和大家討論,一邊學習。昨天晚上和今天上午查閱了一些資料,整理了一下思路,寫在下面,供大家拍磚。

一、毫無疑問:HTTP屬於Application layer,而非Transport layer

昨天在討論時,李錕老師批評一些人比Fielding博士還牛,不承認HTTP不屬於傳輸層。我特意查閱了一些資料,發現大家對於“HTTP屬於應用層”是有一致認識的。比如,《HTTP權威指南》的英文原著第11頁明確寫道:HTTP is an application layer protocol. HTTP doesn't worry about the nitty-gritty details of network communication; instead, it leaves the details of networking to TCP/IP, the popular reliable Internet transport protocol.(該書出版於2002年9月。)清華大學張公忠教授1999年10月在《現代網路技術教程》一書第305頁也明確寫道:“在網路協議的各個層次中,HTTP處在應用層,HTTP建立在TCP上面……”,而HTTP 1.1應當是在1999年6月釋出的。這說明,至少在HTTP 1.1釋出之始,國內外學界對於“HTTP屬於應用層”都有正確的認識。

二、Transfer與Transport的區別

2.1 普通英語中的區別

從詞語的全部內涵來說,我們當然知道Transfer與Transport有很大區別。比如,Transfer有“轉會”、“跳槽”、“轉讓財產”的義項,而Transport有“交通”的義項,過去甚至還有“流放、放逐”的義項。但這些義項顯然都與我們這裡討論的HTTP無關。下面是幾本字典中對transfer和transport的相關解釋:

Cambridge Advanced Learner's Dictionary

transfer verb, to move someone or something from one place, vehicle, person or group to another

transport verb, to take goods or people from one place to another

Longman Dictionary of contemporary English

transfer verb, to move from one place, job, position, etc., to another

transport verb, to carry (goods, people, etc.) from one place to another

RANDOM HOUSE Webster's dictionary of American English

transfer verb, to move, bring, or remove from one place, person, or position to other

transport verb, to carry or convey from one place to another

從以上義項來看,這兩個詞幾乎沒有什麼區別。

2.2 HTTP 1.1規範中是否嚴格區分了Transfer和Transport

請注意,這裡所說的是這兩個英文詞,而不是Transport layer與Application layer。以下是HTTP 1.1規範原文中的一些摘錄:

  • the data being transferred. (ABSTRACT, P1)
  • a simple protocol for raw data transfer across the Internet(1.1 Purpose, P7)
  • The information transferred as (1.3 Terminology, P9)
  • 15.4 Transfer of Sensitive Information (P141)
  • the transport data units (1.4 Overall Operation, P12)
  • safe transport of binary data (3.6 Transfer Codings,P24)

從上面的不完全摘錄可以看出,HTTP 1.1的撰稿者也並沒有完全區分這兩個詞語,至少對於data這一賓語都有使用。

當然,這裡說HTTP 1.1中有混用transfer與transport的情況,並不是說這兩個詞是完全通用的。比如,我們從來沒有聽誰說過transfer layer。

三、Transport layer譯為“傳輸層”是否100%正確

HTTP的確不屬於Transport layer,如果Transport layer譯為“傳輸層”是100%正確的,那Transfer再譯為“傳輸”也就的確無法區分了。可這裡的Transport譯為“傳輸”是否100%正確呢?

《現代漢語詞典》中對“傳輸”的解釋是“輸送(能量、資訊等)”,《高階漢語詞典》中的解釋為“傳遞,輸送(能量、資訊等)”。從兩本詞典在括號中舉的例子來看,“傳輸”的物件是一些比較抽象的東西。通訊專業的同學一定都學過“訊號”、“訊息”與“資訊”的區別,那Transport layer傳送的是這三者中的哪一個呢?用“傳輸”是否100%恰當呢?

張公忠教授在我們前面提到的那本教程中,使用“運輸層”來稱呼這個Transport layer,大家可以品味一下,覺得哪個更恰當呢?當然,我這裡並沒有想修改“傳輸層”這一提法的意思。

其實從前面的摘錄中可以看出,HTTP 1.1中倒是多次提到了transfer information。

四、“超文字傳輸協議”是否一定為誤譯

雖然前面提到,國內外學界應當都知道HTTP是在應用層的,但的確可能會有一些不求甚解的初學者望文生義,認為HTTP屬於Transport layer。作為譯者也好,出版社也好,都有義務做點解釋,避免誤解。不過,可能是老師做久了,落下職業病,我腦海裡立刻想到,如果我在課堂上講解這部分內容,會是什麼情景。“同學們,提醒大家注意,雖然書上說HTTP的中文意思是‘超文字傳輸協議’,但你們千萬別把它和Transport layer混淆在一起,HTTP是在應用層的。”一定會有學生來問:“那為什麼原來譯為‘傳輸’呢?”我能否立即回答“就是第一個譯者翻譯錯了,估計他在翻譯這段文字時剛喝了點小酒,然後大家以訛傳訛”?我想我不敢這樣調侃地回答學生!

首先,一個在上世紀90年代中早期向國內介紹HTTP協議的人,他在翻譯這一術語時,沒有認真讀過協議原文的可能性有多大?!他應當不會完全沒看過HTTP的原文就敢把它歸到Transport layer去,因為他從其他途徑瞭解HTTP的可能性很小。其次,我認為當時Transport layer的“傳輸層”譯法也並非完全固定下來了,張公忠教授的說法就是一個例子。那原譯者從普通英語的角度,把transfer譯為“傳輸”是沒錯的。如果我的這些猜測正確(我說的是如果),那隻能說是因為時過境遷,使不求甚解的學人容易受到誤導。在不排除合理可能性之前,我們直接歸咎於原譯者的隨意性是否有欠公平呢?

五、怎麼辦

5.1 把Transfer譯為“轉移”是否合適

根據李錕老師所說,HTTP和REST中的transfer是同一個意思。如果用“轉移”,那就是“超文字轉移協議”和“表述性狀態轉移”。可是我看到“狀態轉移”的第一感覺是由狀態A轉換為轉換B的馬爾可夫狀態轉移,而不是將一個狀態由一處傳到另一處。不知是不是我先入為主了。

5.2 即使“傳輸”確實錯了,要不要改

我認為“超文字傳輸協議”這個詞用了至少15年了,大家都已經是約定俗成了,如果現在突然改成“超文字轉移協議”,估計相當一部分人在聽到之後得反應一會兒。初中數學的有理數、無理數,那個大家公認譯錯了,但如果真改為比例數和非比例數,估計也難行得通。高中物理的磁場強度和磁感應強度,雖然不是翻譯問題,但也公認不妥,同樣,估計也不會再改回來了。

5.3 怎麼辦

保持原譯,加註釋。只要特別註明HTTP屬於應用層,稍微用心的初學者應當就會注意到各種教科書中的正常解釋,不致誤會了!

六、參考連結

The Original HTTP as defined in 1991

Basic HTTP as defined in 1992

HTTP 1.1

Roy Thomas Fielding, Architectural Styles and the Design of Network-based Software Architectures

相關文章