01改变世界:计算机发展史趣谈

978-7-115-55284-6
作者: 逸之
译者:
编辑: 张涛
分类: IT人文

图书目录:

详情

本书从数字和进制的诞生开始,以一系列具有代表性的计算工具和计算思维为例,讲述人类如何一步步制作出强大的现代计算机。本书依次介绍了计算机发展中的手动时期、机械时期、机电时期、电子时期,并描述了充满可能的未来时代。 本书语言深入浅出,既可作为计算机业余爱好者的入门科普读物,也适合作为高校相关专业学生和从业者了解计算机发展历程的参考读物。

图书摘要

版权信息

书名:01改变世界:计算机发展史趣谈

ISBN:978-7-115-55284-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    逸 之

责任编辑 张 涛

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e55284”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

内容提要

本书从数字和进制的诞生开始,以一系列具有代表性的计算工具和计算思维为例,讲述人类如何一步步制作出强大的现代计算机。本书依次介绍了计算机发展中的手动时期、机械时期、机电时期、电子时期,并描述了充满可能的未来时代。

本书语言深入浅出,既可作为计算机业余爱好者的入门科普读物,也适合作为高校相关专业学生和从业者了解计算机发展历程的参考读物。

前  言

几年前的一个晚上,我和我的一位研究生室友待在寝室,各自使用计算机做课题设计。他敲击着键盘,突然提出一个问题:“计算机只能识别0和1,可我每敲一个键,屏幕上就显示一个文字,它是怎么靠0和1做到这一点的呢?”我对他的问题很感兴趣,马上和他讨论有关逻辑电路的问题。不过话题没有持续多久,因为我们很快就说完了脑中的计算机知识,且对自己既粗浅又不系统的解析很不满意。后来我继续问其他同学,其他同学的回答也粗浅、零散。如果让一个外行来听,他一定会抱怨:“这等于什么也没说嘛!”

想来令人诧异,这样一个简单的问题却难倒了一群计算机专业的研究生。于是,我到图书馆查阅相关的图书,到网上搜集相关的资料,发现它们要么以极强的专业性“拒人”于千里之外,要么以极浅的“说辞”敷衍了事。网上偶尔有些优质的博客文章,内容却十分零散,不成体系。因此我决定靠自己把深奥的计算机原理用深入浅出的语言诠释出来。

可要讲的是计算机原理,就必须先说它的历史,因为弄明白一个事物最好的方式就是了解它的发展史。如果撇开历史,研究往往找不准事物的起源,这样就算我们理解了二进制和集成电路,也依然不知道计算机为什么会如此设计。所以了解计算机的历史,才能认识其本源,并真正了解它。

回顾计算机的历史,我们会发现,它的发明从来都不是某个人或某一类人的成果,因为它涉及许多学科,是人类需求增长和思维进化的产物。这里要提到两个耳熟能详的名字——艾伦·图灵和冯·诺依曼。图灵是名哲学博士,诺依曼是位数学家,可是他们的学术成就却为计算机的发展提供了巨大助力,因此他们被誉为“计算机之父”,其实还有许多了不起的计算机先驱。他们甚至比艾伦·图灵和冯·诺依曼更早开启了计算机的历史。

从最原始的结绳与契刻到古代主流的算筹与算盘,再到后来逐渐自动化的机械式与机电式计算机以及电子计算机。可见,早在电子计算机出现之前,人类就经历了计算工具浩浩荡荡的变迁史。每一种计算工具的发明、计算思维的产生、计算方法的运用,都是人类思想质的飞跃;每个节点看似“奇迹”,却又是历史的必然。

让我们一起去追溯计算机的历史吧!这将是一段有趣且收获满满的旅程。我们在一步步向现代计算机靠近的同时,也会逐渐深刻地体会到:原来计算机每一次进步的背后都汇集了那么多先驱的智慧和努力。

内容组织

本书不仅讲述了计算机发展历程中有趣的历史故事,还在故事中介绍历史上各种计算工具的结构与原理,使读者了解它们的发明者是如何构想出如此精妙绝伦的设计的,而这些设计又是如何逐渐演变成强大的现代计算机的。

在结构上,本书参考了上海科学技术出版社1984年出版的《计算机发展史》一书。前4章分别介绍了计算机发展史中的手动时期、机械时期、机电时期和电子时期,第5章展望未来。

本书读者对象

作为一本深入浅出的科普书,本书没有生涩的专业描述,一些关键概念会通过通俗的文字进行讲解。因此,读者不需要具备专业的计算机知识,只需要带着一颗好奇心进行阅读即可。不过,书中会用到一些简单的中学数理化知识,对这些知识已经淡忘的读者可能需要稍稍回忆一下。

