Hello,大家好,我是能说会道,技术一流的一灯小雨。
本文讨论一些有趣的知识,这些知识与工作关系不大,广为大众所知,但其中却有很多的误解。吃瓜群众多半不明就里,跟风就势,人云亦云。就好比说很多人认为足球是中国人发明的。咱们的官方课本里在讲到宋代的经济文化成就时有单独给‘蹴鞠’列了一个词条,明里暗里地教育吃瓜群众:嗯,不错,这就是现代足球的雏形。那么只要我们稍加分析,就发现这里面有很多问题。首先这两种球的材质就不一样,蹴鞠是一种竹藤编制的缀以各种彩带的球,踢法更像是现在的踢毽子。我认为蹴鞠并没有真的消失,而是发生了演变,由一个团体游戏演变为了个人游戏,就是踢毽子。我们看《水浒传》中高俅在宋徽宗面前秀了一手蹴鞠脚法,各种花式颠球,然后头颠一下,肩颠一下,膝颠一下,再臀颠一下。宋徽宗大声赞赏:“好功夫!”。在现在足球中,花式颠球根本不能用于实战,也称不上是好功夫,只能说是一种表演。之所以有一些相同的踢法仅仅是巧合。另外,规则也不一样,蹴鞠更像现代排球,中间有一道网,这边踢过去,那边再踢过来。如果一定要给蹴鞠取一个现代的名字,我觉得叫足式排球比较合适。那么,在计算机领域,同样有一些广为人知的误解,甚至有些名词和它表示的概念实际上是两码事,但奇怪的是大家也都接受了。
算盘?
您一定知道“666”吧?是的,“666”是一套经典的算盘算法。任何初学算盘的人一开始都是反复练习这套算法。具体流程也很简单,就是从一加到三十六,得到的结果是六百六十六。这套算法演练的并非练习者的逻辑能力,而是指法熟练度。您一定也知道“三下五除二”,是的,这就是算盘的口诀其中一条,可以在算盘上进行实际演练出来的。表示的意义是三加二等于五。“三下五除二”在一个指法里包含两步操作,非常高效,实际上该口诀在日常的表达里也表示的是干净利落,非常高效的意思。那么算盘是不是就是现代计算机的雏形呢?当然不是。算盘并不是一种计算工具,而是一种记录工具。算盘的计算功能包含在口诀里,实际上是存在于人的脑子里。算盘采用特殊的五进制,使用者只需要记住四种数值状态就能完成复杂的运算。一个算盘高手在进行实际操作时完全可以不看算盘,只需眼睛盯着账本,眼睛看到哪里,手下就打到哪里。计算速度几乎和阅读速度一样块。这就跟熟练的打字员可以不看键盘进行盲打一样。虽然看上去脑子不用多想,只要手上跟的上,指法足够快就行,但里面其实仍然有计算逻辑,只是因为逻辑简单,烂熟于胸,看上去就好像不用思考,由算盘帮我们计算一样。现代计算机的理论机应该叫图灵机。图灵机和算盘可完全不是一种东西,两者没有任何相似之处。图灵机只存在存在于图纸上,它能够识别一些逻辑符号,并通过一系列逻辑符号的组合完成预先设定好的计算逻辑,更为重要的是这些设定好的计算逻辑一旦设定好,就可以反复使用。计算机发展早期有一种打孔计算机,就有图灵机的影子。这种计算机通过在纸条上打孔的方式将计算逻辑打在特定的纸条上,输入计算机后得到计算结果。在计算机发展的莽荒年代里,人们在努力寻找着一种具有计算功能的工具。这个过程是非常漫长的,那个时候连电都没有,人们通过各种精巧的机关设计,各种开关,档位切换来实现计算功能。但是这种设备把脑力活动变成了体力活动,往往得不偿失,没有得到推广。图灵早年的时候曾经受聘于英国军方,参与二战时军事情报的解密工作。当时德军的情报加密系统号称世界上最安全的加密算法,据当时的加密专家推算,如果按当时流行的解密算法来对德军的情报成功解密,至少要花三百年。因此当时的德军情报漫天飞,他们丝毫不在乎情报会不会被截获,他们是完全相信自己的加密系统。事实也正如他们所愿,盟军虽然截获了大量的德军情报,但是毫无办法,他们根本无法解密截获到的这些乱码。图灵发明了一种解密机器,这种机器由一系列他精心设计的齿轮和开关构成,当然是用电驱动,不过这里的电仅仅作为一个动力驱动,推动齿轮运转。就当时的技术来说,这是一种很先进的计算设备。这台机器运转了两个月,结果是一团糟。不过他很快又得到一个灵感,他注意到所有德国的官方声明或文件中,最后一句话都是“希特勒万岁!”,因此他大胆猜测,所有截获的德军密文,最后一句也是“希特勒万岁!”,于是他将“希特勒万岁!”输入机器,启动机器,连续运行了两个星期后机器停止了运转,因为结果出来了,它显示了一串乱码。所有人都欢呼。早年的计算机都是为了特定的计算任务设计出来,为了完成一些巨负荷量的计算工作,简单说就是节省人工计算。那时候的人们就已经意识到在巨量的重复性计算中,机器有先天优势,它不会疲惫也不容易出错。当然那时候也有只做一些日常简单的四则运算的机器,不过这种机器没有实用价值,人们认为机器要干人不能干的事才能体现它的价值。我自己能做的何必花钱买机器去做呢?就一个正常人的日常生活来说,一把算盘所能承载的计算量已经足够。计算机的设计初衷是作为一个计算中心,完成人力所不能完成的超负荷量的计算。因此在计算机发展的相当一段时间里,所有的计算机都是大型机,一般用于科研领域或军事研究。个人计算机是从软件商业化以后才有的,从此计算机就像家用电器一样普遍了。不过和大型机相比,个人计算机真的就相当于玩具。在我看来,真正的计算机就是大型机。个人计算机只能算是一个终端设备。更何况很多人真的就是把个人计算机当算盘用了。至于算盘嘛,当然就退出历史舞台了。
从理论上来说,你完全可以自制一台不用电的计算机,而靠一头骡子驱动它,不过,你买一头骡子代替算盘的功能,你让骡子怎么想呢?是不是有点得不偿失呢?当然如果你是出于diy的兴趣,我觉得还是不错的,必须为你的对于技术的纯粹的追求精神点赞。相信骡子也能理解吧?
电脑?
“电脑”一词是谁发明的呢?是计算机引进中国后,中国人自己发明的吗?当然不是。最初管计算机叫“电脑”的那个人叫蒙巴顿。如果你喜欢历史,尤其爱看二战历史,那你对他肯定不会陌生。此君是二战时期亚洲战区盟军的最高统帅。此人身份高贵,打仗很水,却是出了名的爱折腾事。有一天,他来到美国军营视察,看到一个操作员在一台计算机上操作,屏幕上显示了一些不规则曲线,看上去像是在研究炮弹轨迹。于是他走上去询问操作员在做什么,操作员向他解释他在计算炮弹轨迹和落点。“你的意思是炮弹还没打出去,你就知道它会掉到哪里?”,蒙巴顿感到很吃惊,他打了一辈子仗也没想过会有这种事。“是的,将军”,操作员肯定地回答。蒙巴顿仔细瞅了瞅眼前的这台计算机,不无感慨地称赞:“这玩意儿可真了不起,这可真是一台电脑啊!”。要注意的是,根据当时的语境,他说的电脑指的是电子大脑的意思。那么计算机等于电脑吗?肯定不是的。蒙巴顿对计算机技术一窍不通,他的那句感慨并没有建立在对计算机有充分认知的基础上,因此称计算机为电脑实际上是一种非常不专业的称呼。无论是当时的计算机技术,还是现在的计算机技术,都还没有达到“电脑”的能力。我们现在的计算机的思维模式为:h=f(n)。如果用数学语言描述则是向一个函数中传入一个因数,函数通过一系列运算规则得出一个计算结果。函数必须要返回结果,否则无法进行下一步计算。我们在实际的程序开发中,会经常写一些没有返回值的函数,比如一个void类型的函数,代表这个函数不返回任何结果,实际上程序开发中的无返回值和上面的提到的不返回结果是不一样的概念。上面说的不返回结果在程序的意义上应该陷入了死循环,程序调用无法出栈,最终导致卡死。void函数还是有返回值的,不过是个空值,程序认为这个值毫无意义。这是很好理解的。比如我请你到我家做客,我做菠萝鸡给你吃。菠萝鸡快做好了,但是我发现酱油没有了,于是叫你帮我买瓶酱油回来,你不能出去了以后就不回来了,这边还在等着呢。那么即使你出去转了一圈发现没有酱油买,你也因该回来告诉一声说酱油没有买,那么我可以根据你给我返回的空值来进行下一步的操作,或者我们可以用其他的调料代替也未可知。实际上一台标准的计算机完成的事情都是非常机械的工作。蒙巴顿将军因为不懂相关技术,完全被一些表面现象给迷惑了。如果我们得到炮弹的发射角度和初始速度,我们通过笔算可以将初始速度分解为水平方向的匀速直线运动和垂直方向的自由落体运动,那么我们不难绘制炮弹的运动轨迹,也能得出炮弹的落点,而且计算过程并不复杂。因此,仅凭这样简单的计算能力就将计算机称为“电脑”的确有点言过其实。更为奇怪的是这种非常经不起推敲的叫法竟然还广为流传。一台真正的“电脑”的最基本的能力应该是自我学习,自我成长,探索未知领域的能力。很显然,目前还没有这样的机器。也许在不久的将来,会有一台真正的电脑出现吧,谁知道呢?让人像机器一样思考很容易,让机器像人一样思考却很难。你是这么认为的吗?
好了,就到这里吧,关于计算机,你有怎样的思考呢?或者你对我以上的观点持怎样的态度呢?欢迎给我留言吧,那么,咱么下一篇文章见吧。。。