01改变世界:计算机发展史趣谈
上QQ阅读APP看书,第一时间看更新

第1章 漫长的手动时期

1.1 原始社会的计数方式

1.1.1 手指:长在身上的“计算机”

文明萌芽之前,人类的祖先还没有“数”的概念。在广袤的原始森林里,他们认识这棵树,也认识那棵树,唯独没有“这是从哪到哪第几棵树”的概念,更没有某一范围内总共有多少棵树的概念。

后来祖先们渐渐有了计数的意识,但起初局限于很小的数。他们用身上的特定部位去表示数字,如用鼻子表示1,用眼睛或耳朵表示2。直到20世纪40年代,在一些文化发展比较迟缓的地区,部分人最多只能数到3或10,再往后就数不清了,只将其统称为“多”。在国外,澳大利亚、巴布亚新几内亚和巴西的一些部落也没有定义2或3以上的数字。

人天生是不擅长计数的,在潜意识里很容易把超过3的数目归类为“多”。这就好比在未经有意识统计的情况下,当有一两个人说你长得好看,你会记得有那么一两个人说你好看;而当有第三、第四个人这么说时,你的印象里一定是“好多人都说我长得好看”!

1.肢体计数

然而,人类终究是要与较大的数打交道的。祖先们渐渐需要面对“打到了多少猎物”“部落有多少人口”这类简单的统计问题,他们为了计算更“大”的数开始动用身上包括手指在内的各个部位。

每个原始部落都约定了一套内部通用的计数规则。据统计,单在巴布亚新几内亚就发现了至少900种不同的肢体计数方法。其中一种是用上半身的27个部位表示数字1~27,如图1.1所示。如今看来,这种计数方式比直接使用数字麻烦得多。

图1.1 巴布亚新几内亚某部落的身体部位计数法[1]


[1] 图片来自《“啊哦呜”部落和“牟尼”部落》。

使用最多的肢体部位是手指和脚趾,一指(趾)就表示1,双手(脚)就表示10,一人就表示20。因此,有不少地方曾使用二十进制。在以前的英国货币中,1英镑等于20先令;在法语中,数字表示也受到二十进制的影响,如80=4×20(quatre-vingt)[2],90=4×20+10(quatre-vingt-dix)。


2.手指计数与十进制

比起脚趾,手指更便于计数。如今应用最广的十进制便源自我们的10根手指。

20世纪美国著名的科幻、科普作家艾萨克•阿西莫夫曾说过:手指是人类最早的“计算机”,英文单词“Digit”既表示“手指”,又表示“整数数字”。

我们设想一个场景。在很久很久以前,一个人类的原始部落与一群野兽爆发了激烈斗争,人类凭借聪明的头脑最终大获全胜。部落首领指派粮食管理员对斩获的猎物进行清点,管理员便掰起了手指,1根手指对应1头猎物。当他数到第10头猎物时就犯难了,因为手指用完了,猎物却还有很多,这可怎么办呢?

他到处询问解决办法,但部落中从没有人数过这么多猎物。正当大家一筹莫展时,一个机灵的孩子说:“每数完两只手,就找1根树枝放在一边,这样就可以腾出手指重新数啦!最后除手指之外,再数一下一共有多少根树枝,不就知道总数了吗?”

大家都觉得这个方法很好,纷纷对孩子竖起了大拇指。粮食管理员也顺利地完成了任务。

这就是十进制的由来,也是进制的由来。大多数人天生拥有10根手指,在数数时,每满10就需要额外记录一下。这位粮食管理员在最后清点树枝时,仍有可能遇到手指不够用的情况,此时他可以10根一组地将树枝捆起来,这就实现了从十到百的进位。后来人们也想出了各种各样的手指计数方式,如用一只手的手指表示个位,用另一只手的手指表示十位,可以直接表示出1~99,如图1.2 所示。

图1.2 用手指表示1~99的一种方法[3]


[3] 图片来自《计算机技术发展史(一)》。

