前段时间在社区潜水,无意间浏览到去年一篇文章,说将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

我在上述解释中发现了一个规律,那就是解释transfer时,用的是move,而解释transport时,用的是carry、convey、take等。这有什么关系吗?关系大了去!
现在的中学英语中,一个语法考点是瞬间动词和延续动词,这大概是中文没有的概念。何为瞬时动词呢?《百度百科》说:
瞬间动词,也叫终止性动词、点动词、结束性动词、非延续性动词、短暂性动词。这类动词所表示的动作在瞬间就可以完成,不能延续下去,即动作从开始到结束所持续的时间极短。瞬间动词往往表示动作的结果,或表示短暂性、一次性的动作。
说到瞬间动词,看看下面这句话是什么意思呢?
He has been marrying for ten years
是“他结婚10年了”吗?
不对,应该是“这10年来,他结了离,离了又结”。因为marry是瞬间动词,不能持续;如果用于完成进行时,就表示反复。
言归正传,move在表示“移动”时就是瞬间动词,由此推断,transfer强调的是“从一个地方移到另一个地方”这样一个事实和结果,而transport强调的是“从一个地方移到另一个地方”这样一个过程。为方便理解,这里举几个例子。平时大家交流时说,您给我快递吧,说的是通过快递公司将东西交到对方手里,而不是让您去当快递员,亲自把东西送到对方手里;同样,说您给发邮件吧,强调的是邮件到我的信箱中,而不关心邮件是怎样到我的邮箱中的。换句话说,这两个例子要的都是结果,而不关心过程,即对应的是transfer,而不是transport。如果用计算机网络打比方,寄快递、发邮件都属于应用层,而快递公司和电信公司的干活都属于传输层及更低层。也就是说HTTP、SMTP、FTP等中的transfer强调的是超文本、邮件、文件等的位置变化,而不是具体传输过程;另外,我还注意到,但凡带transfer字样的通信协议,几乎都是应用层协议,这没什么好奇怪的,因为transfer要的就是结果,而不关心过程,相应的协议当然就是应用层协议,而不会是传输层协议了。
再举一个例子,领导说“办公室要打扫干净”,接着说“由XXX负责打扫干净”;这两个“打扫干净”强调的重点就不同,前者强调的是结果——干净,而后者强调的是过程——打扫。再拿前面说到的结婚举个例子。说“他今天结婚”时,指的是结婚仪式,即过程;而说“他结婚了”,指的是状态和结果。还有就是搬家和搬家公司,前一个“搬家”强调结果(位置变化),后一个“搬家”强调过程。
总之,虽然transfer和transport的意思都是“从一个地方移到另一个地方”,但前者强调的是事实和结果(位置变化),而后者强调的是过程和细节(如何传输)。其实,如果我们仔细去揣摩字典对transfer的翻译(调动、转账、转让、移交),就会发现它强调位置变化的意味非常强。然而,当前大多数人都将transfer和transport都翻译为“传输”,因此从中文无法区分出这个“传输”指的是位置变化还是传输过程。
明白这一点后,如何翻译transfer就有了方向:选择表明位置发生了变化的词语。至于具体翻译为哪个词,我还没有想出来,欢迎大家讨论。
不过,这里写这篇文章的初衷并非想修改HTTP现有的翻译,而只是希望能帮助大家加深对HTTP中transfer的理解。我完全同意贾洪峰老师的意见,毕竟现有翻译这么多年了,就算不对,恐怕也只能将错就错。
最后,说点题外话,以前发现谢希仁和张公忠老师将transport layer翻译为运输层觉得不可思议,现在想想人家也许就是要将transport和transfer的中文翻译区分开来,实在是意义深远。不过,这两位老师还将header翻译为首部而不是报头,不知道这又是出于什么考虑?