终于能够结束那“神秘的电”,感觉很轻松,是吗?如果你是这样想的,我也可以告诉你,我和你有差不多同样的感受。为了这个值得干一杯。下面,我们换一个话题,来说点有意思的。
  
   正如“计算机”这个名称所暗示的那样,最早人们发明它的目的只是为了摆脱繁重的计算任务。这通常不是指简单的计算,比如5+8×9,象这样的计算用笔和纸就能轻松应付,而且更方便。真正促使人类发明计算机的是那些富于挑战性的计算任务,它们的共同特点是机械、枯燥、缓慢而且容易出错,一个最简单的例子就是计算1×2×3×4×5×…×1000等于多少。如果没有计算机的帮助,这个计算过程可能会使你梦想成为数学家的憧憬在结果出来之前就烟消云散。
  
   人类对计算机的渴望由来以久。用一句比较经典的话来说就是“发明自动计算工具是人类自古以来的梦想”①。不过在为什么非得要发明计算机的问题上,人们有不同的想法。数学家希望能用计算机迅速地得到1×2×3×4×5×…×1000的结果,因为这样他们才觉得离真理更近一些。与数学家不同,平常大众不太关心这些,他们认为研究这些问题和他们的关系不大,就象我一个朋友常说的那样:净整些没用的。尽管他们也希望能用上计算机,但通常只是为了解决一些现实的问题。在这方面,一个典型的场景就是做买卖。当顾客上门买货的时候,买了几样东西,各买了多少,单价是多少,加起来一共是多少钱,靠手工计算既不方便,也容易出错。更要命的是,这一样一样地手工加本来就慢,上门的人一多真能把人急出一身臭汗。
  ——————————————————————————————

    世界上最早的计算机是中国的算盘,据说在秦汉的时候就已有之。千百年来,算盘是咱们国家主要的计算工具,既轻巧,又实用,是一种“价格低廉、绝无故障、节约能源,十年中无需任何保养也用不着更换零件”的好东西②。这玩意儿虽然简单,可是你也许想不到20世纪60年代搞两弹一星的时候它还派上过大用场,不服不行。当然,在这千百年里,外国人也没闲着,凭着他们同样聪明的头脑和喜欢钻研的劲头儿,研究呀、制作呀,一代人接着一代人不停地忙乎,其结果是发明了一个又一个的计算机器(也真是难为他们,大多数都搞砸了)。

  ——————————————————————————————

​ 包括算盘在内,二十世纪以前的计算机都是纯机械的,要让它为我们计算点什么,非得用手摇、用脚蹬,在这一点上很象自行车。比较走运的是,到了二十世纪,也就是几十年前,我们不但用上了电灯和其它各种各样的电器,还发明了只要一停电就准得完蛋的电子计算机(这还不算,连人也跟着抓狂)。
  
   我们知道,从最早的时候,人们想发明计算机的目的仅仅是用来进行数学计算。即使是几十年前,当世界上第一台电子计算机出现的时候,研制它的目的依然是数学计算,这一点没有改变。说到这里,哎呀,大家可能觉得这与现实情况有些出入,你看看,现代的计算机其功能之多令人眼花缭乱。这种奇怪的电器到底能干多少事儿,恐怕谁也说不清楚。它既能上网又可以写文章排版打印。闲来无事的时候,也可以听音乐、看大片或者玩游戏,画面还非常逼真漂亮。象我的同事周世峰,就连牙痛这样的事情也要先上网去查查。但是所有这一切看不出与数学运算有什么必然联系。
  
   这种看法并不正确。在任何一台现代计算机内部,数学运算仍是最重要的组成部分之一,而且是非常基础的组成部分。当然,你可能不太理解。遗憾的是我也无法用三言两语就能和你说清楚,好在当你端起这本书时,对这个问题的解释已经悄悄开始了,现在唯一需要的仅仅是你要有继续读下去的耐心和兴趣。
  
   要进行数学计算,首先要解决的问题是如何将参与计算的数送进计算机里去。在机械计算机的时代,人们一般是通过将一些精心制作的零件(比如算盘珠子)移动到合适的位置上来做到这一点的。但是,对于现代的电子计算机来说,情况则完全不同。它不是电动的,就象用电动机代替手摇脚踏,或者用电动机代替驴来推磨那样。相反,它从里到外都是电气化的,用电来表示数字,用电进行计算。听起来有些迷糊,不过不用担心,下面就要来说说这事儿是怎么发生的。
  
   通常,数学运算功能被构造成一个独立的部件。这个部件就象一个盒子,它从外面接受一些数,经过计算之后,再把结果送出来。
  
   制造一个包括所有数学运算功能的部件固然很好,但这对刚刚翻开本书第一章的你来说显然是不切合实际的。最明智的做法是先制作一个小的、能完成某个简单运算的部件。当这个部件制作完成后,根据需要再进行扩充。看起来加法运算非常简单,那么我们就从制造一个加法运算部件开始吧。
  
   一个加法运算部件如图2.1所示。因为加法运算需要一个加数和一个被加数,所以这个加法运算部件提供了a、b两个输入端,好让它知道要算的数是什么(这是理所当然的,这台机器必须由我们随心所欲地决定计算什么。如果它只能计算2+2=4的话——哎呀,我们为什么要制造它?这太无聊了!);当这个加法运算部件完成计算后,它把结果从o端送出来。

图2.1