再进阶一点,手指的弯曲所形成的各种手势都可以用来表示更大的数。比较典型的例子是1494年由意大利数学家卢卡•帕乔利(Luca Pacioli)整理的一套手指计数法。图1.3左侧两列为左手手势;右侧两列为右手手势。

图1.3 Luca Pacioli手指计数法[4]


[4] 图片来自“Computer History Museum”。

先人的智慧令人钦佩,在不借助外部工具的情况下,光靠手指就能实现几百乃至几千的计数(更复杂的手指计数甚至可达百万)。

3.其他进制

除十进制之外,还有许多历史上曾出现过或如今依然在用的其他进制,它们大多也源自手指计数。

太平洋中有个叫瓦努阿图的岛国,那里的人们喜欢用单手数数,就用着五进制。如果你问:“一星期有几天?”他们会回答你:“一手两天。”我们平时在统计投票时采用画“正”字的方式可以提高效率,中国算盘的设计也是“满5进1”,这正是因为人类在潜意识中习惯五进制这种“单手操作”。

美国加州和墨西哥的一些部落则喜欢用指缝计数。摊开你的双手数一数,有几条指缝?答案是8条。八进制就是这么来的。不过,如今八进制大多出现在一些专业领域,很少在生活中出现。

还有些部落留意到手指是分节的,伸出一只手,从食指到小拇指,每根手指都有3个指节,一共12节,十二进制就这么出现了。那大拇指呢?大拇指负责的是指向这些关节,这样单手就可以完成12以内的计数了。十二进制在生活中是很常见的,如时针走1圈代表12小时,1年有12个月,我们平时所说的“一打”也是12的意思。

古巴比伦人一手用十二进制,一手用五进制(表示12的1~5倍),结合起来就产生了楔形文字中的六十进制,如图1.4所示。生活中,六十进制主要用于计时,如1小时有60分,1分有60秒。在中国的传统文化中,十天干与十二地支按顺序两两相配,每60年为一个甲子。

图1.4 古巴比伦手指计数法[5]


[5] 图片来自《用身体来计数》。

读到这里,读者可能会有些失望,因为最关键的二进制还没有出场。二进制源自哲学,不是靠手指计数产生的,后面会介绍相关内容。

4.手指计算

仅用手指表示数字仍是不够的,欲将手指称为计算工具,起码还要用它实现计算功能。手指确实可以进行一些简单的计算,配合心算口诀,不但能做加减运算,还能做乘除,我国古代就出现过成熟的“手算”方法。明代数学家程大位在其《算法统宗》一书中详细记载了由秦晋商人发明的“一掌金”算法[6],它是靠右手手指点左手的各个指关节来完成计算的,如图1.5所示。


[6] 有关“一掌金”的记述最早见于明代数学家徐心鲁于1573年写的《盘珠算法》一书。

图1.5 《算法统宗》记载的“一掌金”[7]


[7] 图片来自《算法统宗》。

有了“一掌金”,商人出门谈生意,两手往衣袖里一藏(那时的算法通常是商业机密,不能轻易外泄),“掐指”一算,出账入账就都清楚了。有歌谣曰:“袖里吞金妙如仙,灵指一动数目全。无价之宝学到手,不遇知音不与传。”

“手算”虽然方便,但能算的数值范围毕竟有限,还需牢记复杂的心算口诀。现在一些少儿教育机构热衷于开发面向小朋友的手指速算法,这确实比纯心算更快、更可靠,但这用来开发智力还可以,实际应用起来就捉襟见肘了。正是手指的这种局限性,促使着人类摆脱身体部位的束缚,一步步朝着更先进的计算工具迈进。

1.1.2 石子:解放双手的第一步

用手指计数和计算的一个显著缺点就是无法存储。如果一个猎人想统计自己一个月内打了多少头野兽,则需要每天累加,总不能天天掐着手指睡觉吧!

人类最早借助的外物是大自然中随处可见的石子、贝壳、小木棍、玉米粒、豆粒,甚至动物的尾巴和角等。例如,用石子表示圈养了多少头猎物。若第一天宰杀了两头,就从中取出两颗石子;若第二天新狩猎到3头,就往里添加3颗石子,这样人们就不需要时刻记着还剩多少头猎物了。