不论你是计算机爱好者,还是准备从事计算机行业的零基础人士,都能从本书中获得想要的知识。不过,科普代替不了专业学习,只是以一种轻松的方式“引荐”一门学科。如果你读完本书之后感到意犹未尽,有了更多想要探索的知识点,那么科普的目的就达到了,本书的价值就在于此。

致谢

本书原是作者兴趣使然在网上创作的内容,未曾想有幸能获得出版机会,是简书为怀揣梦想的写作者提供了这样的可能,是行距文化在网络的汪洋中发现了作者这叶不起眼的扁舟。尤其是行距文化的毛晓秋老师提供了许多宝贵意见,才让这些原本“自由散漫”的文字成为正式的出版物。在此深表感谢!

同时,感谢设计师S7牺牲大量业余时间为本书制作诸多精美插图[1];感谢在美留学的好友Yunli Shao帮忙搜集大量珍贵的参考资料;感谢所有时常被作者问得一头雾水的亲朋好友,他们在数学、电学、光学、声学、化学等领域为本书的内容提供了专业指导。

[1] 具体包括图1.28、图1.29、图1.40、图1.41、图1.43、图2.11、图2.12、图2.13、图2.14、图2.17、图2.18、图2.19、图2.20、图2.24、图2.25、图2.32、图2.33、图2.39、图2.51、图2.52、图2.53、图2.55、图2.56、图2.57、图2.58、图2.59、图2.67、图2.68、图2.69、图2.70、图3.26。

创作的过程是漫长的,在此要特别感谢家人的理解和支持,尤其是作者的妻子,她比作者更为此事感到自豪,她的认同与鼓励是作者完成创作最大的保障。

最后,感谢出版社编辑的辛勤付出,他们的专业与严谨令人印象深刻,能有此次合作是作者的荣幸。

由于作者水平有限,书中难免有所纰漏,恳请广大读者批评指正。作者的邮箱是458683767@qq.com,本书编辑的联系邮箱为zhangtao@ptpress.com.cn,欢迎来信交流。

注:本书中部分术语的英文译名引自维基百科。

您还可以扫码右侧二维码, 关注【异步社区】微信公众号,回复“e55284”直接获取,同时可以获得异步社区15天VIP会员卡,近千本电子书免费畅读。

第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] 法语中,quatre表示4,dix表示10,vingt表示20。

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个一组的加法运算,类似于后来的计算尺。而我国充满智慧结晶的算筹最终摒弃了刻痕,靠木棍的组合摆放实现了各种复杂计算。

1.2 大道至简的中国古算

1.2.1 算筹:中国古代的高超算术

算筹是何物?你也许不曾耳闻,但一定知道“运筹帷幄”这个成语,它所言之“筹”正是算筹。

算筹是石子计数和契刻计数的发展成果,最早出现于商周时期,在算盘发明之前,堪称世界上最先进的计算工具。先进的计算工具竟是一根根小小的棍子,人们通过多样的摆放棍子的方式进行计算。小棍的材料来源多样,有竹子、木头、象牙、兽骨、金属、玉器等,凡是能削成棍状的东西皆可为算筹。当然,我们现今所能看到的多是耐腐蚀材质的算筹。小棍通常是光滑无痕的,但也有部分算筹上刻有便于计算的辅助信息。

像现代人随身携带手机一样,懂数学的古人通常会随身佩戴由丝布制成的算袋,里头放着一把算筹。到了唐朝,更有相关法律规定文武百官必须佩戴算袋。可见在彼时,算筹不单是一种计算工具,更是地位和身份的象征。

1.算筹示数

史上第一本记述算筹的专著是约1500年前的《孙子算经》,其中详细记载了用算筹表示数字的方法。算筹中用红棍表示正数,黑棍表示负数,有纵横两种“布棍”模式。纵式用竖棍表示1,横棍表示5;横式反之,如表1.1和表1.2所示。0比较特殊,用留空表示。

表1.1 用算筹表示1~9

“布棍”模式

1

2

3

4

5

6

7

8

9

纵式

横式

表1.2 用算筹表示−9~−1

“布棍”模式

-1

-2

-3

-4

-5

-6

-7

-8

-9

纵式

横式

不过以红黑两色来区分正负毕竟比较麻烦。在只有一种颜色的情况下(尤其是在书写时),人们可以通过一根斜放的小棍来表示负数,如表1.3所示。

表1.3 用单色算筹表示负数(以纵式为例)

