这位答主是否夸大了《编码》这本书?我在知乎的高赞回答(及本书勘误表)

若干年前,知乎上有这样一个问题“这位答主是否夸大了《编码—隐匿在计算机软硬件背后的语言》这本书?”(问题的具体细节请跳转到知乎查看),我被邀请做了回答。就某本技术书籍来说,这应该算得上是热帖了,毕竟书籍本身面向的读者群属于是比较小众的。作为利益相关者,我回答了这个问题(原问题回答于2017年5月),现在把它发布于此。文末我还附上了本书的一份勘误(永远更新中),如果你有在阅读本书,希望能够对你有帮助。


利益相关者,特来回答。

既然是利益相关者,为了看答案的人能够对我的回答有一个充分与客观的认识,先说一下我与《编码》的关系。我是这本书的译者之一。所以根据合同,每卖出1本书,译者可以分到税后不超过2元RMB的收益,本书有两个主要译者(我主要负责前半部分),因此,每本书我会有大约1元钱收益。

说一点客观的事实,没有感情色彩,所说内容都可以考证。这本书的原作者是享誉世界的顶级技术作家Charles Petzold,他曾于1994年被微软授予Windows Pioneer奖,以表彰他对Microsoft Windows的成功所做出的巨大贡献。(全世界只有7人获此殊荣,包括VB之父,Word之父等,但Charles Petzold是七人之中唯一的作家。)

这本书曾多次再版,豆瓣上(不同版本和印次的总计)有超过5800个点评,总评分为9.3,此外曾经推荐过这本书的名人包括(但不限于):刘未鹏(暗时间作者)、啊哈磊(《啊哈!算法》作者)、洪强宁(豆瓣技术总监)、Joel Spolsky(Stackoverflow联合创始人)以及本帖的答主之一的 轮子哥 vczh。这些人跟我都没关系,他们的评论和推荐也没有出现在书上,都是他自己写在自己的博客或者访谈或者知乎回答里的。所以到此为止,这些内容仍然是客观的,可以考证的。

然后是一些我个人的主观感受,既然是主观感受自然有个人感情色彩,你喜欢就是喜欢,不喜欢就是不喜欢。从这个角度来说,我觉得树影婆娑 说的也没错。我相信他肯定没收到出版社或者Charles Petzold的任何好处,我1本书才收到1元钱,自然也请不起他当托儿。他说的是他读了的感觉,就算他感觉自己能上天,也不能说他是在夸张。他喜欢感觉成什么都是他的感觉。

然后是我的感觉。因为我主要负责书的前半部分,所以英语原文研究比较细的也主要是前半部分(后半部分我主要看合作者译后的中文)。在读这个书之前我有学过“数电”和“组原”,应该都考了80多分(但具体多少记不清了)。然后我翻译这本书的时候,确有树影婆娑 或者 vczh 说的感觉。当然我的感觉并不是我学到了什么知识,而是惊讶于原来数电里的知识可以这么讲。我记得看过美国数学教材上讲勾股定理,作者用的是“七巧板”拼图的方式来说明勾股定理的‘证明’。其实从历史的角度,中国人首次证明勾股定理也是用的这个方法。但是我们的教材上却丢弃了老祖宗的奇思妙想,反而专注于“做题”。我觉得十分可惜。如果学生时代不能够通过这么好的讲述来领悟科学,恐怕也不容易培养学生对于科学的热爱。这一点,我们的教材应该向Charles Petzold学习。

通常作者每章开篇都会旁征博引一堆的历史典故,美国流行音乐、电影评论人、战争、历史典故、名人轶事信手捏来,然后说了一堆(有人认为这是啰嗦,但我认为这才显示出作者的功力,一个IT技术作家同样有丰富的历史和人文知识,也是相当可贵的),会让人豁然开朗、恍然大悟,原来他是想说这个。好吧,因为我的目的并不是要从书里学到什么知识,但是我感觉当成小说或休闲文章读起来也觉得很有意思。例如“黄丝带”的故事、弗兰肯斯坦的故事、盲文的故事等等。相信作者本身在写书的时候也查阅了大量的资料!他在研究这段历史的时候也感叹,巴贝奇造成机械计算机的时候,构造电子计算机的所有材料都是具备的(灯泡、导线、继电器等等),但是那个时候的人就是没想过用“电”来取代机械。或许历史也在等待一个石破天惊的契机!

总之,(即使我不是这本书的译者)我第一次读这本书的感觉也跟树影婆娑 或者 vczh 一致。但是如果你觉得我们这是夸张,那么我只能说这就是我们的感受。我不好说我自己知不知道‘鱼’的感受,但我们总能够(也有这个权利)说出自己的感受。

---------------

