计算的边缘

做一个懂文艺的科学青年

Category: 科普

数学,我们相见恨晚

在杭州城西湖边上一家小有名气的餐馆里,人来人往,谁也没有留意在一个不起眼的角落,低调地坐着一对男女青年。男青年看起来风华正茂、意气风发,女青年看上去风华更茂,甜美的笑容里充满了自信。 那时的男青年还不懂文艺,不懂哲学,甚至还没有领悟到装B的法门。两人天南海北的闲聊时,男青年自然不自然地把话题扯到了他自认为还有点基础的科学上: “我认为经济学很不靠谱,它总是自己创造出一条定律,然后再用现实中的现象硬生生地往这条臆想出来的定律上套,然后再生拉硬扯地解释说这条规律如何正确。其实它一点也不科学,现实中的经济活动充满了变数,充满了不确定性。所以我更喜欢物理学、数学这样的学科,是就是,非就非,一切都是确定的,有章可循的。” 男青年特地扯上了数学,因为他知道女青年的专业就是数学。 女青年听了淡淡一笑,轻声说道: “可能是你们学计算机的接触的东西都是确定的,其实就算是物理学、数学这样的学科也还是充满了不确定性。” 大家可能已经从上下文中分析出来了,男青年的专业就是计算机。为了展示自己知识渊博兴趣广泛,男青年并没有接过话题讨论自己的老本行计算机,而是接着扯物理学: “对,物理学的不确定性主要来自量子力学,虽然微观粒子在同一时刻的速度和位置无法同时确定,但他们的概率是可以计算出来的。物理学就像数学一样,有一套坚实的理论和一套判断是非的标准。” 男青年说道这里微微一笑,他自认为在女青年面前炫耀了一下自己的科学素养,还阐释了自己对真理的追求,觉得应该能博得女青年的好感。 女青年也微微一笑,优雅地用餐巾的一角轻轻按了一下嘴角,淡淡地说道: “其实看似严谨的数学也充满了不确定性,比如说#$&悖论,@@%*()^@!$&)+_*^#!@$%&(+)*^$%!~!@#%$^&*()_++)(&%#~~!@@#$%^&~!#%&*)(*&^$#!@$^*()(&^&%$#!~@#$#!#%&*))*^@!@#%^*()(&%$#@!~~!@#,而集合论是整个数学大厦的基础,从某种意义上说,整个数学的基础都是不牢固的。” 上面这段文字不是乱码,也不是作者有意打上去的马赛克。男青年听了上面这段话就和大家看到上面这段话的感受一样:完全不懂她在说什么。 虽然内心很囧,但男青年还是努力维持住淡定的表情,用微笑掩饰自己的无知,假装呷了口茶,平静地看着女青年,轻轻点了点头: “对,你说的这个悖论就像计算机科学中的哥德尔不完备性理论, …………,…………,…………,…………,…………,…………。” 男青年抱着“你说的我不懂,我说的你不懂,大家一起来不懂装懂”的心态,把话题扯回到了自己的老本行——计算机科学。 二人就这样扯来扯去,交流思想,晚餐在一派和谐的气氛中落下了帷幕。 这顿晚餐对女青年来说可能不算什么,但是对男青年却产生了深远的影响。因为那顿晚餐不仅让男青年认识到了女青年渊博的知识、优秀的科学素养,以及对自己专业——数学的热爱,更重要的是,那是男青年和女青年唯一一次共进晚餐。 美好的回忆一直萦绕在男青年的脑海。几个月后,他读完了《数学:确定性的丧失》。直到那时,男青年才明白那日女青年所说的正是罗素提出的集合论悖论,男青年也明白了为何整个数学是建立在集合论公理体系上,也明白了女青年所说的:“整个数学的基础都有可能是不牢固的”。 男青年逐渐发现数学并不像原来觉得那样枯燥无味,他慢慢感受到数学在冷峻的外表掩饰下的那颗充满激情的心。 男青年慢慢地了解到,数学的成熟、神秘,在于她的历史并不是一帆风顺。她经历过坎坷,经受过挫折,甚至遭受了险些让她彻底坍塌的三次大危机。 男青年终于明白,数学从未高傲地凌驾在人的认知、经验之上。恰恰相反,她的发展总是和人类认识世界、探索自然地伟大尝试密不可分的,比如几何学的创立,关于负数、无理数的争论,非欧几何的产生……数学是人类认识宇宙的先锋,又是一柄苍老而又锐利无比的剑,在人类探索未知的历程中披荆斩棘,伤痕累累。 要真正了解一个人,就要去了解他的过去。对数学来说也是这样。男青年终于意识到自己原来对数学的认知是多么肤浅和片面,也明白了女青年为什么会如此热爱数学。 可是他明白得太晚了。 后来,女青年漂洋过海,到了美国一所知名大学攻读博士学位;男青年则来到加拿大一所不知名大学作一个小硕士。 再后来,男青年爱上了数学,女青年却没有爱上男青年。