“布棍”模式

-1

-2

-3

-4

-5

-6

-7

-8

-9

纵式

对于不同的数位,纵式、横式是相间使用的,《孙子算经》如是描述:“凡算之法,先识其位。一纵十横,百立千僵,千十相望,万百相当。”通俗地讲,个位上的数字用纵式,十位上的数字用横式,百位再用纵式,千位再用横式,依次类推。这样主要是考虑到0的存在,如数字1024的算筹表示如表1.4所示。表中凸显了0的空位,但在实际使用中,尤其在书写(誊抄算法)时,空位很容易被忽略。有了纵横交错的用法,即使没有空位,同一摆法的2和1挨在一起,人们也不会把1024当成124。

表1.4 1024的算筹表示

1

0

2

4

当然,这种用法应对不了0连续出现的情况,如100024就有被当成1024的可能。人们会在“布筹”的计算板上画好棋盘一样的表格以便留空,或者用围棋子来表示0,以避免这个问题。在书写方面,则引入了符号“〇”。纵横交错的形式作为经典范式被一直沿用了下来。

2.筹算

运用算筹的算法叫筹算。算筹本身仅提供了一种用棍子表示数字的“书写”形式,筹算才是其“灵魂”所在。

筹算的功能强大,除能进行最基本的加减乘除运算之外,它还能进行乘方和开方运算,甚至能解线性方程(组)、求最大公约数和最小公倍数、解同余式组、造高阶查分表等。筹算所用到的负数、小数、分数等较抽象的数学概念比西方早了上百年甚至好几百年。

南北朝的数学家祖冲之使用筹算将圆周率精确到了小数点后7位(3.1415926~ 3.1415927)。

除圆周率之外,我国古代著名的秦九韶算法、剩余定理等了不起的数学成就也是靠筹算得到的。

在进行筹算时,先将算筹摆成待计算的数字,再一边念口诀一边调整算筹的布局,不断形成新的数字,最终得到计算结果。以64×16为例,计算过程如下。

(1)上位布64,下位布16,且下位的个位与上位的最高位对齐,如图1.24所示。

图1.24 第(1)步

(2)上位中的6乘下位中的1,得中间结果600,并置于中位;上位中的6乘下位中的6,得中间结果360,累加至中位,中位为960,如图1.25所示。

图1.25 第(2)步

(3)移去上位的6,下位中的数整体右移一位,如图1.26所示。

图1.26 第(3)步

(4)上位中的4乘下位中的1,得中间结果40,累加至中位,中位为1000;上位中的4乘下位中的6,得中间结果24,累加至中位,此时中位为最终结果1024,如图1.27所示。

对于初学者,筹算的过程有些令人眼花缭乱,但熟练的筹算者可以达到很快的运筹速度。沈括在《梦溪笔谈》中有这样的描述:“运筹如飞,人眼不能逐。”

图1.27 第(4)步

3.算筹的缺陷

筹算虽然强大,但算筹毕竟是件简单的工具,终有捉襟见肘的时候。同现今计算机软件的发展往往会对硬件提出更高的要求一样,人们为算筹定制了丰富多样的算法和口诀,而算筹渐渐无法适应复杂的算法(如重因法、身外加减法、求一法等)。筹算时所用到的算筹数量庞大,表示单个数字就需要1~5根算筹,数字越多越繁乱。三国时期魏国人管辂在其《管氏地理指蒙》一书中甚至以筹喻乱:“形如投算,忧愁紊乱。”

最早的算筹长约14cm,数字“6”的占用面积就达近200cm2,进行复杂运算时需要一块大的场地。宋元时期,算筹改良至1~3寸(约3~10cm),但它依然难以应对计算量大的问题。宋代马永卿在《懒真子》一书中有过对算筹占用面积的描写:“卜者出算子约百余,布地上,几长丈余。”

辉煌一时的算筹逐渐被遗忘在古籍的字里行间,另一个功能强大的算具带着它的历史使命隆重登场了。

1.2.2 算盘:中国古算的活化石

在古代的所有计算工具中,中国的算盘是为算术提供了简单计算方法的唯一工具。西方(美国和欧洲)的观察者在目睹人们利用算盘完成最为复杂的计算时,往往会大为惊叹。