也许是耐存放的原因,在这些天然物品中,石子用得最多,我们不妨将这种计数方式统称为石子计数。英文中表示“微积分”的单词calculus在拉丁文中的原意正是“用来计算的小石子”,可见石子与计算本身有着很深的渊源。

1.石子计数

人们最早使用石子等物品表示数量时,其实对最终的计数结果毫无概念。斯里兰卡的维达人会使用树枝表示椰子的数量,但如果你有机会采访一名正在收椰子的维达人,你们的对话大概会是下面这样的。

你:“一根树枝代表一个椰子是吗?”

他:“是的。”

你:“等椰子收完了,再数一数一共有多少,是吗?”

他:“嗯?数啥?”

你:“不数怎么知道一共有多少个椰子呢?”

他(指着那堆树枝):“就这么多。”

真正的石子计数是不能这样无视计数结果的。20世纪50年代前,我国云南贡山的傈僳族在选举村长时,村民用在候选人面前的碗或竹筒中投放豆子或玉米粒的方式进行投票,最后统计票数(与我们现在的投票方式在本质上是一样的);处理纠纷时,他们也采用同样的方式,每陈述一条理由就投放一粒玉米。历史上,战争中,人们用鹅卵石记录双方伤亡人数,并在战后根据清算的鹅卵石数量进行赔偿……这些与上一个例子的本质区别在于事后进行了清点,这样方可称为计数。

这些保持着古老生活方式的民族成为我们了解历史的重要依据。他们的计数手段看似落后,但有时出于信仰或乐趣会做出有意思的东西。印第安人就把石子堆出了“新高度”,如他们把21摆成一个“卍”字,如图1.6所示。4支箭、4根棍子、12颗石子、1个中心,总计21。

图1.6 美国印第安人石子计数中的“卍”字

我国的河图与洛书也记载了石子计数,河图记载的是用黑白两色石子分别摆出数字1~10,洛书则摆出1~9,如图1.7所示。

除以上单纯以石子的数量进行计数的做法之外,还有许多以石子的种类或尺寸来区分不同位数的高阶计数法。如云南纳西族用小石子代表个位,用稍大的石子代表十位,用更大的石子代表百位。

图1.7 河图(左)与洛书(右)

2.石子计算

与手指一样,石子不仅可以计数,还可以计算。

在北京的民族文化宫里,藏有两台藏族的石子计算器,它为木质的长方形盘,长约70cm,宽约36cm,厚约4cm。虽然叫作计算器,但它们其实只是具有收纳功能的摆盘。其中一台用石子表示个位,用木棍表示十位,用果核表示百位,用蚕豆表示千位,用瓦片表示万位。每摆满10个石子就换用1根木棍,每摆满10根木棍就换用1颗果核,依次类推。借助这些工具,人们可以进行简单的四则运算,以1024×4为例。

(1)1024表示为1颗蚕豆、两根木棍、4颗石子。

(2)乘以4相当于将每样物品均添加至原来数量的4倍,即4颗蚕豆、8根木棍、16颗石子。

(3)石子满10需进位,用1根木棍代替10颗石子。

(4)总共有4颗蚕豆、9根木棍、6颗石子,读作4096。

用现在的眼光来看,这种所谓的计算器其实只是充当了草稿纸的角色。

据此,人们可以对石子一类的物品赋予特殊的数学含义,石子摆放的相对位置也被利用了。久而久之,越来越多的巧妙算法应运而生。时间把人类的智慧汇集在一起,最终形成了后来经典的算筹和算盘。

1.1.3 结绳:最原始的备忘录

手指虽可“随身携带”,但不便存数——没人能一直保持一个手势;石子既可携带又可存数,但数量一多难免就重了,而且携带时会打乱石子间的拓扑关系,因此并不便携。

为弥补两者的不足,聪明的先人想到了在绳子上打结,如图1.8所示。

图1.8 结绳[8]


[8] 图片来自网络。

