[心得] 还是应该看原始资料

最近在研究MQTT协议,从百度上看到了 发布到gitbook上面的mqtt中文版协议:https://mcxiaoke.gitbooks.io/mqtt-cn/content/
初读协议,感觉翻译者功力相当深厚,于是以之为蓝本。
但是当我准备实现MQTT broker时,却发现好像有点不对。

1.问题的发现:


上面说明了PUBREL可以重发,但是看下面图

图1 2.2.2 标志 Flags

这说明 PUBREL 不能重发吗?还是即使重发也不可以设置重发标志,那么重发标志的意义是什么?

然后后继续看 PUBREL的报文:


也就是MQTT协议重发报文不可以设置重发标志咯?那重发标志的意义在哪里? 我百思不得其解

2. 问题定位

因为我主要看是用java netty作为开发框架,在netty 源码的注释中,我找到了 http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

认真看了下英文,感觉一阵的头皮发麻,翻译者在某些关键地方没有翻译,某些地方加入了自己的想法(想法有误),某些概念上出现了严重的混淆
这里我要强调,我并不是批评翻译者,实际上翻译者并没有责任和义务保证翻译作品100%正确,任何人都不能保证翻译的作品一定符合原作者的意思。

1. 图1 (2.2.2 标志 Flags),在原文档并不存在

很难理解为啥会出现这种问题,我一行一行的对协议,也不曾看到这个 2.2.2 标志 Flags 的那张图从哪里出来的。难道作者看到的英文协议和我们看到协议不是一个吗?

2. 几乎每个Fixed header 的 前4位bit位都有问题

例如:

翻译版协议内容
原文协议内容

别看就是一个小小的x的区别,实际上表达的意思简直天差地别,x代表可能是1或0,而0就表明只能是0

3. 关键性信息没有翻译出来

翻译版协议内容
原版内容

这个图表对我理解 mqtt的qos2的交互至关重要,我几乎不用看文字,通过这个图表都可以理解mqtt的qos2的交互,然而在翻译版却没有

3. 结论

突然想到了在《舌尖上的中国3》,老爷子操着粤语口音说的:"中西并举、南北结合"。

  1. 由于本人英语能力太弱,很难看懂英文原文文档,还是需要结合中文一起看,但是不可完全依赖翻译文档,还是要结合原文文档看。
  2. 看书尤其是非常重要的书,应该看原始资料,因为资料经过其他的人手后,很可能就改变了最初的本意。

你可能感兴趣的:([心得] 还是应该看原始资料)