—法国数学历史学家乔治伊弗拉(Georges Ifrah

在诸多古老的计算工具中,算盘是最为人们所熟知的一种工具。在中国,年轻人即使没有摸过算盘,也一定见过它的模样。

算盘虽小,但作用奇大。古代的掌柜靠算盘结算账目,近代的科学家靠算盘计算研制原子弹的数据。今天的许多学校(甚至国外的学校)用算盘或类似于算盘的教具来启发儿童的数学思维。

同中国红、中国结、武术、诗词、瓷器一样,算盘早已成为典型的中国文化符号。

2013年12月4日,珠算被正式列入联合国教科文组织“人类非物质文化遗产代表作名录”。

下面对中国算盘的样式、用法、起源以及其他国家的算盘和算盘的发展进行介绍。

1.中国算盘的样式

实用型的算盘多为竹木材质(现在也有塑料材质),长方形的粗木框中从左到右串着一串串活动的算珠,一串称为一档,被中间的横梁隔为上下两部分,上方的算珠称为上珠,下方的则称为下珠,如图1.28所示。

图1.28 算盘样式

经典的算珠分布为“上二下五”(小部分现代算盘也有“上一下五”或“上一下四”的分布方式),一颗上珠代表5,一颗下珠代表1。按理说,每一个数位从0至9只需“上一下四”,为什么会上下都多一颗算珠呢?原因是我国古代采用的是十六进制的重量计法。常言道“半斤八两”,而1斤正是16两,“上二下五”正好可以用来表示0~15。不仅如此,十进制的一些算法还会临时用到这两颗“多余的”算珠。

为什么会用单独分出的上珠来表示5,而不是直接在每一档串9颗或15颗算珠呢?这种形式同算筹如出一辙(纵式中以横棍表示5,横式中以竖棍表示5),本质上是因为人一只手有5根手指,与人类广泛使用十进制是因为双手共有10根手指是一个道理。

2.中国算盘的用法

算盘的用法十分简单,将相应数目的算珠推向横梁以表示加上相应数字,推离横梁则表示减去相应数字。图1.29所示的算盘示数为1234567890。

虽然使用算盘的规则比较简单,但要做到熟练使用以及掌握各种复杂的口诀和算法绝非一日之功。算盘的算法——珠算是从筹算继承而来的。从最早的《数术记遗》到经典的《算法统宗》,再到如今《中国珠算大全》《世界珠算通典》等集大成的专著,所记载的口诀数不胜数。

图1.29 算盘示数示例

以最简单的“三下五除二”为例,其原本是珠算加法中的一条基本规律。如果下档中靠着横梁的算珠不少于两颗,为了给它加上3,就需要拨下一颗表示5的上珠(“下五”),再去掉两颗表示1的下珠(“除二”),即把+3拆分成+5和-2两步执行。图1.30所示则以3+3为例展示了这一过程。

图1.30 “三下五除二”的计算过程

3.中国算盘的起源

算盘并非一开始就是“木棍串木珠”的形式,最初的算盘是将石子等物摆在画有辅助线或挖有沟槽的盘上,其本质是石子计数进化的产物。但中国的算盘与算筹有着一脉相承的形式与算法,更应将其视作算筹进化的产物,而算筹本身也是石子计数的产物。算具的发展环环相扣,每代算具之间其实并没有明确的界限,如图1.31所示。

图1.31 从石子到算盘

《数术记遗》一书介绍了14种计算方法——“积算”“太一”“两仪”“三才”“五行”“八卦”“九宫”“运筹”“了知”“成数”“把头”“龟算”“珠算”“计数”。除“计数”属于心算之外,其余13种均有相应的计算工具。其中,“太一”“两仪”“三才”“九宫”“珠算”等算法的工具与算盘十分形似,可以视为算盘的前身——在算板上刻画出棋盘格一样的纵横线(或挖出沟槽),将算珠置于板上,按特定的规则进行位移,像下棋一样完成计算。算珠在板上“游走”,人们形象地称这些工具为“游珠算板”。

“太一”以算珠的位置表示数字,“两仪”“三才”“九宫”以算珠的颜色和位置表示数字,“珠算”则以算珠的颜色和数量表示数字,这些工具生动地展示了算盘的演进。图1.32所示为《数术记遗》中“珠算”工具的复现,黑珠表示5,白珠表示1,与现今的算盘已经十分相似。

图1.32 根据《数术记遗》复现的“珠算”游珠算板[24]

[24] 图片来自《世界珠算通典》。

游珠算板显然不够便携,久而久之便产生了珠板一体的算盘。

4.其他国家的算盘

除中国之外,各种形式的算盘还曾在其他国家或地区出现,如印加、古埃及、古希腊、古罗马、印度、日本、韩国、俄罗斯等,只是它们都没有中国算盘这般“长寿”。欣赏这些充满异国风情的算盘,如同见证了算盘演化的历史。

1)古希腊计数板(Greek abacus)

