我译又何妨--品味翻译中的成长历程 | ||
| ||
第一次看到吕建鹏翻译的文章是在csdn的blog上,当时眼前一亮,感觉如此的学习之道真是创意。没有过多地考虑,就联系了他,希望他能坚持的做下去。彼此的沟通后,他自信的坚持着,翻译也在继续,虽然不是什么惊天动地的事业,但我想这个过程带给他和大家的收获应该不仅仅在这些译稿上。更多的思考应该是什么呢?! | ||
我译又何妨--翻译中的成长程序员有两大精神:偷懒和没记性:)。很不幸,我都具备了,淋漓尽致;很幸运,我没做程序员。 缘起2003年7月我从西安邮电学院计算机系毕业。在此前的几个月里一直忙于毕业设计,用Delphi作一个软件。我的目标逐渐明朗起来,不过不是Delphi,而是操作系统。为什么呢?很喜欢Delphi,但是它给我失望的太多了,当然这与Delphi本身没有关系。现代的程序设计领域,几乎所有的技术都不在我们自己手里。Delphi很不错,但我能拿它做什么?写什么样的程序?不管是数据库还是网络,都没有自己的核心技术,用用设计模式就很不错了,无法持续成长。其次,厂商靠卖点,流行的也是这些卖点。如果只知道学习这些所谓的技术,使劲跟着潮流跑,我觉得我没这个精神。这算不算偷懒呢?还有Linux,它对我的影响不是很大。始终对自己说一定要独立思考。Linux是纯粹的开源,Windows则相反,现在,Linux遇到了很大的问题,Windows也遇到了很大的问题。开源不开源的问题争论很多,就像是前几年的“Delphi VS VC++”,很有意思,但也很没用。我想试着写一个系统内核,看一下会出现什么问题。这是一个长远的计划,都不知道能不能完成,现在只是在翻译《 操作系统概念(第六版 影印版) 》,学习基本理论。毕业之后的几个月里一直在训练,几乎没有机会看书,只是简单的翻了一下《设计模式》。十一月中旬回到单位,这儿比较好,自由时间充足。买了好多书,《Linux内核源代码情景分析》、《深入分析Linux内核源代码》、《Linux操作系统内核实习》、《Linux技术大全》、《Red Hat Linux技术大全》和《操作系统概念(第六版)》。那个时候心里没底,不知道如何下手。Linux内核源代码的书籍根本没法看,自己缺乏整体的概念,边看边忘。即使是一个“小”问题,比如进程管理,也难以入手,大学里学的那点东西根本不够用,而且不细致。《操作系统概念(第六版)》也没心思仔细的读,天天看书,天天看不到一点进度,心里很烦,也很急。这个样子一直持续到了春节之后。寒假开学后继续想办法看Linux内核,在各种能找到的书间比较,找到了一本好书——Understanding the Linux Kernel, 2nd Edition。有天晚上突然想“为什么不把它翻译出来呢?”但是又觉得翻译这本还不如翻译《操作系统概念(第六版)》呢,不管怎样,先完善一下自己的理论知识再说。于是就开始翻译《操作系统概念(第六版)》。 第一章花了很长时间,大概有一个多月吧,修改了好多遍,不但使用计算机,至少打印了三遍,算是字斟句酌了。好友lyrh帮我修改了一些句子,但还是有几句话不能确定,我想先放着,开始了第二章的翻译。在翻译完第一节刚开始第二节那天,晚上我没有回家,lyrh给我发短信“网上开始出售中文版了”!这时我才知道郑扣根老师的《 操作系统概念(第六版)(翻译版) 》出版了。这件事给我的打击不算小,刚刚找到的一条“持续发展的道路”又给堵死了。我停了下来,至少停了一个月。 虽然停了下了,第一章毕竟还是做完了。想做最后的修改,把它放在CSDN上,这时候又过了几个星期了。又看了几遍,在CSDN上面发布了。出乎意料,人气值竟然“很高”。原先以为这样的文章不像C、Delphi、VB等,没几个人看,但是没几天就达到了300多,当时放了近一年的《Delphi编码规范》才1200多一点,所以应该算“惊人”了。而且网友的留言也让我觉得意外,至少是没人骂我!CSDN的雷编辑给我发电子邮件询问翻译的事情。我突然觉得翻译这本书很有用,但没有最初那样的冲动,仔细考虑了几天,然后决定继续翻译。我给自己找了这么几个理由: 1.既然目标是操作系统内核,就必须要有相当牢靠的理论知识作基础。翻译是一种相当好的可行的学习方式。因为以前学习过操作系统课程,很多东西一点就通,翻译相当于回顾、补充和完善。 2.出现两个中文版本绝对不是坏事,虽然到现在还没有人这么做过,但我坚信这一点。 3.英语学习。还想考研呢,又不喜欢背单词,做题。考四级时把课本、试题丢在了一边,花了一个寒假翻了一遍《京华烟云》,考研呢?翻译《操作系统概念(第六版)》吧!(我好像从不走正路) 基于这些理由又回到了原先的那条路上。现在第三章已经完成了,第四章也开始了。在第三章将近完成的时候,创建了一个个人网站TULIPSYS(http://www.tulipsys.com),我想把它做成一个操作系统专业网站。 这就是我翻译《操作系统概念(第六版)》的缘起了。 随想非常认真的在做这件事情。有时觉得自己做不下去了,没有思路了,没有心情了,也就停下来。“无为而治”,不想把自己逼得太凶,也不愿给自己太多压力,只是关注着这件事情,注意着去做。进度并不是很快,到目前为止大约一个月一章,前三章内容也稍多一些。第一次做翻译,水平也实在有限。面对已经出版的中文版,甚至有点左右为难。说实话,很想买一本看看,我想知道自己的和人家的有多大差异。几个月过去了,始终没有人对我指手划脚,反而让我有点不舒服了,因为不知道别人看了这些会有什么样的感觉,也不能清楚的了解自己的水平。但始终没有买这本书,因为我担心会“参考”,一次两次窥其一二,日后有不可收拾的危险。我只能保证自己认真的去做,只是要对自己负责。既然要做,就要把它做好。没有任何的压力,随便我了。对于可能的其它的什么事情,仁者见仁,智者见智而已。翻译并不容易。首先要读懂英文。其实这有时也很困难,因为有些句子本身可以以多种方式来理解,而且上下文也没有有效的提示。这时,就只能猜测作者的本意了。其次,要把英文转换为中文,这时要注意一定要用自己的话。说着容易,做着难。即使把这句话牢牢地记在心里,实际翻译的时候往往也会不自觉的咬文嚼字。英语可能会很罗嗦,当你写出汉语的时候常常发现很简单。如果用一个成语来表达一句英文句子的话,这就非常明显了。问题是:你能不能忍受这样的翻译?毕竟还有几个单词没有译出呢。经历过一次有趣的考试,读大学时系主任韩老师教我们《专业英语》,考试时从课本中随便找了一节(有十几页)让我们尽可能多的翻译。那个考试很辛苦,凭着电子词典卖力的翻译,两个小时下来,只想趴下睡觉。成绩出来时,发现居然考的还不错,两个最高分,有我一个,真是相当满意。作为一门二类课,平时认认真真看课本的人很少。韩老师提前一周说明了考试方法,说明要随便抽出一节考。于是考前的那一周很多人就非常的忙碌,不但把课本从头到尾看了一遍,而且把所有不认识的单词都标注在书上,真是很辛苦!而我呢?一点都没看,也不是觉得自己一定能考好,而是觉得一定能过,分数高点低点无所谓。不过结果还真出人意料呢! 我觉得还是有不少收获的。虽然这是前三章,但是绝不容易,因为都是些概述性的内容。比如第三章,讲的是操作系统结构,提到了微内核和虚拟机这两个概念,讲到了一定的深度,都不容易。后面还提到了mechanism和policy,二者又太容易混淆了,所以就保留了英文,没有译出。很多英文教程就是这样,在前面几章里就把所有的内容概述一编,而且绝不泛泛而谈,还是相当有深度的。以《操作系统概念(第六版)》为例,对于一个初学者,如果他没有接触过操作系统,那么第一章(概述)和第二章(计算机系统结构)还可以应付,第三章恐怕就很成问题了。这可能是中西方文化教育的差异的一个表现。有时候忘记了联系学过的知识,面对一些难懂的句子就会出现很多问题。技术毕竟还是技术,这是一本教程而不是一本小说。所以要以学习的眼光而不是欣赏的眼光。这一点很重要,有几次忘记了这一点就渐渐的陷入困境了,然后回想起来,问题迎刃而解。应该说《操作系统概念(第六版)》的句子还是非常不错的,但是也难免出现很多不易理解的地方,这时候就尤其要注意了。 我的工作不是很重,空闲时间比较多,希望能够坐下来专心致志的做一点技术。应该说现在国内的环境并不是特别好、不是特别有利于发展,至少是从技术的角度来看。翻译就是很好的一个例子。如果现在要我在影印版与中文版之间做出选择,恐怕我多半是要选择影印版。即使是针对某一本书,《设计模式》、《操作系统》等等,我觉得很少会选择中文版。除非是了解性的,只需要大概的了解一下,那我会选择中文版。很少有人认真,接到一个翻译工作,分给下属几个人,一哄而上,很快做完了,质量呢?管那么多呢!这样并不好,即使不考虑翻译的态度、水平的问题,那么这一本书下来,语言风格是多种多样的,这好吗?但是一个人翻译也有问题,时间问题。粗略的估计翻译完成《操作系统概念(第六版)》至少需要20个月,我觉得对我来说已经很快了。与lyrh猜测一个高手(他至少在专业方面和英语方面不会太差)完成这样一本书需要多长时间。lyrh说三四个月就够了,但我问:只是把这本书抄一遍需要多长时间呢?我觉得还是认真一些好,少一点浮躁,对大家都好。 走到现在,翻译几页书,完全在意料之外。翻译《操作系统概念(第六版)》是很突然的。人生真的很奇怪,你即将做的与你想的往往有很大的差别。现在计划完成这件事之后好好看一下Applied C: An Introduction and More,谁知道呢?我想做操作系统,循序渐进也许不错。计划很重要,尤其是短期计划。我最初的计划似乎太长了,成了不可能的任务。开始时因为无法制定短期计划而常常陷入困境,因为想做的事做不下去,几天、几周、几个月都看不到进展,谁都会坐不住。 讨论,作为语言之间的转换,主要的问题还是语言。思维方式的影响比我想象的大得多,英语中很通顺的句子译为汉语就像是外国人学中文的造句。总结了一下,有这么几个词不太容易:1.with 例:The state of the virtual machine has been modified exactly as though the I/O instruction had been executed with a real card reader for a real machine executing in a real monitor mode. 其实这句话本身就不容易,多了一个with,雪上加霜。with在书中用的很多,从英文的角度看来,很流畅,很自然,也很省事。但翻译成中文,麻烦了。 2.appropriate 例:The Mach kernel maps UNIX system calls into messages to the appropriate user-level services. appropriate用的也很多,作者的意思很明白。但是这纯粹就是语言习惯问题,我们好像从来就不这么说,似乎认为这是多余的。 3.well well与appropriate有异曲同工之妙。 目前为止,只是完成了这么一点工作。没有多少东西可供大家分享。在此只是把一些句子帖出来,供大家参考。下面是我从第三章中摘抄的一些很有意思的句子,加了自己的译文: 原文:Internally, operating systems vary greatly in their makeup, being organized along many different lines. 译文:在内部,操作系统的构成相当不同,它们沿着一些不同的思路组织。 注:line不容易翻译。 原文:The design of a new operating system is a major task. 译文:新的操作系统的设计是主要的工作。 注:major task是什么意思?作者是怎么想的? 原文:A program does nothing unless its instructions are executed by a CPU. 译文:程序本身并不能做什么,只有在CPU执行它的指令时才能有所作为。 原文:A process is the unit of work in a system. 译文:在系统中,进程是工作单元。 原文:Other operating systems, such as MS-DOS and UNIX, treat the command interpreter as a special program that is running when a job is initiated, or when a user first logs on (on time-sharing systems). 译文:其它的操作系统(像DOS和UNIX)把命令行解释器当作一个特殊的程序,(在分时系统中)当一个用户登陆到系统或初始化一个任务时,它就已经在运行了。 注:对first的理解很重要,什么叫第一次?是装完系统后的第一次登录吗?我看不是。 原文:It loads the program into memory, writing over most of itself to give the program as much memory as possible. 译文:它将程序载入内存,写到自己的上方(这是指内存地址),并尽为其分配可能多的内存。 注:好像不易理解,加个注释。 原文:The virtual-machine software is concerned with multiprogramming multiple virtual machines onto a physical machine, but it does not need to consider any user-support software. This arrangement may provide a useful partitioning into two smaller pieces of the problem of designing a multiuser interactive system. 译文:虚拟机软件专注于在一台物理机器上并行执行多个虚拟机,而不需要考虑用户支持软件。这种设计有助于将多用户交互式系统的设计问题分为更小的两个部分。 原文:For example, to get input, we may need to specify the file or device to use as the source, and the address and length of the memory buffer into which the input should be read. 译文:例如,为了获取输入,我们可能需要指定文件或设备作为信息来源,并且要把地址和内存缓冲区的长度放到输入读取的位置。 注:什么叫做“which the input should be read”? 原文:If control returns to the existing program when the new program terminates, we must save the memory image of the existing program; Thus, we have effectively created a mechanism for one program to call another program. If both programs continue concurrently, we have created a new job or process to be multiprogrammed. Often, system calls exists specifically for this purpose (create process or submit job). 译文:如果在新程序结束时将控制返回给现有的程序,我们必须保存该程序的内存映象;这样,我们要创建一个有效的机制用于一个程序调用其它的程序。如果想要两个程序能够并行执行,我们就要进行多道程序设计来创建新作业或进程。许多系统调用是为此而存在的(create process或submit job)。 原文:Another problem is that the interpretation of the parameters is left up to the programmer of the system program. Thus, parameters may be provided inconsistently across programs that appear similar to the user, but were written at different times by different programmers. 译文:另一个问题是把参数的解释留给了系统程序程序员。这样,程序间和用户看到的参数可能有所不一致,因为这是不同的程序员在不同的时间写的。 注:真是一团糟! 原文:The virtual-machine software is concerned with multiprogramming multiple virtual machines onto a physical machine, but it does not need to consider any user-support software. This arrangement may provide a useful partitioning into two smaller pieces of the problem of designing a multiuser interactive system. 译文:虚拟机软件专注于在一台物理机器上并行执行多个虚拟机,而不需要考虑用户支持软件。这种设计有助于将多用户交互式系统的设计问题分为更小的两个部分。 原文:The state of the virtual machine has been modified exactly as though the I/O instruction had been executed with a real card reader for a real machine executing in a real monitor mode. 译文:虚拟机状态被修改,就像是运行在真正的监控模式的真实机器上的一个真实读卡器执行了这条I/O指令。 注:real,real,real! 原文:VM works for IBM machines because normal instructions for the virtual machines can execute directly on the hardware. 译文:因为虚拟机指令能够直接在硬件上直接执行,所以VM能够为IBM机器工作。 注:百思不得其解!“For”,for什么呀? 原文:Finally, an operating system is far easier to port-to move to some other hardware-if it is written in a high-level language. 译文:最后,使用高级语言编写的程序更易于移植到其它的硬件上。 注:仁者见仁智者见智。 原文:Modern processors have deep pipelining and multiple functional units, which can handle complex dependencies that can overwhelm the limited ability of the human mind to keep track of details. 译文:现代的处理器拥有深流水线和多个功能单元,它们能处理复杂的相关性,这突破了人类智力的限制。 原文:Any operating system that has implemented the JVM is able to run all Java programs, because the JVM abstracts the underlying system to the Java program, providing an architecture-neutral interface. 译文:因为JVM为Java程序抽象了底层的系统,提供了一个系统无关的接口,所以实现了JVM的操作系统可以运行所有Java程序。 注:abstract...to the Java program? |
品味翻译中的成长历程
最新推荐文章于 2024-08-21 17:58:09 发布