计算机的族谱


如果计算机需要给她编写一个族谱的话,“1+1=2”大概是会刻在石碑的第一行。肯定会有人反驳不对,应该是“0+1=1”。咋一看,0<1,没有我“0”,哪来的你“1”,这样说来确实应该是“0+1=1”。不过仔细推敲下,你会发现负数貌似都比0小,按照上面的理论,族谱第一行还是不要写了为好,不然写不下了。

    既然是关于族谱的事情,我们还是问问历史学家比较好。据考古记载,公元前3100年左右,古巴比伦人发明了巴比伦数字,采用60进制,为目前已知的最早的位值制数字系统。

图1

 可惜巴比伦数字系统没有表示0的符号。关于0的出现,历史上的记录很多。一种说法也是现代主流的说法,“0”这个数字是印度人在公元5世纪发明的,还有一种说法是玛雅文明最早发明0这个数字,但是这个文明都是个谜,自然这种说法也是个迷。说一个令我们中国人兴奋的历史吧,自从公元前4世纪,中国数学家就已经了解负数和零的概念了。公元1世纪的《九章算术》说:“正负术曰:同名相除,异名相益,正无入负之,负无入正之。其异名相除,同名相益,正无入正之,负无入负之。”。就如意大利人斐波纳契所说的“在东方中由于数学是以算术为主(西方当时以几何和逻辑为主),由于运算上的需要,自然地引入了0这个数。”。好吧,数学问题居然被历史学家解决了,鄙视文科生没有头脑的理科生,该醒醒了吧。这样说来0真的要排到后面了。

        前面提到过“0”是为了方便四则运算,应运而生的。那么四则运算又是什么时候起源的?四则运算的起源很早,几乎与数字同时产生,如罗马数字6写成VI,即5加1的意思,4写成IV,即5减去1的意思。在中国古代,四则运算很早就有了。战国时代李悝(kuī)编写的一部有关法律方面的著作——《法经》中已有加、减、乘等运算,甚至还有除法运算。

       “1+1=2”,看到这里,突然明白了些什么?怪不得小学生都可以学习编程啊,计算机学了这么久,才发现一直在跟“1+1=2”较劲。讲到这里,肯定会有人惊呼“NC,计算机这么多高深的算法理论,有这么简单么?”。哈哈,莫着急,只是说下她的祖先而已,我们还是猴子变过来的,现在猴子哪能和我们比啊。

       从上面的数字演变来看,最开始人类用60进制来表示数字,之后又用10进制,现如今又用2进制来表示计算机的数据。 “万物之始,大道至简”,这一句俗语概括的恰到好处。

       族谱的第二行,时间跨度可能就比较大了。在数字和四则运算发明之后,人类就能很方便的计算日常很多的行为。比如说,人类通过观察、记录天文现象,经过推算总结出来了各种历法。越来越多的人类行为,需要数字的记录和大量的数字计算。自然而然,就会产生重复计算的繁琐问题。上帝创造了人类,给了我们善和恶,这两个最让人兴奋也是最让人憎恨的特点。人类的聪明和贪婪,才造就了我们发明创造出了可以代替人们劳动的工具。“算盘”这个中国人发明的最早的计算工具,可以说有理由放到计算机的族谱中。  

       中国算盘的雏型是汉代的筹算。设有横梁,采用上一珠、下四珠的形式,上一珠当五,下一珠当一,“随手拨珠,便成答数”, “珠动则数出”,可表现十进制数,故算盘设计为一四珠算盘。通过算盘的操作口诀,可以方便的进行各种加减运算。在中国算盘的使用一直延续到了近现代。可以说,算盘大大的减少了人们的计算过程,是计算机历史的一个不可或缺的进步。