古希腊计数板约出现于公元前5世纪,多为木质或鹅卵石材质,在板上刻画辅助线用于标记数位等信息,用鹅卵石一类的算子置于板上进行计算。图1.33所示为1846年在希腊发现的计数板临摹图,其实物是一块白色的大理石板,长150cm,宽75cm,厚4.5~7.5cm。

图1.33 古希腊计数板临摹图

板上有3串辅助计算的符号,左侧与底部的符号相同,右侧的一串则多了两个符号。每个符号代表着不同的数字,具体含义如表1.5所示。

表1.5 古希腊计数板符号含义

左侧与

底部符号

右侧符号

含义

6000

5000

1000

500

100

50

10

5

1

1

1/2

1/4

1/8

2)古罗马沟算盘(Roman abacus)

古罗马沟算盘约产生于公元元年,算子在算盘的沟槽中游走,“上一下五”的形式与中国算盘高度一致,因此学术界有二者是否曾相互借鉴的争议。图1.34所示为德国的一所博物馆于1977年制作的古罗马沟算盘复制品。

图1.34 古罗马沟算盘复制品[25]

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

3)印加算盘(Inca abacus)

印加是一个古老而神秘的帝国,他们的算盘(见图1.35)像缩小的梯田,样子十分古怪,其用法至今不明。但在2001年有科学家通过研究提出了一种可能的用法——基于斐波那契数列使用。如果真是这样,那印加人的智慧实在令人叹服。

图1.35 印加算盘[26]

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

4)日本算盘(Japanese abacus)

日本算盘本质上就是中国算盘,若不特意说明,根本无法区分。图1.36所示为常见的日本算盘。

图1.36 日本算盘[27]

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

5)俄罗斯算盘(Russian abacus)

俄罗斯算盘也经过了数百年的发展变迁,因为在欧洲广泛流传,所以又称为欧洲算盘。俄罗斯算盘的最终模样与中国算盘十分相似,只不过每一档上有10颗珠子,没有横梁,使用时是竖放的,从右往左拨动珠子。串珠的棍子是弯的,其中间稍稍隆起,以保证珠子能静止在左右两侧,如图1.37所示。

图1.37 俄罗斯算盘[28]

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

该算盘上有两种颜色的珠子,这是为了便于读数。其中一档上只有4颗珠子,这不是残缺的,是为了方便计算特意设计的。

5.算盘的发展

相比后来出现的计算尺、机械计算器等更先进的工具,算盘怎么看都是“落后”的。相比在16世纪就逐渐没落的西方算盘,中国算盘确实“长寿”得有些让人不可思议。

究其原因,一方面是因为中国珠算有着丰富的算法口诀,熟练的算盘手能拨出“无影指”的感觉。在近现代的多次节目表演中,算盘的计算速度往往超过了机械计算器甚至电子计算器。在中国古代,一把算盘足以解决人们生活中所有的日常计算。

另一方面,西方的一些国家和地区在很早就引入了灵活的笔算。西方的笔是罗马人在6世纪发明的羽毛笔,西方的纸是羊皮纸,适合硬笔书写。而中国的笔是适合书法绘画的毛笔,纸是渗透性好的宣纸,笔算自然举步维艰。

到了21世纪,整个世界全面步入电子时代,算盘才开始逐渐从实用领域淡出。

1.3 爱“偷懒”的西方人

1.3.1 纳皮尔筹[29]:西方人是如何“运筹帷幄”的

[29] 纳皮尔筹或称纳皮尔算筹。

在计算史的中西竞赛中,中方率先打出算筹和算盘两张漂亮的“王牌”,在几千年文明史中取得了举世瞩目的数学成就,而西方在漫漫历史进程中苦苦煎熬,终于在17世纪迎来了曙光。

一位苏格兰贵族,用他生命的最后3年为世界献上了改变历史的两件礼物,他叫约翰•纳皮尔(John Napier)[30]

[30] 约翰•纳皮尔(John Napier),1550—1617,苏格兰数学家、物理学家、天文学家。

1.纳皮尔与对数

纳皮尔生于苏格兰上流社会。他的父亲既是地主,又是官员,还掌管了苏格兰造币厂;他的母亲也出身官宦世家。后来,他们家族还设立了属于自己的爵位——纳皮尔勋爵,是名副其实的贵族。

纳皮尔自小接受家庭私教,没上过小学却聪慧过人。他13岁就被送去圣安德鲁斯大学,大学没上多久又辍学跑到欧洲大陆进修,21岁学成归来,24岁买了一座城堡,在这座城堡里一住就是几十年,直到父亲去世后,他才搬到了父亲的城堡里去,一直住到与世长辞。