最后,与答题无关。这本书最初翻译时,我们也年纪尚浅,工作还有很多不足。书里确实有些地方不尽如人意,例如game theory应该是博弈论,我们的翻译是游戏理论(这些问题在2017年之后的版本中已经改正)。但是应该也要比一些大学里的老师做包工头拉一帮学生假手于人能好些。而且随着阅历的增长,我们也一直在维护和update这本书的翻译。薛总曾长期在国内某大型技术公司的驻海外部门工作,而我个人曾经在世界top20的CS专业就读,我们的理解应该也不会差太远。最近(大约一两个月前)我们还向出版社提交了一份最新的勘误(原来翻译上的不准确以及一些‘为了便于理解’的说法的调整),改动的地方差不多也有二三十处。毕竟印刷排版过程中也会引入很多问题,这些翻译的人也未必都能控制。比如本来是小写的i,排版后就变成了大写的I,JavaScript变成 java script(同样,这些问题在2017年之后的版本中已经改正)。我们也就只能不断的update。当然这本书一直在卖,市面上的版本印次不能完全统一,你买到的读到的,永远不能保证是最新修订的,这也很正常。所以,你至于去看英文版还是中文版我们都没有意见(即使英文版也是有错误的,参见【1】),我和薛总确实也不是靠翻译书吃饭的。借回答问题的机会来水一下知乎,我觉得,“行过则必留下痕迹”,读了书总能获得些东西,知识也好,休闲也罢。人家说说自己读书的感受,大家何必好像要挂人家一样来出来批判。这是不是有点妨碍言论自由的意思?任何人当然都有权利说他喜欢的东西好,仅此而已。

 

【1】编码一书的英文原版在线勘误

 


勘误表

非常感谢很多热心网友的整理,众人拾柴火焰高,这点非常像群策群力的众包工程,如果你有发现新的错误也欢迎在博文下方留言。