我们能做什么?

一个人如何定义自己的世界观? 你是一个唯物主义者,唯心主义者,有神论者,无神论者,还是宿命论者……把自己定义为这些“者”并不重要,重要的是你如何认识世界。 我不敢说我是一个100%的无神论者,但至少90%是,而同时我是一个90%的宿命论者。你可能会觉得奇怪,一个相信无神论的人居然还相信宿命论。 这并不矛盾。宿命论大概可以分为两类,一类是相信人的命运是被一个更高级的“神”主宰;令一类是认为所有的事物的运动都是服从物理规律的,包括人的意识,所有这些在宇宙产生的那一刻就被决定了。或许后一种宿命论被成为“决定论”更为合适。这种决定论是一种“强决定论”,直接导致的结论就是:人没有自由意志。 问自己一个问题:自己有自由意志吗?你当然会说有,应为你现在正在思考,正在用你的“自由意志”来否定我的世界观。但是,你怎么知道你的意志是自由的?因为你可以“自由”地决定自己现在干这件事而不是那件事,可以“自由”地决定自己当前要思考什么问题。假设现在有两个数1和2,让你“自由”地选一个,如果你已经选好了,并且相信你的选择完全是出于你的自由意志而没有屈从于其它事物,你怎么证明这一点?你可以说:我完全可以选另一个数,这完全是由我自己决定的。但是你已经没有机会再回到刚才的状态来“选另一个数”了,你所做的一切都已经成为事实,已经没有办法修改,没有机会证明你的“自由意志“还能让你作出另一个选择。不管你如何声称自己有“自由”的选择,我都可以用同样的“诡计”来攻破你所声称的“自由意志”。 在这种“强决定论”的支配下,宇宙的每个粒子都遵循特定的规律运行,根据当前的状态,下一个时候的状态是确定的。我们的脑细胞当然也是由这种粒子组成的,大脑的思考行为本质上也是粒子的运动,所以我们的意志也无法摆脱“宇宙定律”的支配。所有粒子当前的运动状态自宇宙大爆炸起就已经被决定了,而它们今后的状态也已经被决定了。我现在敲这篇文章,将来你看到这篇文章,反驳我……这些都是被决定的。拉普拉斯曾经说过:如果有一个足够理性的人,知道宇宙所有粒子的运动状态,他就能完全预测整个宇宙的未来。 似乎正如你所料,所有这一切都在量子力学的不确定原理被发现后完全被推翻了。不确定性原理说:对于一个粒子,我们无法同时知道它的位置和速度。但是”无法知道“就意味着它没有确定的位置和速度吗?让我们回到不确定性的原因上来,为什么微观粒子会有不确定性?想象有一个电子,你想观测它,就必须用光照射它,这样就会有光子和它发生碰撞从而改变它的运动状态。此时,即便我们已经知道了它的位置,它的速度已经无从得知。这种不确定性是由我们观测手段的局限性造成的。但是也有人说这和观测手段无关,不确定性是粒子与生俱来的性质,并且举了原子衰变的例子:原子内部的粒子可以通过不确定性凭空“借”来能量来突破原子核的能量势阱壁垒,从而发生衰变。我们有仔细考虑过这个问题,但原子核能量势阱这个壁垒也可以看成是一种观测手段? “无法确定”的并不一定就是“不确定”的。彭罗斯认为微观粒子的行为是“确定但不可计算”的,我们的确无从得知粒子当前时刻的准确状态,当然更无法确定粒子下一时刻的状态,但这并不意味着粒子本身没有明确的状态。就像一段程序,我们无法得知它是否有死循环,但它要么有,要么没有,是确定的。当然,我不是物理学家,而物理学家对宇宙的运行规律也没有完全了解,这就是还有10%的原因。如果听一些哲学家有关于世界观的争吵,我宁可等待物理学家发现宇宙的终极定律。 看完这些,你可能会像我一样,成为一个宿命论者,但我更相信你不会。作为一个决定论者并不意味着不再会去努力,其实一个人勤奋、努力与否同样在宇宙大爆炸时就被决定了的。将来会做什么事,会在什么地方,会和什么人在一起……也都是早就被决定了的。我们没有自由意识。 我们能做的,只有顺应天命。