1614年,纳皮尔出版了《奇妙的对数表的描述》一书,该书成为人类发明对数的标志。后人把书中提到的一种特殊对数称为纳皮尔对数,即

有了对数,我们就能将乘除运算化简为加减运算,从而大大减少计算量。

包括纳皮尔在内的数学家们便开始着手计算常用数字的对数值,将它们列成表格并印刷成册,像字典一样。

图1.38所示为常用对数表。常用对数是指以10为底的对数。如何使用它呢?取两个乘积能落在1000~1500的数字进行举例,如

图1.38 常用对数表[31]

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

根据对数换算公式有

我们不妨用计算器分别算一下16和64的常用对数值,即

400年前,这两个数字可在1~1000的常用对数表上查到。求和得

查表可知,3.01030对应的是1024。

以上简单模拟了那个年代对数表的查表过程。在16×64的小计算量级下,你也许会觉得多此一举,但当数字的位数一多,对数表就可以大大减少复杂的计算了。

1617年,纳皮尔离世。也正是在这一年,他的另一本专著Rabdology在爱丁堡出版。书名Rabdology由纳皮尔根据希腊语中表示“小棒”的单词rod和表示“计算”的单词logos组合而成,因而此书常译作《小棒计算》。这里,“小棒”就是纳皮尔筹,是对数之外纳皮尔留给世人的第二件珍贵遗产。

2.纳皮尔筹

纳皮尔筹是一种算筹,也常译作纳皮尔骨筹或纳皮尔棒。其材质多样,包括兽骨、木、金属、硬纸板等。图1.39所示为一套1650年左右的象牙材质纳皮尔筹。

图1.39 象牙纳皮尔筹[32]

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

和对数一样,纳皮尔筹的发明也是为了将乘除等复杂运算降解为加减等简单运算。

如图1.40所示,成套的纳皮尔筹配有一块算板,用于盛放算筹。算板的左边框中从上至下标注着1~9,与每根算筹上的9个方格一一对应;算筹有10种,筹上的方格里分别填着0~9与左边框数字的乘积。简单地说,这是一张九九乘法表。

图1.40 纳皮尔筹中的算板和算筹

对于每根算筹,除顶部的一个方格之外,下面的8个方格上都画有对角线,用于将十位数与个位数分开,这么做是为了使用一种叫作格子乘法(或可更形象地称之为百叶窗乘法)的算法。简单的例子如下。

取用1、2、8共3根筹(被乘数)置于板上,而后把目光投向第8行(乘数),如图1.41所示。

以斜线为界,将每一位的乘积相加,超过9时则通过心算进行进位,如图1.42所示。

图1.41 纳皮尔筹使用示例

图1.42 格子乘法示例

除法的降解步骤稍微复杂一些。开平方运算则更加繁复,还需要引入一种专用的新筹——平方根筹,如图1.43最右侧所示。

图1.43 附带平方根筹的纳皮尔筹

3.纳皮尔筹的发展

纳皮尔筹风靡一时,并出现了许多改进和变形,如把筹做成可以旋转的圆柱。图1.44所示为一套1680年左右的圆柱形纳皮尔筹。

图1.44 圆柱形纳皮尔筹[33]

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

此类圆柱形纳皮尔筹给后来机械计算器的发明提供了灵感。以德国的威廉•契克卡德、意大利的蒂托•布拉蒂尼、英国的塞缪尔•莫兰、法国的勒内•格里耶为代表的一众机械计算先驱都以纳皮尔筹为基础构建了机械计算器。图1.45所示为勒内•格里耶基于圆柱形纳皮尔筹构建的机械计算器。

图1.45 勒内•格里耶构建的机械计算器[34]

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

到了19世纪,为了便于读数,有人干脆把纳皮尔筹做成了斜的,如图1.46所示。

图1.46 斜形纳皮尔筹[35]

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

17世纪,纳皮尔筹传入中国后,出现了各式各样的变形。例如,清代数学家梅文鼎把它改成了用半圆来代替对角线的横筹,如图1.47所示。两筹并列之时,相同位数上的数字便处在同一个圆内。

图1.47 梅文鼎版纳皮尔筹的第五、六筹

1.3.2 计算尺:“丈量”宇宙的直尺

纳皮尔筹启发了后来的机械计算,而纳皮尔发明的对数则造就了另一件在手动时期风靡世界的计算工具——计算尺(slide rule)。

1.计算尺的诞生

