fengyv

http://www.cnblogs.com/fengyv

导航

如果计算机是中国人发明的

Posted on 2006-05-24 16:05  fengyv  阅读(822)  评论(0编辑  收藏  举报
外国人学习计算机相关技术的时候,有一个很大的优势,就是语言上没有隔阂。很多计算机专业的术语,其实都是英语当中的日常词汇,通常是直接把跟那个技术概念在行为
上相一致的日常物品的名字来作为计算机术语。比如 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,因为他知道读者都明白这个词的意思,不解释不会妨碍读者的理解,不会妨碍他的APUEUNPTCP/IP成为旷世经典,而翻译这些书的时候如果不解释套接字这个新鲜的东西,那可怜的中国读者就会很辛苦,还可能会以为套接字是间谍电影里什么接头暗号之类的东西,那就错的离谱了。

上一篇:《【杂谈】黑客精神祭 挖掘神秘黑客背后的故事
下一篇:《Xen虚拟技术的发展现状与红帽集成情况