据文献记载及考古发现,人类最早从新石器时代开始使用结绳的方法。历经漫长的传承,结绳一直延续到20世纪,并遍布世界范围,中国、日本、埃及、墨西哥、秘鲁、波利尼西亚等地均曾盛行。

这种用结绳记录信息的古老做法在英文中也能找到蛛丝马迹,如绳子(cord)正是记录(record)的词根。

1.结绳计数

结绳可以计数。最简单的是用一个结表示1;用绳结的大小或位置来表示不同的数位;手巧的人们还能打出不同花式的结来表示不同的含义,或者选用多种材质,给绳子染色,拴上一些物件等来表示不同的含义。

传说波斯王派军远征时,命令他的卫队留下来保卫耶兹德河上的桥60天,但60在当时是个很大的数,如何掐准日子呢?聪明的波斯王在皮条上打了60个结,嘱咐士兵每天解开一个,解完所有的结后,士兵就可以回家了。

我国的佤族用高挂在墙上的结绳来记录债务,大结表示1,小结表示1/2。绳子上部的结表示借债金额,中部的结表示年利息,底部的结表示出借时间。

神秘的印加帝国则把结绳的计数能力发挥到了极致,将所有子民的年龄、食物供应、军队数目、金银财产等信息用结绳悉数记载,后来的西班牙殖民者感叹道:“他们甚至连一双鞋都不会漏记。”他们的结绳有着一个神圣的名字——奇普(quipu或khipu)。

图1.9和图1.10所示的奇普由一根横着的主绳和垂挂于其上的密密麻麻的绳子组成,我们不妨称后者为垂绳。主绳往往较粗,起悬挂垂绳的作用;垂绳则负责记录信息。根据需要,垂绳上还可另外系附属绳,附属绳上还可再系绳,类似于根上生根的形态。一些复杂的奇普甚至挂着10~12层附属绳,最大的奇普共由约2000根绳组成。

图1.9 奇普的组成[9]


[9] 图片来自KDP网站。

图1.10 奇普的结构[10]


[10] 图片来自Signs of the Inka Khipu

现存奇普的主绳长度为10~514cm,展示时将其绷直或摆成弧形,以便读数;存储或运输时则将其螺旋而盘,宛如一个拖把头。图1.11所示为藏于秘鲁拉尔科博物馆的以“弧形阅读模式”展示的奇普。

图1.11 以“弧形阅读模式”展示的奇普[11]


[11] 图片来自维基百科。

现存最大的奇普是一卷年历,如图1.12所示。它共有762根垂绳,其中730根垂绳(对应730天)通过一定的距离间隔分成了24股(对应24个月)。

图1.12 以弧形展示的年历奇普[12]


[12] 图片来自KDP网站。

奇普上的绳子通常由棉、羊毛、驼绒等材料制成,现存的奇普多数为棉质。棉花有白、棕、绿等多种颜色,但远远满足不了人们制作奇普的需要。印加人会给奇普上的绳子染上更多的颜色,有时还把两根不同颜色的绳子接成或搓成一根。这些颜色有着丰富的含义,如黑色代表死亡或灾祸,红色代表士兵,黄色代表黄金,白色代表白银或和平,绿色代表谷物等。图1.13所示为藏于秘鲁马丘比丘博物馆的彩色奇普。

图1.13 彩色奇普[13]


[13] 图片来自维基百科。

奇普上的绳结主要包括长结、单结和“8”字结3种,如图1.14所示。

用不同位置的单结表示10、100、1000、10000等(10n),离主绳最近的单结位数最高,最靠近垂绳尾端的单结表示10。例如,若尾端有3个挨在一起的单结,即表示30,因此用单结可以表示任意整十数。个位数则用长结表示,长结其实就是在单结的基础上多绕几圈,两圈就表示2,因此用长结可以表示2~9。1比较特殊,单独使用“8”字结来表示。这样,奇普就可以记录任意正整数了。

图1.15所示为奇普使用不同绳结进行计数的示例,奇普的主绳上至少会有一根记录统计值的垂绳。