1)对数尺

虽然对数实现了“计算降维”,但密密麻麻的对数表查阅起来总让人眼花,厚厚的书册很不便于携带。英国数学家埃德蒙•冈特(Edmund Gunter)认为,既然对数可以把两个数的求积问题转换为两个对数的求和,那么如果把一个对数视为一段可以用直尺丈量的长度,对数之和不就可以利用直尺直接量出来了吗?

1620年,冈特将对数表刻到一把直尺上,借助圆规一类的辅助工具实现了这种想法,这把尺叫作对数尺。以计算16×64为例,先将圆规两脚分别指向lg1和lg16的位置,此时圆规脚的跨度代表着lg16的值;而后保持圆规的张角不变,平移使其左脚指向乘数64的位置,此时右脚所指的值便是计算结果,如图1.48所示。

图1.48 对数尺用法示例[36]

[36] 图中只标出了对数尺的主要刻度,省略了其间的诸多子刻度。

2)计算尺雏形

1622年,另一位英国数学家威廉•奥特雷德觉得圆规有点累赘,不如直接将两把对数尺并排放置,通过相对滑动就可以实现尺上示数的相加,由此形成了计算尺的雏形。

以计算2×3为例,将上侧对数尺的起始刻度(刻度1)与下侧对数尺的刻度2(被乘数)对齐,读取上尺刻度3(乘数)所对应的下尺刻度(刻度6),即为最终结果,如图1.49所示。

图1.49 奥特雷德计算尺用法示例[37]

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

对数尺上的刻度范围是有限的,例如,上图中两尺的取值范围均为1~10,如果结果大于10,如2×6,该如何计算呢?针对这种情况,需要先把上侧对数尺左移,使其终止刻度(刻度10)与下侧对数尺的刻度2(被乘数)重合,相当于除以了10,即将2×6缩小至2×0.6。而后读取上尺刻度6(乘数)所对应的下尺刻度(刻度1.2),再乘以10,即为最终结果12,如图1.50所示。

图1.50 结果超出量程的用法示例[38]

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

有趣的是,计算尺能将乘除简化为加减,本身却无法进行加减运算。对此,一种常用的解决方案居然是根据如下公式把加减“复杂化”为乘除。

除对数值之外,人们陆续在计算尺上印上了三角函数值、幂、平方根等其他常用运算的值。尺的组成则从2把改进成了3把:中间是一把可滑动的尺,称为滑尺;上下是两把固定的尺,称为定尺。滑尺和定尺上均标有不同含义的刻度线,两者的刻度相互吻合代表了不同运算(乘除运算、求根、求幂、三角函数等)的结果。

3)计算尺改良

计算尺为科学家的工作提供了便利,却在诞生之后足足沉寂了两个多世纪。直到1850年,英国数学家摩根还在为计算尺的冷遇感到不解和惋惜:“只需区区几先令,多数人就能把这种比他们自己的头脑强数百倍的计算工具纳入囊中(可他们就是不愿意)。”

就在这一年,一位年仅19岁的法国炮兵中尉阿梅代•马内姆给计算尺加上了一个透明游标,如图1.51所示。有了中间的细线,读数变得更便捷也更准确了。这一巧妙的设计被沿用了下来,固定了计算尺的最终模样。此后,计算尺在欧洲迅速走红,而马内姆也被人们称为现代计算尺之父。

图1.51 计算尺上的游标[39]

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

2.计算尺的发展

从马内姆所在时代开始,科学家与工程师们几乎人手一把计算尺,一些讲究品位的工程师甚至还用名木或象牙等昂贵材料制成的计算尺。

邓稼先、郭永怀、于敏研制“两弹一星”,离不开计算尺;黄旭华研制核潜艇,离不开计算尺;阿波罗登月的飞船上备着计算尺以备不时之需,如图1.52所示;冷战期间,美国的冯•布劳恩和苏联的科罗廖夫两位“学科带头人”,用的竟是同一家公司的计算尺……

20世纪40年代,李政道师从大物理学家费米,那时费米只带了李政道一个研究生,每周他们都会花半天时间讨论学术问题。有一次,费米问起太阳中心的温度,于是有了下面这段经典的对话。

李政道:“用热力学温度表示,大概107K[40]。”

[40] 按热力学温标度量的温度,单位符号为K。

费米:“你怎么知道的?”

李政道:“从文献上看来的。”

费米:“你自己有没有演算过?”

李政道:“没有,因为这个计算比较复杂,文献讲他们算出是107K,我觉得很合理。”

