只从我们普通人的日常生活中,我们也可以感受到计算机的功劳,一个开始只会做加减乘除计算器般的东西,现在,打字写文章、听歌唱歌、制作视频、玩游戏、上网、学习、搜资料。更不用说深蓝2打败了卡斯帕洛夫(97.5.11)阿尔法狗打败了李世石的新闻了。计算机的聪明强大,不是一个印象,而简直就是一个事实了。而我今天要说的话是:其实,计算机是最笨的东西!
说电脑笨,还不是说它不会感知,不会思考,没有感情。不是的,我的要求还没有这么苛刻。我想说的是,从基本原理上来说,电脑会的东西也太少太低级了!它只会固定的一些命令,还是诸如加、减、移位、存取,跟它呈现在屏幕里的东西有着根本的不同。它甚至根本不会也不懂在屏幕上显示。更不会知道如何绘画、如何唱歌、更不会推理!它不懂颜色、声音、文字这些东西,也不会懂得优化、结构、相对论。
相信我,从它会的东西来说,那个所谓的大脑:中央处理CPU,那些个指令,没有一个跟这些东西是直接相关的。没有显示指令、没有唱歌指令、也没有联网的指令....套用标题党们的句式就是:这是一个阴谋,这是一种假象,你完完全全被骗了!(注意,这些话不是反话)
然而计算机的作用实实在在的摆在哪里,这如何能自圆其说呢:
如同,七巧板这种玩具,本只是几块毫不起眼的小木片,经过巧手巧脑的变化组合,就成了千姿百态的象征。难道,七巧板有灵魂吗?所以说,七巧板是死的,如同计算机是笨的,是玩七巧板的人,如同,那些像你们一样编写程序的人,让他们灵动和聪明起来。
翻开x86的指令集看看吧,它真的只懂这非常基本的指令,而且,新的CPU设计技术里的RISC指令会更少。而且,这些指令与现在计算机外在表现的那些被处理的对象,风马牛不相及!
七巧板本身没什么神奇,但七巧板的设计是一个聪明的设计,如同,CPU的指令设计也是聪明的设计一样。有了那些看似风马牛不相及的低级指令,通过灵活的运用,你就能见到现在计算机神奇实现的一切。
比如,虽然没有显示指令,电子元件也不知道显示是什么,但,可以把灯的明灭作为通断的“显示”,可以设计一个对应屏幕点点阵的内存结构,结构中的点为1,就亮,为0,就灭,如此,可以把一幅画对应的明灭点阵存到内存里,屏幕上也就有相应的图画了。反正,你已经知道了,CPU懂存取指令的!
从这里,你可以推出两个结论来:不一定直接设计复杂的指令,复杂的功能,可以由简单的指令来拼合出来。而且,只要设计出一个好的有限的简单指令集,就可以拼合出你所需要的所有复杂功能来,从这里,你就已经看到了“软件”的理念和好处来:简单、丰富!也正是因为冯诺依曼发展出了程序存贮的概念,才有了计算机!这才是革命性的发明!
第二个推理就是:计算机还是欺骗了你,它所谓的聪明强大,其实都是模拟,如同,显示不是真正的显示,只是点阵的明灭,声音不是声音的录放,只是电子器件的“开关”震动!所有的一切,莫不如此!
计算机是最笨的东西,但这个最笨的家伙,因为可以编程,因为速度快,所以,成了最聪明的东西!这是我费了这么多口舌,想告诉你的!正如第一节课里说的:计算机的灵魂是软件,现在,我要说的是:软件的灵魂是程序员。