图2

       “帕斯卡”提到这个名字,可能我们的第一印象是大气压强。的确他是最早用实验证实了大气压力的存在。不过他还有一个传奇的历史,在1642年,帕斯卡(Blaise Pascal)发明了世界上第一台加减法计算机。它是利用齿轮传动原理制成的机械式计算机,通过手摇方式操作运算。这种计算机的操作方式,比起算盘的口诀更接近人的正常思维,也更能做一些复杂的运算。这一思想对以后计算机的发展产生了重大的影响。顺便说一下,1971年发明的一种程序设计语言──PASCAL语言,就是为了纪念这位先驱,使帕斯卡的英名长留在电脑时代里。感觉文艺复兴时期的欧洲大师,怎么各种学术穿越。这里还没有说帕斯卡是一名著名的诗人。“人只不过是一根芦苇,是自然界最脆弱的东西,但他是一根有思想的芦苇。”正是出自他的名言。回想那个时代的牛顿、欧拉、莱布尼茨,每个人貌似都是在不同的学术界各种穿越。总感觉那个时代的这些人是上帝派来的使者,来指引人类前行的。

       下面说到的正是莱布尼茨。  前面提到的算盘和帕斯卡的计算机都只能做加减计算,下面这个计算机把4则运算都包含进去了。在1671年,著名的德国数学家莱布尼兹(G.W.Leibnitz)制成了第一台能够进行加、减、乘、除四则运算的机械式计算机。最后,机械式计算机发展造就了手摇的台式计算机,在当时手摇计算机可以说是风靡一时。  

       说到莱布尼茨,不得不说的是他提出的“二进制”数的设计思路。有人说,他的想法来自于东方中国。大约在公元1700年左右某天,友人送给他一幅从中国带来图画,名称叫做“八卦”,是宋朝人邵雍所摹绘的一张“易图”。莱布尼茨用放大镜仔细观察八卦的每一卦象,发现它们都由阳(—)和阴(–)两种符号组合而成。他挠有兴趣地把8种卦象颠来倒去排列组合,脑海中突然火花一闪──这不就是很有规律的二进制数字吗?若认为阳(—)是“1”,阴(–)是“0”,八卦恰好组成了二进制000到111共8个基本序数。正是在中国人睿智的启迪下,莱布尼茨最终悟出了二进制数之真谛。虽然莱布尼茨设计的计算机用的还是十进制,但他率先系统提出了二进制数的运算法则,直到今天,二进制数仍然左右着现代电脑的高速运算。如果莱布尼茨的思想真的是来自中国的话,可以说中国的科学技术对计算机的诞生奠定了坚实的基础。不过之后计算机的发展离中国就越来越远了。

       另外还要提到一个人,在 1833年,英国科学家巴贝奇(Charles Babbage)提出了制造自动化计算机的设想,他所设计的分析机,引进了程序控制的概念。尽管由于当时技术上和工艺上的局限性,这种机器未能完成制造,但它的设计思想,可以说是现代计算机的雏型。

       人类一直渴望发明可以更方便计算的工具,用来探索这个未知世界。但是我们人类会不会想到,这个工具什么时候能替代我们来探索这个世界哪?这个想法听起来有点天方夜谭,甚至有点恐怖。莱布尼茨曾经说过“我思故我在”,他的二元论也否定了机器可以替代人的想法。但是到了如今计算机界确实正在发生这种事情。

       在来到计算机的近代族谱中,不得不提到的人就是阿兰.图灵,这个上帝创造的人类先行者,首先提出了“可计算性”。图灵在他的重要论文中《论可计算数及其在判定问题上的应用》,提到了图灵机的概念,并且还证明了这样的机器有能力解决任何可想象的数学难题。图灵机的提出,为现代计算机的发明提供了坚实的理论基础。如果没有图灵的这篇论文,可能之后,人们不会绞尽脑汁发明这种在当时看来的庞然大物,因为大家不知道计算机这东西能不能解决我们的问题,但是图灵给了我们肯定的答案。

       图灵的故事还没讲完,先来看看另一位大家冯诺依曼。他提出了,数字计算机的数制应该采用二进制,计算机应该按照程序顺序执行。人们把冯诺依曼的这个理论称为冯诺依曼体系结构。到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。随着物理科学的进步,电的发明,量子力学的发展,运算的机械部件相继被继电器,真空管代替,之后又被速度更快的半导体二极管替代,不管用什么替代,只是速度的提升,现代计算机的理论基础依然是那个时代的大师提出的。

       好了再次回到图灵,这个在计算机界被无数次赞誉也不为过的人。这次看下什么叫图灵测试,图灵测试是测试人在与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。问过一些问题后,如果测试人不能确认被测试者30%的答复哪个是人、哪个是机器的回答,那么这台机器就通过了测试,并被认为具有人类智能。目前还没有一台机器能够通过图灵测试。这是1950年图灵发表的一篇《机器能思考么?》的论文,正是这篇论文为图灵赢得了一顶桂冠——“人工智能之父”。讲到这里,就回到了莱布尼茨那个时代的疑问,人类能不能创造出一个同自己一样高等的东西,代替我们来探索世界哪?正是因为图灵的这个回答,上帝估计觉得自己创造人类的地位恐怕要被撼动了,所以让图灵早早吞下了那只毒苹果。

   如果说计算机的族谱是个一棵大树的话,那么上面所述的就是这棵树的树干。这颗枝繁叶茂的大树,日后不管如何生长,始终伴随着人类探索世界的终极梦想。 原文链接

如果你喜欢这篇文章,谢谢你的赞赏

图3

如有疑问请联系我