费米:“不行,你一定要通过自己的思考和估计,才能接受别人的结论。我们要想一个办法,不如做一把大的计算尺。”

图1.52 随阿波罗登月的Pickett N600-ES型计算尺[41]

[41] 图片来自美国数字公共图书馆。

于是,尽管研究方向与太阳毫不搭边,两位求真务实的科学家还是花了两天时间做了一把当时最大的计算尺,“抽拉”1小时后,验算出太阳中心的温度的确是107K左右。一把小小的尺子,却有着“丈量”宇宙的能耐。

除标准尺之外,各领域还出现过多种多样的专用尺。化学家的计算尺上标有相对分子质量,船舶工程师的计算尺上有水压公式,粒子物理学家的计算尺上则有放射性衰变常数……

图1.53所示为一套专门用来测量胶卷曝光时间的计算尺,上面有一张用于估算时间的硬纸卡片。

图1.54所示为瑞士军队在1914—1940年使用的暗号计算尺,通过它,人们可以很方便地对机密信息进行解密和加密。

图1.53 测量胶卷曝光时间的计算尺[42]

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

图1.54 暗号计算尺[43]

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

计算尺的形状十分多样,除直尺形之外,圆盘状、圆柱形的计算尺比比皆是。事实上,奥特雷德在发明计算尺的短短几年之后又发明了圆形计算尺。

图1.55所示为日本Concise公司生产的圆形计算尺,具有平方、开方等计算功能。

图1.56所示为一枚刻有计算尺的戒指。

图1.57所示为一款俄罗斯生产的表盘形计算尺,状如怀表。

图1.55 圆形计算尺[44]

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

图1.56 刻有计算尺的戒指[45]

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

图1.57 表盘形计算尺[46]

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

图1.58所示为百年灵“航空计时”手表,其表盘上刻有一圈计算尺。

图1.59所示为英国工程师奥蒂斯•金发明的圆柱形计算尺,较同尺寸的直尺形计算尺有着更大的取值范围和更高的计算精度。

计算尺的便捷与廉价,使它和古老的算盘一起,成为电子计算时代到来之前人们最常用的计算工具,连后来已经算得上半自动的机械计算器也没能取代它们的位置。直到20世纪60年代,随着便携式电子计算器的兴起,计算尺才逐步退出历史舞台。有趣的是,设计电子计算器所需的很多运算都是靠计算尺完成的——计算尺“亲手”把自己送进了博物馆。

图1.58 百年灵“航空计时”手表[47]

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

图1.59 圆柱形计算尺[48]

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

1.4 小结

本章介绍了手动时期一系列典型的计算工具,其发展历程与人类文明演进历程相似——从利用自然到改造自然,再到发明创造。

手指是最易获取的“工具”,石子一类次之;从契刻开始,人们有了改造自然物的想法;结绳和算筹则已是批量化、统一化制造的产物;算盘、纳皮尔筹和对数尺则是目的性更强的发明创造。这不仅是人类创造力不断提升的过程,还是人类对工具便携性和易用性不断追求的过程。

这些工具在本质上是一脉相承的,其发展从未跳跃,始终是一个循序渐进的过程。它们出现的顺序很难明确,往往并存于某段时期内。手指启发人类提出了进制的概念,石子和木棍是契刻和算筹的“鼻祖”,算筹和纳皮尔筹是石子和契刻进化的产物,算盘则是石子和算筹发展的最终形态。

有了工具,还要有用法。在后来成型的计算机概念中,工具对应硬件,用法对应软件。你会发现,手动时期的工具虽然简单,但其发展过程是一个软硬件相互制约、相互促进的过程。

在手指和石子阶段,由于“硬件”是既定的,人们不得不为其量身定制“软件”;在结绳和契刻阶段,人们对现成的“硬件”进行了简单改造,工具有了更丰富的用法,硬件开始迎合“软件”的需求。算筹和算盘体现了中国人“大道至简”的哲学智慧,“硬件”变得简约和次要,强大的“软件”成为主角,其中的算筹也因“硬件”无法满足“软件”的发展而最终被算盘取代。

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e55284”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

相关图书

ChatGPT与AIGC生产力工具实践 智慧共生
ChatGPT与AIGC生产力工具实践 智慧共生
专利写作:从创意到变现
专利写作:从创意到变现
产品经理方法论——构建完整的产品知识体系(第2版)
产品经理方法论——构建完整的产品知识体系(第2版)
程序员的README
程序员的README
架构思维:从程序员到CTO
架构思维:从程序员到CTO
开发者关系实践指南
开发者关系实践指南

相关文章

相关课程