书评:《数学:确定性的丧失》

看完这本书,忍不住写书评了。 从这本书的标题来看,它是讲数学的缺陷的。而当把这本书读完,才发现它讲的是一部数学的历史。 和一般的数学历史书不一样,这本书没有复杂的公式,没有深奥的定理,它从人类认识和理解自然这个伟大的角度讲述数学的发展、思想,以及数学和科学的关系。 看完这本书,你就会对数学的来龙去脉有一个比较全面的了解,你就会知道数学的历史并不是一帆风顺,你就会明白看似严密的数学却充满着各种各样的不稳定性。当然,这种不稳定性丝毫没有减少人们对自然、数学的热爱。 这本书还告诉了你:数学是什么。在此,就不得不提到另一本书:《什么是数学》。如果说《什么是是数学》这本书是从“自底向上”的方法向读者讲 述什么是数学,那么这本书就是用“自顶向下”的方法讲述什么是数学。就好比从飞机上鸟瞰一座宫殿,你首先被它的宏伟的气势震撼,被它精妙的布局吸引,然后 就有走进去了解它的冲动。这就是“自顶向下”的魅力,也是这本书的魅力。 看完这本书,就想把《数学分析》再重新看一遍,也想把《什么是数学》也重新看一遍。 就像书中说的: 音乐能激起或平静人的心灵,绘画能愉悦人的视觉,诗歌能激发人的感情,哲学能使思想得到满足,工程技术能改善人的物质生活,而数学则能做到所有这一些。 在看这本书的过程中,你就会发现,“数学”两个字越来越吸引人了。

日偏食

昨天,日全食扫过了长江流域,我在家(山西省阳泉市)只能看到日偏食。废话少说,先上照片: 感慨我的老套筒还是老当益壮,能和相机配合拍出不错的照片。但毕竟是8、9年前的东西了,没有赤道仪,而且严重老化,现在微调基本靠敲,可想拍摄有多困难。 还要感叹牛顿的伟大,他发现了天体运动的规律,我们才能兴致勃勃得拿着时间表等着日食的到来。正如拉普拉斯所说: 牛顿是最幸运的人,因为只有一个宇宙,而他发现了它的规律。 拍摄的一些参数: 口径:80mm 焦距:900mm 目镜:25mm GPS坐标:N 37.00, 52.37, 0.00; E 113.00, 32.31, 0.00

寻找薛定谔的蟑螂(三)

