咬文嚼字:关于随机存取
今天我来咬文嚼字一番。如果说在我学习计算机相关知识的过程中,有哪些词语最让人感到迷惑,随机存取(Random Access)一定身在其中。
我大学时的本专业是电子信息,有一门专业基础课叫《随机过程》。整本书花了很大力气来讲“随机”这个概念,当然,在数学的概率论课里面也早有涉及。我们引用维基百科的描述:
随机性(英语:Randomness)这个词是用来表达目的、动机、规则或一些非科学用法的可预测性的缺失。 一个随机的过程是一个不定因子不断产生的重复过程,但它可能遵循某个概率分布。 术语随机经常用于统计学中,表示一些定义清晰的、彻底的统计学属性,例如缺失偏差或者相关。
总而言之,随机是一个跟统计、概率相关的概念。无论是在数学、还是在物理相关领域,随机都有着举足轻重的地位,是一个专业的词汇。
而在计算机领域,有一个词叫 RAM (Random Access),中文书本里全部翻译为随机存取或者随机访问。记得当时在看到这个翻译的时候,我是很迷惑的,虽然对这个词表达的意思已经形成了条件反射般的肌肉记忆,但我一直没有深究为什么它叫 Random Access,也没有深究为什么它的中文翻译是随机存取。比如,数据结构里一提到数组,我们就会说它的随机访问的时间复杂度是 O(1) 的,我大脑里早已把这个情景下的随机访问自动替换成了按下标、地址访问。但,这个跟术语随机可有半点关系?
直到有一天无意中看到了维基百科上对 RAM 的描述,我才豁然开朗,不怪我当时理解能力差,而是这个词本身就是不准确的,然后我们的中文翻译版本更是错上加错。
参看维基百科上的描述:
In computer science, random access (more precisely and more generally called direct access) is the ability to access an arbitrary element of a sequence in equal time or any datum from a population of addressable elements roughly as easily and efficiently as any other, no matter how many elements may be in the set. It is typically contrasted to sequential access.
首先,如果是意译的话,RAM 应该翻译为直接存取;其次,如果非要按字面意思,其实这里的 random,应该理解成 arbitrary,任意的。甚至翻译成随意存取都比随机存取要更符合原意。
然而,这么多年,我从来没有看到一本书里有提到随机存取里的随机是什么意思,真是一件很奇怪的事情。