1.4.1 计算法与计算辅助工具

直式加减法(或称竖式加减法)是我们在小学时就学习的计算法,这套计算法已经被我们熟练掌握,而纸、笔、橡皮擦、阿拉伯数字等就是计算辅助工具。借助这些计算辅助工具,我们可以运用直式加减法完成任意十进制数的加减运算。

筹算是一种将“筹”作为计算辅助工具来进行计算的计算法,是我国古代常用的一种计算法,由此衍生出来的词汇有很多沿用至今。例如,“运筹帷幄”这个词的字面意思就是在帷幄之中进行筹算,计算各种军事问题。《三国演义》中形容诸葛亮的常用句子就是“运筹帷幄之中,决胜千里之外”,这就是在描述他的计算非常准确。

如图1-9所示,筹算以竹签的排列来表示数字,这些竹签即被称为筹。在筹算中,还有“一纵十横,百立千疆”的说法,就是说个位用纵竹签表示,十位用横竹签表示,百位用纵竹签表示,千位用横竹签表示,这种交错排列可以更好地区分数位。

图1-9 筹算中数的表示

此处给出一个简单范例,1024可被表示成如图1-10所示的形式,两个连续的横竹签可提示中间还有一个百位。

图1-10 筹算中1024的表示方法

利用筹算可以做很多事情,我在网络上找到了一个使用筹算求解方程组的范例(据说这是描述刘徽筹算法的范例)。如图1-11所示,网格中每个方格内的筹代表一个数字,深色的是正数,浅色(黑边)的是负数。而纵向观察网格的话,每列中的筹组成一个方程。按此规则,从右向左排列的方程为3x+21y-3z=0,-6x-2y-z=62,2x-3y+8z=32。在摆好筹之后,只要按照计算法操纵网格中的筹,即可解出方程中的变量。

图1-11 使用筹算法解方程组

除了直式计算法和筹算,珠算也是在我国常用的一种计算法。珠算使用算盘作为计算辅助工具,以算盘珠代表数字,以不同的杆代表不同的数位,使用“一上一,二上二”之类的珠算口诀来进行数学运算。

综上所述,我们可以总结出这样的共性:计算辅助工具只能存储数据(Data),却无法实现自动计算的步骤(Program),需要由人来执行对筹或者算盘珠的控制以实现计算。换言之,计算法是独立于计算辅助工具而存在的,因此筹或算盘不能被视为现代意义上的计算机。