接上文 虽然薛定谔对自己的方程感到无比骄傲,但他坚持不肯接受波尔的解释。为了证明哥本哈根解释的瑕疵,他设想了一个实验:他做了一个简易的屋子,四周全部密封,只留下一个能够打开观察的窗子。屋子里有一个舒适的小强窝,里面住着一只可爱的小强。窝的外面充满了灭虫药,但窝内是安全的。通过一定的布局,这是小强有50%的可能性留在窝里,另一半的可能性跑在屋子里,当然,小强跑到屋子里后就会被灭虫药杀死。薛定谔指出:在我们打开窗子观察屋内情形之前,没法知道小强的死活。小强可能已经死了,也可能还活着。这两种可能性的叠加产生了一个态的叠加。只有当我们打开窗子观察的时候,叠加才可能成为真实的。在观察的一瞬间,波函数坍塌为其中的一个状态。在我们观察之前,这只可怜小强既是死的,又是活的,游离在生死的边缘。一只小强怎么可能既是死的,又是活的? 当然,拒绝哥本哈根解释的不止薛定谔一个人,当然还少不了爱因斯坦。随后,爱因斯坦,波多斯基和罗森一起也设想了一个实验。他们同样用可怜的小强作为他们的实验品,而且也做了一个同样的简易屋子,只不过小强窝附着在屋子的外面,可以和屋子分开。同样,这只小强有一半的可能性留在窝里,另一半的可能性跑到屋子里散步。幸运的是,这次屋子里没有灭虫药,大家也不用担心为小强的生命担忧了。在我们打开窗子观察屋子之前,我们不能确定小强到底是在屋子里还是在窝里。根据哥本哈根解释,小强既在屋子里,又在窝里。先别急着打开窗子,我们把小强的窝从屋子里取出,然后把所有出口密封,这是,我们仍不能确定小强在屋子里还是在窝里。我们把小强的窝放在一个星际飞船里,然后飞到一光年以外的那美克星。和以前一样,我们对小强的位置仍然一无所知,它既在屋子里,又在一光年以外的那美克星的窝里。此时,我们打开小窗,观察里面的情形。如果我们看到了这只可怜的小强,那么在一光年以外的窝里的小强的波函数就会立即坍塌;如果那美克星上的宇航员打开小强的窝,看到了小强在那里,那我们身边的屋子里小强的波函数就会立即坍塌。问题就来了:信息以超过光速的速度传播!这直接违背了狭义相对论。后来,同学们以他们三个人的名字命名了这个悖论:EPR悖论。 不管是薛定谔的极不虫道的实验,还是爱因斯坦等人提出的悖论,都对哥本哈根解释提出了严峻的挑战。 埃弗雷特战战兢兢地走上讲台,大家都知道他有了新的见解。埃弗雷特在黑板上画了类似一棵树的图形,他解释道:“在薛定谔的实验中,确实有两只小强,一只是死的,一只是活的,但他们都是真实存在的。他们存在在两个不同的宇宙中,当我们打开窗子观察时,宇宙就分裂了成两个版本,这两个版本其它个方面都是相同的,唯一的区别就是其中一个版本中小强跑到屋子里被毒死了,另一个版本中小强在窝里待着安然无恙。”这个解释让昆虫保护主义者稍感安慰,因为至少有一只小强是活着的。但它听起来太像科幻小说了。不,埃弗雷特继续在黑板上写着,他开始了他严密的、无懈可击的数学方程。他继续说道:“我们的宇宙在不断的劈裂着,就像一棵分叉的树,在其他宇宙中,也许盟军输掉了二战。”埃弗雷特的理论是如此的诡异,以至于有些在场的同学幻想着作一名超时空英雄,穿越到另一个宇宙拯救林肯。 研讨会的气氛越来越神秘,大家对小强的行为感到越来越迷茫。讨论还在继续,而且似乎永远也不会停止…… ——————————————————————————————– 画外音:只能写到这里了,EPR悖论以后的东西我就不懂了,等以后弄懂了继续写吧。 参考文献: 终极理论之梦 宇宙的琴弦 寻找薛定谔的猫 皇帝新脑

寻找薛定谔的蟑螂(二)

