对于技术术语专业化的思考

时间:2022-10-27 18:14:59

    外国人学习计算机相关技术的时候,有一个很大的优势,就是语言上没有隔阂。很多计算机专业的术语,其实都是英语当中的日常词汇,通常是直接把跟那个技术概念在行为上相一致的日常物品的名字来作为计算机术语。比如pointer(指针),address(地址),assembler(汇编器),compiler(编译器),linker(连接器),architecture(架构),constructor(构造函数/方法)等。技术专家在发现或发明一个技术概念以后就得起一个好名字,而这个时候他会很自然的在自己的生活经验里去寻找,什么东西跟手头上的这个技术概念行为接近呢?比如计算机里的总线,各设备之间的通讯都要经过它来传递,没有旁门左道可走,这种行为不是很类似公共汽车吗,嗯,不错,干脆管这个东西叫bus好了。而当一个学生学习这个技术概念的时候,顺序是倒过来的,他会先看到这个术语被别人叫做bus,bus不就是公共汽车吗,对于公共汽车这个东西他很熟悉,于是再看看总线这个技术概念的行为,很好,跟公共汽车很相似嘛,这就好理解了。可见,学习者理解这些术语时,可以借助自己积累起来的大量的日常生活经验。这样一来,通过使用日常词汇作为技术术语,可以大大地帮助学习这加快对技术本身的理解。

    相比之下,我们中国人学习技术就没有这个优势了。我国学术和科技的传统是,术语就是术语,术语就一定要够特别,够专业,够陌生,绝不能混同于日常词汇。这可能跟我们的传统有关,传统上中国人喜欢在本行业内设置较高的术语壁垒,各行各业都有行话和黑话,不同行业之间的人在专业上是无法对话的。上次看到电视里报道老北京天桥的艺人,就介绍了在这些人之间流行有一套黑话,不是这个圈子的人根本听不懂。影响最大的行话可能就是文言文,古代文人所写的文言文也并不是当时老百姓之间对话的语言,之乎者也、引经据典那一套讲道理的方式也可以看成是知识分子的“行话”,象辛弃疾写的“元嘉草草,封狼居胥”,谭嗣同在狱中写的“望门投止思张俭,忍死须臾待杜根”,没有一点文史知识,一般白丁根本无法理解作者想说什么,远不如莎士比亚“活着还是死去,这是个问题”那么老幼咸宜,通俗直白。我国人的这种做法,并非没有道理。有了这些行话,人们可以很容易地区分“圈里人”和“圈外人”,可以在很大程度上增加外行人理解本行专业知识的“偶发复杂性(accidental complexity)”,一定程度上起到了保护本行业专业知识不外流的作用。曾有人总结中国知识和技术阶层的特点,说是“将专业知识作为换取幸福生活的工具”,并非对知识和技术本身诚心以求真。因此,把专业知识的传播局限在一个相对较小的圈子里,有助于调节市场的供求关系,提高自己所具有的专业知识在市场上的价值。从这个角度来理解,大概可以知道为什么中国技术人素来喜欢制造崭新术语了。

    当然,1919年以来,特别是建国以来,在这方面情况有了很大的好转,但是应该说传统的习惯是不容易丢掉的,专业术语专业化仍然是大多数人所持的观点,至今我们的专业学习仍然受到这种实践的强烈影响。

    比如,当我们第一次学习到“指针”、“编译器”、“总线”这样的术语的时候,我们脑子里是一片空白。这些词汇对我们来说是全新的,完全没有任何生活经验与之相关联,需要通过今后的技术实践来逐渐加深对它们的理解。这就跟外国人有很大的不同,他们可以用一大堆形象的、鲜活的生活经验来帮助他们理解概念,学习技术,指导实践,我们却不得不倒过来,通过摸索和低效的技术实践来建立对这些概念的正确理解,或者更糟糕地,还要修正这些术语给我们带来的误解。比如我至今说起“指针”这个词汇的时候,仍然在潜意识里想到尖锐的金属物体,而对于“总线为什么是bus”的理解,也是在首先理解了总线的行为之后才发生的“顿悟”。事实上,这都是不应该的,不符合人们学习和认知的规律。

    不少源自英语的计算机术语是为大家所熟知的,并且已经广泛传播,得到认可。但是从根本上来讲,其翻译是相当糟糕的,完全无助于人们的理解和认识,其结果是,很多人在使用这些技术术语,甚至实践多年之后,仍然无法对这些技术概念本身形成正确的认识,而这种认识,对于西方学习者来说,很可能是在第一天就达成了的。

    例如,在网络编程中,socket是一个关键的术语。这个词在英语里是“插座、插口”的意思。我们熟悉socket开发之后会发现,如果把socket比拟为电话线插口,至少在很大程度上是贴切的。外国人学习socket编程的时候,一看这个词,脑子里马上就可以想到墙上的电话线插口,从而建立起“socket是联入通讯线路的端点”的概念,这就帮助他们迅速建立了对于socket的正确理解,在之后他学习socket编程细节的时候,这种理解就有助于他们掌握socket的各种行为。而我们通常把这个词翻译为“套接字”,这个词对于我们来说肯定是全新的,没有任何生活经验与之相连,所以我们要花很多时间去理解“套接字”的行为,直到有一天发生顿悟,原来套接字的行为跟电话线插口很像!

    另一个例子。Port在计算机中是一个被广泛应用的词,被我们翻译成“端口”。从单机来看,有I/O端口,从网络来看,主机地址由IP地址和端口构成。我们可能要搞很久才知道端口是个啥东西,然而这个词在英语里,意思非常明白,就是“港口”的意思。对老外来说,port很好理解,一个大的海滨城市,可能有很多港口。做进出口贸易的时候,船舶靠港,总要指定具体在那个港口停泊装货。同样的,计算机好比一座大城市,外设I/O数据也好,网络数据也好,要跟计算机互通有无,总要指定一个具体接头的地点,这就跟port的意思完全对应,理解起来一点障碍都没有。更妙的是,一旦明白了port背后的意思,学习比较艰深的技术概念也会容易得多。比如Windows的I/O Completion Port,概念上是比较难的。特别是当我们把它译为“I/O完成端口”这样不伦不类的东西时,就更难理解。而认识到port就是港口,这个技术的概念就好理解一些,我很快会写另一篇文章来讲。

    相比之下,一些草率的错译危害更大。比如把array翻译成为“数组”,比如把transaction译为“事务”,比如把packet switching翻译成“分组交换”。这里头把packet翻译成分组,虽然不直觉,但可以接受。而把switching翻译成“交换”,就比较离谱了。Switch在英语里是“电源开关”、“转换”的意思,其真实的含义是,根据条件,在可能的几条线路上选择一个,把电流或是别的东西转送过去。我们学习C语言的时候会学习switch语句,这个语句的行为就是switch这个词的真实含义。因此,把switching翻译成“选路”更为合适。而翻译成“交换”,就使人非常迷惑,交换是双向的,谁跟谁交换了?到底交换了什么?这些问题在packet switching的技术概念中都得不到回答,最后只能抛弃对这个术语的理解,囫囵吞枣地把它吞下,使之变为一个干瘪的词汇。

    这样的例子可以说是数不胜数,因此我们在学习的时候,碰到一个新的术语,最好弄清楚它的英文本义,看看是否能够借助生活经验直接理解,这样可能会大大地提高学习的效果。

    术语专业化,这是长久以来形成的习惯,所以马上改过来是不实际的。说实话,如果把socket译成“通讯口”,把data bus译为“数据巴士”,连我都觉得有点不习惯。所以对于有机会写书或者写文章的人来说,可以继续“术语专业化”,但是应该尽可能给读者把术语背后的意思讲得清清楚楚,这样有助于读者理解。这方面我看到做得最好的是谢希仁教授的《计算机网络》,对于不少专业术语都作了通俗的讲解。翻译计算机图书的人,也应该做这样的工作。要知道,Richard Stevens可以不解释socket,因为他知道读者都明白这个词的意思,不解释不会妨碍读者的理解,不会妨碍他的APUE、UNP、TCP/IP成为旷世经典,而翻译这些书的时候如果不解释“套接字”这个新鲜的东西,那可怜的中国读者就会很辛苦,还可能会以为套接字是间谍电影里什么接头暗号之类的东西,那就错的离谱了。