因为本人长期旅居海外,手头无法获得最新印刷的书籍。【2】和【3】是热心网友基于“2020年4月第25次印刷”与“2019年3月第22次印刷”版本整理的勘误,目前我手头只有一份"2017年11月第15次印刷”的版本。市面上不同印次的版本都是同时在售的,加之排版印刷环节也可能引入新的错误,因此,如果你手头的版本与我下面的勘误有出入,这些均属正常现象(部分问题可能在新版中已经修复因而仅存在于特定印次之前)。下面的勘误主要以【2】为基础整理而来(希望这些问题可以在下一次印刷时改正,当然这一点不由我控制,而要看出版社的库存和销售情况)。请注意,我是参照"2017年11月第15次印刷”的版本(也是我手头唯一有的版本)来验证【2】中的一些提法的,本书在2017~2018年曾做过较大范围的勘误,因此强烈建议你购买2018年以后印刷的版本。

  • Confirmed
  1. P73(第4行):享\rightarrow亨:亨利·沃茲沃思·朗福罗(Henry Wadsworth Longfellow)
  2. P105(倒数第2行):\textbf{W}\rightarrow \overline{\textbf{W}}
  3. P167(第12行):非或门\rightarrow或非门
  4. P177:第二级R-S触发器的输出是第一级的输入 \rightarrow 第一级R-S触发器的输出是第二级的输入(注意:此处英文原版有误,Charles已经发布了勘误)
  5. P206:相比于其他的顺序型的存储器——这种存储器在使用时有一定的限制,如果想要读取地址为101的数据,必须先把地址为100的数据读取出来。 \rightarrow 相反,一些其他类型的存储器必须按顺序读取——也就是说,如果想要读取地址为101的数据,你将不得不先把地址为100的数据读出来。
  6. P231:表格的倒数第2行的Subtract的c和t之间多了一个空格
  7. P261:发表了一片题为 \rightarrow 发表了一篇题为
  8. P266:杰里佛\rightarrow杰弗里:杰弗里(Geoffrey Dummer)
  9. P271:只不过此处我用的是异或门 \rightarrow只不过此处我用的是或非门
  10. P280:倒数第3行,多了一个逗号,应删去其中一个
  11. P295:“LXI指令保存一个字节。而且上表中最后一条LXI指令为堆栈指针赋了一个特殊的值。通常下面的指令不作为微处理器复位之后首先执行的指令之一。” 应该改为:“应为:LXI指令节省了一个字节。而且上表中最后一条LXI指令为栈指针赋了一个特殊的值。通常下面的指令会作为微处理器复位后首先执行的指令之一。” 此外,本章中自第291页起,把stack翻译成立了“堆栈”,为了把堆和栈区别开来(而不是统一来看),最好统一改成“栈”。
  12. P349:下画线 \rightarrow下划线
  13. P355: 32 33 31 31 32 0D 0A 33 30 39 3 31 0D 0A 36 32 37 33 36 0D 0A \rightarrow 32 33 31 31 32 0D 0A 33 30 39 31 31 0D 0A 36 32 37 33 36 0D 0A
  14. P361:QDOS was eventually renamed 86-DOS and licensed by Microsoft Corporation. 书中的翻译是:“QDOS系统被微软公式注册后更名为86-DOS。” 如何翻译/理解这里的licensed很关键。最好改为:“QDOS最终更名为86-DOS,并被微软公式买断版权。”
  15. P390:for语句会一次为a赋值 \rightarrow for语句会依次为a赋值
  16. P417:Moving Pictures Expert Group \rightarrow Moving Picture Experts Group

 

  • Plausible(值得商榷的,但我认为也不是错误的地方,例如翻译的风格,术语的使用,是否还可以有更好的翻译方式)
  1. P295:The only flag that the instruction affects is the Carry Flag. 纯语法分析的角度拆解:这个指令影响的唯一flag是CF。书中的翻译是:... ...,只对进位标志位CF有影响。有网友建议翻成:... ...,在标志符中只对进位标志符CF有影响。(我觉得很拗口,见仁见智了)
  2. P259:英文原文:While relay machinese were known as electromechanical computers, vacuum tubes were the basis of the first electornic computers. 书中的翻译是:“虽然继电器计算机被称为电动机械计算机,但真空管是第一台电子计算机的基础。” 有网友建议加一个字,改为:“虽然继电器计算机被称为电动机械计算机,但真空管是第一台电子计算机的基础。”
  3. P198:英文原文:Further changes to the Data input don't affect the outputs until the Clock input goes to 1 again. 书中的翻译是:“除非时钟输入再次还原为1,之后的数据端输入不会影响输出。”有网友建议之后前面应该加上“否则”,即“除非时钟输入再次还原为1,否则之后的数据端输入不会影响输出。”
  4. P178:英文原文:This changes the first flip-flop stage because the inverted Clock inputs is 1. But the second stage remains unchanged because the uninverted Clock input is 0. 书中的翻译是:“这改变了第一级触发器的状态,因为时钟输入取反变为1。但第二级触发器状态保持不变,因为时钟输入仍然为0。” 有网友建议改为:“这改变了第一级触发器的状态,因为(在第一级里使用的)取反的时钟输入为1。但是第二级触发器状态不变,因为它使用的是未取反的时钟输入0”。
  • Fell for it(有网友认为是错误,但经查确定不是错误的地方,有人怀疑Charles的英语有问题,我也是醉了)
  1. P234:TANSTAAFL,天下没有免费的午餐,英文原文说是There Ain't No Such Thing As A Free Lunch. 怀疑英文原文也有问题,正确符合语法的表示应该是:There's no such thing as a free lunch。(这是【2】中网友的意见,对此我的看法是:Charles是土生土长的美国人,而且受过高等教育,他的英语没问题(而且图书出版前,出版社编辑也要审稿的,美国出版社编辑的英语不过关,我也是不信的)。这句话可以参见维基百科【4】,我倾向于原文是正确的。
  2. P287:“以下是8080的算术运算和逻辑运算指令”,有网友建议改成“以下是8080的逻辑运算指令”,因为他们认为表中没有算术运算指令;首先:这句话在英文原版里是没有的,而是由译者在翻译的时候加上去的,因为中文出版物的要求是图和表需要在正文中被提及,直接列出表和图而不加说明不符合中国出版社的规定。其次:表中的CMP不属于逻辑运算符,参见【5】(Intel 8080官方手册),根据Intel官方的解释,CMP执行的是减法操作,因此这里使用算术运算一词是可以的。
  3. P244:英文原文:This byte is added to the value at location 001Eh. This happends to be the Halt instruction, but of course it's also a valid number. 书中的翻译是:“这个字节与地址001Eh存储的值相加,所得的值恰巧是Halt指令,但同时它也是一个有效的数字。” 有网友建议改为:“我们将再拿这个字节与地址001Eh存储的值相加。001Eh里恰好是Halt指令,不过它也是一个有效的数字。”他同时认为如果用原翻译,会以为加起来的值恰巧是Halt指令,容易让人产生误解。但是,我觉得书上的翻译没有问题,“这个字节+地址001Eh存储的值=Halt指令的值”,加起来的值恰巧是Halt指令——哪里不对了吗?原书表达的意思也应该就是如此吧(网友建议的翻译也表达了这个意思,但是太啰嗦了,出现了两次001Eh,毕竟原文里只有1次)。

 

 

【2】链接1

【3】链接2

【4】There ain't no such thing as a free lunch

【5】Intel 8080汇编语言手册

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白马负金羁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值