接上文: 德布罗意同学就是其中之一。他缓步走上讲台,谨慎地对大家宣布:“小强其实是波,不光小强,就连原子、电子、甚至你我在座的各位都是波。万物都是波。”真是语不惊人誓不休啊。德布罗意是富家子弟,老爸是受封的贵族,他大哥在学术界也小有名气,发过很多牛paper。他养尊处优,谈吐优雅、为人低调,同学们都没想到他会发言,而且一发言就提出这种惊人的言论。德布罗意当然也不是空手来的,他向大家展示了自己的理论,并且还有严格的数学推导。他指出:物质的波长和它的动量有关,并且还给出了具体的计算公式。很多同学被德布罗意的理论震惊了,戴维逊等人根据物质波的公式做了实验,发现实验结果完美地符合了德布罗意的理论,这下有很多人相信德布罗意是对的了。 爱因斯坦对德布罗意的发现感到满意,他还大加赞赏了德布罗意的工作。这时,同学们又安静了下来,原来是薛定谔走上了讲台。薛定谔是班上的数学委员,数学能力超强,他的出现,仿佛让大家看到了新的曙光。果不其然,他在黑板上写下了一行漂亮的方程式,接着向大家解释了他的工作:“没错,正如德布罗意同学说的那样,物质都是波;那么粒子的波是怎么随时间变化的?请看这个方程。”他详细地描述和解释了他的方程,然后他还证明了,他的方程和波恩等人的矩阵是等价的。薛定谔完美的方程和严谨的分析赢得了大多数的人的掌声,有些同学甚至认为所有的问题都解决了,研讨会可以到此结束了。但是,更大的困惑才刚刚开始。 不论是薛定谔还是德布罗意,都不明白物质的“波”到底是什么物理量,“波”到底代表什么。班里又是一片哗然,大家的思维又陷入一片混乱。波恩试着用概率来解释物质的波,他认为:物质的波并不是通常意义上的波,“它的意义仅在于:任何一点的波函数值代表了物质在那点或其附近出现的概率。”这个解释获得了很多人的认同和支持,包括海森堡。但薛定谔和德布罗意却并不愿意接受波恩的想法。争论还在继续。 波尔笑呵呵地走上讲台,全班都安静了。波尔是量子班的班主任,大家的主心骨,同学们都希望他能拨云见雾,指点迷津。“同学们”波尔开始发言了,“尽管在经典世界中,不管我们是否正在进行观察,我们认为由相互作用的粒子所构成的系统,例如钟表,都具有某种功能。而在量子世界中,观察者和系统之间存在相互作用,这种相互作用强到不能认为系统是孤立存在的。要精确地测定位置,我们就必须得使粒子的动量更加不确定,反之亦然。如果选择一个实验来测量波动性,我们就排除了粒子特性。没有实验能够同时揭示出粒子性和波动性。在经典世界当中,我们能够在时空坐标系当中精确地描述粒子的位置,并以同样的精度预言它们的行为;在量子世界中,即使是在一个’经典’的理论意义上,我们也不能……” 伴随这热烈的掌声,波尔的话讲完了。尽管很少有同学能够完全听懂和理解,他的话还是被完完整整记录了下来,奉为经典。波尔在哥本哈根大学做了很多的研究工作,所以大家都把波尔的这番话称作“哥本哈根解释”。不管薛定谔能否接受波尔的解释,大家都认为他的方程就像一块里程碑,所以大家把这个方程叫做“薛定谔方程”。 尽管一直存在着不同的声音,量子班的同学们还是根据哥本哈根解释和薛定谔方程描述了小黑屋里小强的运动:在开灯之前,小强可能在屋子里乱窜,也可能老老实实呆在自己的老窝里,小强出现的位置不能确定,既出现在这里,又出现在那里。小强出现屋子里的每一个角落,每个小强都对应着一个波,每个波(或者说是概率)都可以由薛定谔方程计算出来。当我们打开灯后,我们发现小强的确在某个地方,此时小强在其它地方的波函数就会发生坍塌,全部消失,然后就出现了我们看到的情景。 量子世界如此神秘,大家只能用实验来解释世界,却不知道它们到底是怎么回事。

寻找薛定谔的蟑螂(一)

