我们平常看到的计算机,具有各种复杂功能,比如,玩游戏、下棋、各种机器人等等。所有这些具有智能、与计算机有关的项目,都是由计算机程序控制的。
由此看来,计算机程序应该是极其复杂,难以掌握。
确实,很多大型的计算机程序确实复杂,比如windows操作系统、智能机器人的控制程序等等,这些程序的复杂程度恐怕超过我们一般人的想象,动辄多少千万行。
但是,计算机程序不管如何复杂,都是由一个一个指令完成的,而每一个计算机指令,则可以用一句话进行概括:命令某个电路进行某个二进制数字的加法计算。
因此,计算机程序说到底,就是由一个个进行二进制加法运算这样最简单的一个个基本动作完成的,不管其复杂程度如何。
上图就是完成二进制加法运算的最基本电路。
我们知道,二进制加法运算,无非就是1+0,1+1,0+0这三种,可就是这三种再简单不过的运算,却可以让我们驱使计算机完成无数难以想象的高难度任务,是不是很神奇?
作者在《数学中的复杂运算最终都是加法运算》一文中,已经解释过了,在计算机里面,任何复杂的运算最终都转化为加法运算的原因,包括积分、指数对数运算等等。
举个例子,比如一个复杂的机器人,它要跳上一张桌子,这个动作对于计算机来说看起来是不是很复杂?那这个很复杂的动作最终怎么也可以转化为最简单的二进制加法运算呢?
对于控制机器人的程序来说,首先要对机器人跳跃的动作进行一步步分解。
比如,先由机器人的眼睛,也就是传感器加上雷达,测量这个桌子的距离和高度,这当然是数字运算;
然后由计算机程序计算,跳到这张桌子上需要多大的力量、起跳的角度等等,这是不是也是数字运算?
计算好了之后,计算机程序再指使机器人蹲下,以压迫其腿部弹簧或者其它机械原件,以提供起跳的力量。这里面是不是也变成了对于弹簧被压缩的角度和长度的运算?
计算好了并且下蹲到合适位置以后以后,程序再指使机器人身体上的某个电路触发开关,最后实现这个起跳动作。这个合适位置是不是也需要计算?
当然,这只是个人对于机器人执行某个动作的简单理解,现实情况肯定要复杂得多。但无论怎样,程序要对机器人进行控制,就无时无刻需要计算。
所以,计算机程序不管怎么复杂,归根结底就是在进行二进制加法运算。