首页 > 代码库 > 转 什么是“原语”
转 什么是“原语”
http://blog.chengyichao.info/2011/03/14/primitive/
什么是“原语”
第一次看到“原语”这种提法还是在学习操作系统的时候,而且要么不碰到,一碰就是一双,“PV操作”这对原语就是我最先接触到的操作系统原语。当年 Alan Turing 在定义图灵机六个基本操作的时候也用了 primitive 这个词。当时觉得“原语”这个词很陌生,于是上网查了一下,大部分的解释都包含了“原子操作”的概念,事实上知道原语英文(primitives)的朋友应该知道它和“atomic”并没有多大关联,这说明“原语”和“原子”都姓“原”仅仅是一个巧合,尽管所有的“原语”看上去都是原子操作,但是它的定义绝对不仅限于此。
后来我在一个外国的论坛上找到了答案,具体的说法我已经忘了,简单地讲就是“石头、剪刀、布”这三样东西,除了“石头”是原语,而“剪刀”和“布头”不算,为什么呢?因为剪刀和布头都是人工合成的,而石头是浑然天成的。因此“原语”这个单词的定义还是要从它的英文原词 primitive 出发,也就是“原始”的意思。
我们知道物质的最小组成单位绝非原子,比原子小的是质子,比质子小的还有夸克。那么为什么我们看到一把剪刀以后很容易想到它的各个组成部分(比如锋利的部分用铁制成,而握的地方用塑料),而看到一块石头以后,脑子里还是只有一块石头,而不是各种矿物质的名称呢?原因是在人类形成最早语言的过程中还不知道什么是矿物质,众所周知人类的视力其实是很差的,只能看到光谱上面很小的一段可见光,也不能像显微镜一样看见的东西,直到道尔顿发现原子,人类科学才算走上了正轨。
计算机是一门人造科学,因此真正意义上的“原语”是不存在的。操作系统层面上的“原语”(比如 write 之类的系统调用)对程序员来讲的确是不可分割的最小单位,但是这写系统调用本身还是用好几句汇编语句组成的(对于 Linux 来说是 C 语言)。可能有人要说到了机器代码这一级就不能再分了,但事实上一条机器指令也是由好几个组合逻辑信号构成的。同样的道理,控制信号也不过是无数电子在器件内部漂移的结果。
因此定义“原语”的前提是观察者所处的位置。一旦规定了观察者的位置和观察的角度,比如就在操作系统的这层上,read,wirte,wait这些个系统调用自然就是最“原始”的词汇,这也是为什么“原语”会在操作系统中频繁出现的缘故。