什么是蟑螂? ———————科普开始——————— 蟑螂就是小强,下文都以小强代替蟑螂 ———————科普结束——————— 走进一间漆黑的屋子,把灯打开,你有没有发现小强惊惶地在地上乱窜? 小强同学的性格比较阴郁,喜欢待在暗处,越黑越好。所以每当到夜深人静、月黑风高的时候,小强们就会披上黑色的夜行衣,来到你的房间里为你清理垃圾。一个小昆虫,不远万里,来到你的家里为你默默的服务,这是什么精神? 当然,宇宙学院量子班的同学们也深深地被小强这种精神感动了,为此,他们专门召开了一个研讨会来学习小强精神。 量子班的同学都是很理性的,他们都喜欢刨根问底。为了深入研究小强精神,首先要了解小强的一切。“不,这是不可能的!”海森堡同学语惊四座,把手中的铅笔放下,接着说:“我们无法同时准确的知道小强的位置和动量。”一闻此言,研讨会上的同学们立刻沸腾了,质疑、嘲笑的声音不断传来。海森堡不慌不忙,咽了口唾沫,示意大家都静下来,继续说到:“如果我们想观察一只小强,我们就必须要用光来照射它,而光子是有动量的,打在小强身上就会轻微地改变小强的运动状态,这样我们就无法精确地知道它的位置了。当然,对小强如此庞大的东西来说,这种不确定的效果并不明显,但对于小小的电子,光子对其的干扰就很明显了。我们对它的速度知道的越多,对其位置知道的就越少,反之亦然。” “那这是我们的实验方法导致的嘛,如果我们提高实验精度,这种效应就不存在了。”有同学反驳到。 “当然不是,这种不确定性是所有粒子与生俱来的气质,与我们是否在观察它们无关”海森堡解释道,“事实上,有很多原子会自发得发生衰变,这正是由于有些粒子利用这种不确定性,凭空’偷’来更多的能量,越过原子核的能量壁垒,从而发生衰变。理论上,对于小强,如果你把他关在一个小盒子里(太残忍了),有朝一日,它也能借助不确定性,凭空生出足够的能量,像崂山道士一样穿墙而出。但小强太大了,根据计算,要等到这一天,恐怕得等到宇宙年龄这么久……” 研讨会上的同学们都安静了下来,仔细思考海森堡提出的理论。这时,爱因斯坦发话了:“不可能,上帝怎么会掷骰子!”。爱因斯坦是量子班的班长,成绩好,年纪大,而且发过很都影响因子很高的paper,他说话自然有一定的分量,所以马上就有很多人跟着附和。但是也有很多人坚持站在海森堡这边,比如波恩、约当和狄拉克。 海森堡这时也没有闲着,把自己的初步计算成果写在了黑板上,他主要初步计算了电子跃迁到某几个状态的概率,然后把结果做成一张表。这个初步的结果对波恩等人的鼓舞很大,他们凑在一起,用数学的方法严密地描述了海森堡的不确定性原理。用他们的方法,可以计算出电子跃迁到每个状态的概率。他们所用的数学方法及其繁琐,以至于在场没有几个人能明白其中的内容。也难怪,他们发明了一种新的方法来表示粒子的各个状态,这东西看起来就像一行行一列列的数字,他们把它叫做“矩阵”。在当时来说,没人懂矩阵运算,约当发明了一些对矩阵运算发方法,极大的帮助了波恩和狄拉克的工作,后人把这种方法叫做“约当标准型”。 波恩、约当和狄拉克迫不及待地把他们的成果向全班同学展示,当然引起了同学们的热烈讨论。有人惊叹于不确定性的神奇和波恩等人数学方法的严密,自己做了一些实验验证,实验结果和理论吻合得很好。同时,也不乏有人发出不同的声音。

可恶的I/O-Bound工作

