Android/Linux/音频/驱动
全部博文(41)
分类: 其他平台
2017-06-13 11:53:56
【正文】
这 2 天在回顾《内核设计与实现(第3版)》这本书时又看到了“提领”这种说法,它出现在书上第 75 页。估计译者当时也不知道应该翻译成什么中文词汇比较好,所以在译文后加上了英文原文“dereference”。书上的原文是这样的:
节约两次提领(dereference)
如果你碰巧已经得到了 next 和 prev 指针,你可以直接调用内部链表函数,从而省下一点时间(其实就是提领指针的时间)。前面讨论的所有函数其实没有做什么其他特别的操作,它仅仅是找到 next 和 prev 指针,再去调用内部函数而已。……但这只有在向前和向后指针确实已经被提领过的情况下才有意义。……
说实话,当我第一次看到“提领”这个词时我完全不能理解,当时第一反应是:这好像是个古代官职,可这书是讲 Linux 内核的啊,那这到底是什么!?
幸亏译者给出了“dereference”这个原文,按照构词法来看它实际上是由“de-”前缀和“reference”单词组成。“reference”我们在源码或文档里见得多了,是“引用、参考”的意思,“de-”前缀则有“去除、去掉、反向”之意。这类常见的构成词对有很多,比如:
维基百科上对“dereference”的解释也印证了我这种说法的正确性:
The dereference operator or indirection operator, denoted by “*” (i.e. an asterisk), is a unary operator (one operator) found in C-like languages that include pointer variables. It operates on a pointer variable, and returns an l-value equivalent to the value at the pointer address. This is called “dereferencing” the pointer.
搞不懂书上为什么当时要翻译成“提领”这个怪模怪样的词,直接翻译成“引用解析”或类似的表达岂不是更容易让人理解?
【题外话】
当时我的思想还比较单纯,没有现在这觉悟,心想这种词汇含义的小问题应该早就有人解释过了,于是到号称“全球最大中文搜索引擎”的某度上搜索。得到的唯一有用信息是:“提领”还真是个古代官职名。