翻译如重构,期待您的单元测试


原以为,读英文的技术文字并不是特别费力,自己还把地铁译的结果放在了CSDN的博客上,那本书名叫《Spark for python developers》(https://blog.csdn.net/wireless_com/article/category/9266737)。但实际上,正如余晟在文章——“翻译为什么这样难 ”中所谈到的,翻译如不是自娱自乐的消遣,必然会“问路实难,它决定了旅程长远的价值”。

现在,自己终于有了切实的感受。去年年初的时候,十人合作的《深入分布式缓存》一书上市(赠书伴回家:《深入分布式缓存》),认识了机械工业出版社的福川。 当时在研究IoT尤其是智能家居相关的领域,连接性(connectivity)是重中之重,恰逢福川说一本关于计算机网络的书寻求译者,于是毛遂自荐,准备开始自己的译著之旅。结果,刚拿到书的时候瞠目结舌。

这本书正文782页,全书806页,2.7磅重,现在要弄懂它,并且阐述清楚变成流畅的文字,就如同面对一个近百万行代码的系统,现在要在保证它正常运行的前提下,完成重构。

好在是关于计算机网络的书, 自己接触互联网20多年,从大学里的课程到多年的编程实践,甚至还写过《老曹眼中的网络编程基础》,自认为可以胜任,但打开书一看,自惭形秽。本书的作者堪称计算机网络领域的大师级人物,强调的是元认知,以问题空间看本质,从而得到解决方案的空间,进而指出实践的要点和方向,简直就是波普尔科学知识进化论的真正案例。

Russ White在大型网络设计、部署、分解和故障排除方面有超过30多年的经验。他合作发明了40多项软件专利,参与了多项互联网标准的开发,并与互联网社区一起从事互联网治理工作。目前是LinkedIn架构团队的一员,在那里从事下一代数据中心设计、复杂性、安全性和隐私保护等方面的工作。他目前也是IETF的路由领域理事会成员,并担任IETF I2RS和BABEL工作组的联合主席。他的最新著作有《网络架构的艺术》和《网络复杂性导航》。

Ethan Banks也是1995年以来一直从事IT工作,早期是Novell公司、Windows和Linux环境的系统工程师,后来从事DNS、SMTP、HTTP和相关应用程序的工作,曾任高级网络工程师、网络运营经理、技术服务经理、网络架构经理、高级网络架构师等职。2010年,Ethan与人共同创办了Packet Pushers Interactive公司,还是一个作家,他的文字可以在《网络世界》,《网络计算》,《信息周刊》,《现代基础设施》,和TechTarget等渠道找到。Ethan为SolarWinds, Nuage Networks, CloudGenix和NetBrain Technologies编写或编辑过白皮书。他现在是Interop 的未来网络化联合主席。

读大师的书,如同聆听教诲,那么翻译大师的书,相当于要假扮大师说话么?

面对如此浩大的工程,我有些诚惶诚恐,于是想到了石头兄弟(石涛声)。我和石头相识于2017年,当时他还在Nokia研究分布式系统,但一见如故,有相逢恨晚的感觉。我向他介绍了这本书,邀请他一同翻译,志趣相投,一拍即合。于是,这一次不一样的系统重构开始起航。

这本书的整体结构是这样的:

每一部分乃至每个章节都是从“真正的问题是什么”开始的,如果没有对问题的坚实理解, 就几乎不可能真正理解真实的背景,从而不可能提出任何有效的提案或者实现方案。实际上,提出问题才能真正理解那些用于解决网络工程问题的技术,而且这正是最重要的步骤。

接着,作者们给出“解决方案是什么”。一旦问题暴露了出来, 解决方案集合就必然不会局限于最常见的解决方案或已实现的解决方案。相反, 所选择的解决方案将提供一个可用解决方案类型的全貌。同样,认为不实用的观点将是错误的——每一个解决方案都是一个"工具", 可以把它添加到用来解决一系列问题的思考工具集里面。以这种方式将问题和解决方案结合起来,从而建立了一套对任何类型的工程师都有用的思考技能。

最后,具体如何实现呢?一旦讨论了问题的集合以及每一个问题涉及的一系列解决方案,那么问题和解决方案就能被聚合成一组实现案例。在这里将看到理论和实践之间的联系: 每个协议如何解决一组常见的问题集, 然后选择一系列解决方案来解决这些问题。作者努力为这些部分选择了广泛的协议和系统, 所以不仅可以漫步解决方案的空间, 而且漫游了整个计算机网络工程的历史。

“重构”之旅是艰辛的,尤其是在自己从IoT调往小度商城之后(浮云朝露 2018),在繁忙的工作之余,留给翻译的时间非常有限。固定的时间只有地铁上的2小时纯净时间了。早上坐6:45的地铁可以赶上一班始发车,有座位,将双肩包垫在腿上当成桌子,支起Mac Pro,22站的地铁时光不用换乘,换乘后或者晚归没座的时候,手机上的Evernote成了主要的工具。在有限的周末里,安静地思考,轻轻地敲击键盘,再陪着一杯茶,这是奢侈的。

期间,石头兄弟离开了Nokia,前往硅谷从事区块链的研发,但并没有对翻译产生较大的影响。他喜欢沉浸式地工作,时间的连续使他的效率更高。

一天,十天,一百天,时间如车轮,一如既往。在两百天后,两人的初译稿终于完成。由于篇幅较大,交叉审阅的周期同样较长,在两次交叉审阅之后,终于迎来了三审三校。

不论华章的佘老师还是关老师,在审稿的过程中都体现了极强的专业性,问题不只一箩筐。稍有时间,石头和我就线上讨论,或者发邮件给原作者确认,或者从其他的著作或者文献上确认。即便是大师,仍有笔误的地方,都需要彻查清楚。

系统重构都是建立在单元测试基础之上的,但对于翻译这样的重构,测试只能是译者和出版社的老师。没有太好的办法,只能是英文看中文,然后读中文看英文,并随手标记修改。

行色匆匆,又一个200天后,来到终审阶段,我们看到了中文版的样式:

800多页的英文译为480多页的中文,还是中文的效率高,节省了纸张,保护了树木!

令我们欣喜的是这一本书成为了黑皮书——华章的计算机科学丛书。这套丛书诞生至今多是经典之作, 每个IT从业者都或多或少地读过一些。得遇经典,是石头兄弟和我的幸运。

为这一本书付出很多,但收获更多。不但系统地夯实了计算机网络的基础知识,更是对计算机网络乃至网络通信本身的问题从本质层面有了较为深入的理解。网络的分层与分离,技术方案的权衡,复杂性等贯穿全书,每一个领域的每一项知识点都可以延伸扩展到我们的工作中乃至编程中。

例如,书中谈到传输协议的功能无外乎“组装,复用,纠错,流控”四项,即数据的组织结构,数据和通信链路的复用方式,数据在传输过程中的检测与纠错,最后就是流量控制。在我们设计通信协议的过程中同样需要考虑这四个方面的技术。又例如,近两年成为热门话题的微服务架构,其本质根源在于通过网络形成的系统解耦合,以及虚拟化技术的持续演进,如果不了解网络技术的优势和局限,微服务也可能空有其表。

在这本书中,这样的例子几乎俯拾皆是,但是,原作者的意图是否通过译者的工作完整复原了呢?翻译如重构,最好的检验是您的单元测试,乃至集成测试——完整地阅读吧,如果您觉得也值得的话。

关联阅读:

计算机网络的元认知、实践与未来

嵌入式Linux的网络连接管理

老曹眼中的网络编程基础

IoT云服务连接性的方式

当当的链接:

京东的链接:

已标记关键词 清除标记
相关推荐
【为什么还需要学习C++?】 你是否接触很多语言,但从来没有了解过编程语言的本质? 你是否想成为一名资深开发人员,想开发别人做不了的高性能程序? 你是否经常想要窥探大型企业级开发工程的思路,但苦于没有基础只能望洋兴叹?   那么C++就是你个人能力提升,职业之路进阶的不二之选。 【课程特色】 1.课程共19大章节,239课时内容,涵盖数据结构、函数、类、指针、标准库全部知识体系。 2.带你从知识与思想的层面从0构建C++知识框架,分析大型项目实践思路,为你打下坚实的基础。 3.李宁老师结合4大国外顶级C++著作的精华为大家推出的《征服C++11》课程。 【学完后我将达到什么水平?】 1.对C++的各个知识能够熟练配置、开发、部署; 2.吊打一切关于C++的笔试面试题; 3.面向物联网的“嵌入式”和面向大型化的“分布式”开发,掌握职业钥匙,把握行业先机。 【面向人群】 1.希望一站式快速入门的C++初学者; 2.希望快速学习 C++、掌握编程要义、修炼内功的开发者; 3.有志于挑战更高级的开发项目,成为资深开发的工程师。 【课程设计】 本课程包含3大模块 基础篇 本篇主要讲解c++的基础概念,包含数据类型、运算符等基本语法,数组、指针、字符串等基本词法,循环、函数、类等基本句法等。 进阶篇 本篇主要讲解编程中常用的一些技能,包含类的高级技术、类的继承、编译链接和命名空间等。 提升篇: 本篇可以帮助学员更加高效的进行c++开发,其中包含类型转换、文件操作、异常处理、代码重用等内容。
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页