I/O-Bound这个词实在不知道该如何翻译成中文,或许我该找本中文的操作系统来看看。它说的是这个意思: ———-科普开始———- 通常来说,一段程序的执行需要几个步骤:从存储器里取出需要操作的数字,然后进行运算,再将结果写入存储器里。就这么简单。 比如说,我们需要计算1+2=_。首先我们需要从存储器里获得1和2这两个数,然后将这两个数进行加法运算,最后再将结构3写入存储器里。 看似平凡的三个步骤,却暗藏着玄机。根据现在的处理器和存储器结构,做一个加法运算的时间大概需要1个周期,而访问一次内存需要的大概是500个周期。这是500倍的差距。这只是读写内存,而对硬盘的读写所需要的时间比内存还要多100,000倍! 程序的差异性就主要体现在它们对处理器和存储器读写的不同需求上。有些程序主要的执行时间花在了处理器的运算上,这些就是CPU-Bound的程序,而有些花在处理器读写(更一般地,输入输出,Input/Output, I/O)上,这就是I/O-Bound。 下面的图可能更形象一些: 在图中,黑色的块代表处理器在计算,浅色的块代表正在进行I/O读写。 ———-科普结束———- 下面进入正题。 这些枯燥的叙述可能还不足以点燃你对I/O-Bound的仇恨,假如它发生在你的生活中呢? 处理器的计算就好比我们办正事,而I/O读写就好比花在路上或者是排队的时间。假设你要拍毕业证了照片了,而学院的老师以管理小学生的办法要求你们明天上午9点集合,统一拍照。好吧,第二天你起晚了,到了指定的地点发现已经有一长串的队伍拍在那里了。你等啊等,不时拿出手机上会儿网,和同学聊会儿天,看看美女,再骂两句前面插队的人,在排了两个小时的队后,终于轮到你了。你刚端坐在椅子上,还想再调整一下姿势,只见闪光灯一闪,然后就听到一个似曾相识的声音:“下一个!” 拍照的时间不到一分钟,你却等了2个小时,先别急着骂街。你花在排队等待的时间只是办正事时间的120倍而已,想一想CPU同学,每时每刻都在忍受这大于500倍的I/O-Bound程序还这么任劳任怨,真是精神可嘉。只可惜CPU是老外发明的,要不然它早就获得五一劳动奖章了。 类似这样的事情每天都在发生,我们的时间,甚至生命每时每刻都在被浪费着。今天我去上海办签证,真正递送签证的时间也就只有15分钟,但我从早晨8点出门,晚上8点才回来。其他时间都花在排队买票、等车、坐车、认路上了。这个时间差距也足有48倍。 认清了I/O-Bound工作的真实面目,你一定像我一样深深地恨上它了吧。彻底摆平它是不大可能的,我们只能尽可能使它浪费的时间减小的最少。如何做到呢?先让我们来看看计算机设计者们是如何做的,因为他们也同样痛恨I/O-Bound的工作。 最土最暴力的方法就是减少I/O操作的时间,比如减少访问存储器所需要的时间。但这种提升空间毕竟有限而且成本昂贵。我们也可以这样做,下次去上海的时候就直接打的,这样就省去认路、买票、等车的时间了。这样做需要付出的代价也是极大的,可能就是你接下去几个星期就要啃馒头了。 还有一种方法就是利用时空的局限性,顺便帮别人也把事办了。计算机中的缓存(Cache)就是基于这种考虑设计的,取一个操作数的时候,顺便把其他操作数也取到了,而且以后再用到的时候就不用再花时间取了。当然,聪明的我们也在用着这种方法,只是不知道而已。你去食堂吃饭的时候,同学经常让你帮他们打包,你就在无形中减少着他们因为I/O-Bound所浪费的时间——至少,他们不用再去食堂、排队、打饭、找座位了。而且还可以为自己攒人品哦。你要是顺便再多打一份,留着晚饭吃(如果不嫌凉的话)就更像缓存的行为了。 一种最上档次方法就是同时进行多任务。对处理器来说,它可以在等待一个程序I/O操作的同时为另一个程序做运算,就像右图。这样,处理器可以说”随时都在办正事“,并没有浪费时间。当然,这需要巧妙的调度。我么当然也可以做到,甚至已经做到了。当我们排长队或者坐车的时候,我们可以做一些”CPU-Bound“的工作,比如读读论文、看看闲书、和女朋友煲电话粥、和旁边美女搭个讪等等。充分利用时间,决不让它无故地浪费。 可惜我一个都做不到,一坐上车,就浑身不舒服。只能听听京剧,然后就睡着了。 本文所有图片来自这里。

终极计算之梦