图1.14 奇普的3种绳结[14]


[14] 图片来自《计算机技术发展史(一)》。

图1.15 不同绳结的使用示例[15]


[15] 图片来自网络。

2.结绳记事

结绳不但可以计数,还可以记事。

东汉末年,儒家学者、经学大师郑玄在《周易郑康成注》一书中有言:“事大,大结其绳;事小,小结其绳。”《贵州苗民概况》一书中提到:“苗族识字甚少,犹保持上古结绳记事之遗风,遇事暗中以草记之,简单事件日久尚能忆及。”

在文字还未诞生的时代,结绳扛起了记载信息的历史重任。

1)结绳通信

富含信息的结绳常被用作信件。我国普米族将结绳形象地称作“羊毛疙瘩”,即打着一个个结的羊毛绳子。战时,普米族用羊毛疙瘩联络、集合队伍,在一根主绳上系若干根细绳,每根细绳代表一个村,一个个“疙瘩”则表示时间、人物、事件等。此外,还在绳上附上鸡毛、辣椒、木炭、骨头,分别表示“迅速”“激烈”“炽热”“坚硬”等信息。

古代的印加帝国曾设名为chasqui的邮差,他们的工作是传递“公文”结绳。图1.16所示为一名带着结绳、吹着海螺的chasqui。

图1.16 chasqui[16]


[16] 图片来自维基百科。

2)结绳为约

常言道“口说无凭”,任何时代的人们都需要契据。因此,结绳还常被用作契约和凭证。

《九家易》曰:“古者无文字,其有约誓之事,事大大其绳,事小小其绳,结之多少,随物众寡,各执以相考,亦足以相治也。”

3)结绳以治

我们还能从古籍中找到结绳治国的痕迹。

“上古结绳而治,后世圣人易之以书契,百官以治,万民以察。”这句话出自《周易•系辞》。

“三皇结绳而天下泰,非惟象刑缉熙而已也。且太古知法,所以远狱。”这句话出自《晋书•纪瞻传》。

“若夫龙官之岁,凤纪之前,结绳而不违,不令而人畏。”这句话出自《隋书•刑法》。

“其吏治,无文字,结绳齿木为约。”这句话出自《新唐书•吐蕃传》。

可见,结绳在古代有着法律效力。

1.1.4 契刻:躺在刻痕里的文明

设想一下,如果你像鲁滨逊那样因故漂流到一座荒岛,身上除一把小刀之外,别无所有。在等待救援的日子里,除了用刀捕捉动物之外,你一定还会做一件事,那就是找一棵树,用刀在树干上刻“正”字以计算日期。

远古部落和近现代的一些地方的人们也是这么做的。他们通常选用木、竹、石、玉,以及野兽的牙、角和骨等材料,削成棍状、片状或圆形等形状,再用坚硬的石器或刀具刻出一道道痕迹来记录各种数目,也有直接在洞壁上刻画的做法。这种计数方式称为契刻计数。

图1.17所示为在阿尔卑斯山脉发现的契刻遗物,现藏于瑞士阿尔卑斯博物馆。

图1.17 契刻遗物[17]


[17] 图片来自维基百科。

人类社会的发展往往有着惊人的相似性。同其他计数方式一样,契刻也出现于世界的各个角落,如斯堪的纳维亚、澳大利亚、爱沙尼亚、楚瓦什等。在我国,很多少数民族有使用契刻的记载。

契刻的功能与结绳十分相似,同样可以用于计数和记事,并常用作书信和契约。

1.契刻计数

东汉经学家、训诂学家刘熙在《释名》一书中提到:“契,刻也,刻识其数也。”契刻最早便是用来计数的。

图1.18所示为1960年在刚果伊尚戈发现的一根狒狒腓骨。它所处的时代距今两万多年,骨头上密密麻麻的刻痕被部分学者视为原始的计数痕迹。

20世纪70年代,某原始社会墓葬中的49枚骨片在青海省乐都县出土,其中40枚保存完好,各枚尺寸基本一致,约呈1.8cm×0.3cm×0.1cm的长方体状,非常袖珍。其中35枚有1个刻口,3枚有3个刻口,两枚有5个刻口,骨片上的刻口如图1.19所示。这种不同刻口的灵活计数方法与我们平日使用的不同面额的钞票相似。

图1.18 狒狒腓骨[18]


[18] 图片来自维基百科。

图1.19 骨片上的刻口[19]


[19] 图片来自《中国数学简史》。

类似地,古代一些民族使用木片来记录借贷金额与还款期限,每还清部分贷款或每过一天,就在木片上削去相应数量的刻口,待削完所有的刻口,便还清了所有贷款或到了约定的日期,如图1.20所示。

随着文明的进步,契刻的方式也变得丰富起来。新中国成立初期,在云南省晋宁县出土了一块西汉的青铜片,上面刻画着各种人与动物的形象,为所记录的数据标注出了明确的含义。青铜片上的一横表示1,圆圈表示10;第二行记录着13个囚犯、70头牛、20匹马,牛的下面则是200只羊,如图1.21 所示。

图1.20 计数用的木片[20]


[20] 图片来自《我国民族地区原始统计计量记录行为散论》。

图1.21 晋宁县出土的西汉青铜片[21]


[21] 图片来自《中国数学简史》。

在楚瓦什发现的木刻有着相似的痕迹,如用竖线表示1,用半根竖线表示1/2,用斜线表示5,用叉表示10,如图1.22所示。

图1.22 楚瓦什木刻[22]


[22] 图片来自《计算机发展史》。

2.契刻记事

清代诗人陆次云编写的《峒溪纤志》中有言:“木契者,刻木为符以志事也。”灵活的契刻就是文字的前身,记事于它而言简直小菜一碟。

1)契刻通信

许多民族有过契刻通信的做法。明代文学家田汝成在《炎徼纪闻》一书中写道:“白罗罗(彝族一支)不通文字,结绳刻木为信。”而比起结绳,契刻通常载于片状物上,更有书信的样子。

1949年前,傈僳族靠口信、树叶信和木片信进行通信。木片信便是刻有少量信息的木片,能够官民两用,人工传递。

民间的木片信多用作召集令。人们一般在木片上刻横沟。横沟越宽,事情就越大。一般刻双数,表示事情不太紧急;极少刻单数,表示事情十万火急。有时他们还会在木片上拴上辣椒,以强调事态严重。

官方的木片信用途多样,有用于向寨子下达通知的,有用于安排相关行政长官负责派捐、派款、派粮的,也有用于通缉罪犯的,等等。

2)契刻为约

契约契约,契刻之约。

契刻十分适合用作收据和欠条。在木片上刻好金额,而后劈成两半,双方各执一半,到算账时将两半拼合,且刻痕必须相吻合,这样连签字画押都省了,既方便又实用。

你有没有联想到什么?你或许会想到古代调兵遣将的虎符。国君、统帅各执一半虎符,两半拼合,只有虎身上的铭纹相吻合方可调动军队。图1.23所示为西安秦二世陵的一尊虎符雕塑。

图1.23 虎符雕塑[23]


[23] 摄影:逸之。

3)契刻筹码

当契刻用于交易、用作债券时,便具备了货币的属性,这类契刻也称为筹或筹码。

19世纪,瑞士农民引山泉水灌溉田地,为管理用水,当地政府使用了“用水筹码”,上面刻着用水时间;西伯利亚的粮库用过“面包筹码”;哥萨克人将筹码作为各种报销凭证;波兰的一些偏远地区用木刻作为钱票……如此种种,不胜枚举。

3.契刻计算

具有计算能力的契刻也往往以筹为名,如中国的算筹、西方的纳皮尔筹。

爱沙尼亚有一种特殊的计算筹码,人们将木棍做成了插销的形式,可以来回移动,能够进行5个一组的加法运算,类似于后来的计算尺。而我国充满智慧结晶的算筹最终摒弃了刻痕,靠木棍的组合摆放实现了各种复杂计算。

[2] 法语中,quatre表示4,dix表示10,vingt表示20。