注意:这篇文章是我这学期“计算机前沿技术讲座”的期末报告。转载请一定注明出处,否则会被认为是抄袭的,有嘴也说不清。 自从亚里斯多德的时代开始,人们探寻自身及宇宙的征途就从未停止。两千多年来,无数的物理学家都试图用一个简洁的定律解释宇宙万物,从伽利略、开普勒到牛顿的万有引力,从爱因斯坦的广义相对论,到玻尔等人的量子力学,再到温伯格等人的超弦理论,解释万物的终极理论正一点点地浮出水面。 这就是物理学家,乃至全人类的终极理论之梦。然而,作为计算机科学工作者,我们也有自己的终极梦想——终极计算之梦。 人的本性是贪婪的,正因如此,我们对计算机的要求从没有得到过满足。人们想让计算机变得更快,而它也正像我们希望的那样变得越来越快了。而我们的终极计算之梦就是如此吗? 让我们回到计算机的基本模型——图灵机。在这个模型中,有一条数据带、一个可以左右移动读写头以及一系列状态和转移函数。机器从数据带中读到一个数据,根据当前的状态和输入的数据跳转到下一个状态或保持当前状态,与此同时,可以输出数据。 这种“自动机”的加强版模型能做一些“智能”的运算,例如判定一个字符串是否是回文、算术运算、逻辑运算等等。人们开始被这种“强大”的自动计算机震惊了。当然,你也可以训练一只狗来做一些简单的算术运算,但这只是一种条件反射的作用。图灵机可以做相当复杂的算术运算,而且速度比人脑快很多,难道说它真的具有“智能”了吗? 计算机和人脑是如此得相似——都有输入、输出、处理中心。对人脑来说,我们通过眼睛、耳朵、鼻子、皮肤来采集输入信息,通过大脑分析,再通过嘴、四肢来产生输出信息。或许唯一不同的是我们有自我的意识,而自我意识是什么?这个问题先就此打住,否则就成为讨论哲学问题了。这种相似性,使得几代计算机科学家都在做着一个努力:让电脑像人脑一样工作。 或许这并不是计算机被发明的初衷,但它俨然已经成为了我们的终极计算之梦。 再深入地想一下,除了前面提到的自我意识之外,我们会发现计算机和人脑之间有很大的差异。首先就是性能上的差异。计算机更适合做那些死板的工作,当我们把一套算法输入给计算机后,它就会飞快地按照这个算法进行计算。例如,我们要找一幅的图中的最短路径(这幅图很复杂,以至于我们不可能一眼就看出最短路径),当我们把这幅图和相应的算法(例如Dijkstra算法)输入给一个计算机,它就开始疯狂地、严格地依据算法按部就班地计算,并且会在一个不长的时间内给出答案。 那么,试想一下如果让我们人来找最短路径该怎么办?我们同样面对一幅很复杂的图。当然,会有人用投机的方法直观地给出一条最短路径,但这总是不可靠的。一个“不聪明”的办法就是按照Dijkstra算法一步一步来计算。当然,我们每一步都要用一种方式(纸和笔)记录路径的信息。最终,我们也总能找到一条最短路径,但正如你想象的,我们花的时间比计算机要多很多很多。 上面说的是一个人脑不如计算机的例子。那么,有人脑超过计算机的的例子吗?当然有,而且它们生活中无处不在。想像一下我们平时上网时总会遇到一个讨厌的东西——验证码。经过痛苦地辨认,我们最终还是认出了藏在图形里面扭曲模糊了的字母数字。此刻,你可能在责备网站的管理员多此一举。殊不知,这是为了防止计算机程序的恶意注册才设置的。也就是说:计算机没法认出验证码。或许你最近听说过某家的验证码被攻破了之类的新闻,但总体来说,人们还没有想出一个通用的方来使计算机认出验证码,否则就辜负了验证码的由来了——完全图灵测试。 你一定已经听说过这个名词,把一台计算机和一个人分别关在小黑屋里,然后有另一个人向这它们问问题。当提问的人分不出哪个是人哪个是计算机时,我们说这台计算机通过了图灵测试。所以,现在最简单的提问方式就是给他们一套验证码图片,能认出来的就是人,否则是计算机。 从理论上讲,计算机可能通过图灵测试吗?至少据我所知,这个问题还没有确切的答案。我们不得不回到深奥的理论上来。 我们假设存在一个数学模型可以描述人的大脑行为,那么,根据这个模型语言的完备性,我们可以很容易地判断图灵机究竟能否模拟人脑。然而,如果根本就没有可以描述人类大脑的数学模型呢?“没有”是个很模糊的概念,也许某一天数学家可以证明,人类大脑的行为是无法用数学模型甚至任何语言描述的。这听起来很荒唐,或许这正是我们的“终极计算之梦”的答案。