一部《红楼梦》,据说经学家看见“易”,道学家看见“淫”,才子看见“缠绵”,革命者看见“排满”,流言家看见宫闱秘事……我在读三年级时翻开《红楼梦》,看到是一堆的繁体字。如果现在我以程序员的眼光去“重逛”大观园,会看到什么样的红楼呢?我不知道,还是来说一说计算机的事吧。
什么是计算机?
有学员说:“上网的,上QQ的!玩游戏的!”。不能说完全不对,但这是以计算机的普通用户的眼光,我们现在是程序员——虽然还没有写过一行代码,但我们必须培养这方面的思维呀。
计算机,尤其是指PC(个人计算机),如果是台式机的话,通常有个显示器,还有个主机箱;如果是笔记本或平板的话,那就薄了点……还是不对,这是在从外观上描述什么叫计算机。
计算机,人类最新发明的一个伟大的工具,如今已经无处不在,并有处处地,深刻地影响着人类的生活。在漫漫的历史长河中,唯有“火、机械、电、电子”等等工具可以和计算机比肩……这一段好有深度,但怎么听怎么像是历史学家在说话。
不能浪费大家的时间了,让我们先搬出一位名人来。计算机界的名人。第一位搬出的,是有“计算机之父”之称的“约翰·冯·诺依曼”。祖师爷提出了两个现代计算机最为关键的理论:一是数字计算机的数制采用二进制;二是计算机应该按照程序顺序执行。人们称之为“冯·诺依曼体系结构”。
图 1-1冯•诺依曼 (John von Neumann,1903-1957)
冯·诺依曼明确提出此类计算机采用二进制数制,以充分发挥电子器件的工作特点,简化了机器的逻辑线路设计,如果这个只能算是一种思路话,那么冯同学把“程序”和“程序所处理的数据”都看成计算机的输入数据,并且可以保存到计算机内部,需要时可再次加载这样的想法,就是一种思想了。
计算机原本只用于科研(包括服务战争),但现在早就“旧时王谢堂前燕,飞入寻常百姓家”,全世界千家万户在使用的计算机,都采用冯·诺依曼当初所提出的架构。
符合“冯·诺依曼体系结构”的计算机,都需要拥有以下五大部件:运算器CA、逻辑控制器CC、存储器M、输入装置I和输出装置O。其中“存储器M”的存在尤为出彩。
结合名人的理论,我们用自己的话,想想什么是计算机。
首先,计算机由硬件和软件组成。至于什么叫硬件(什么叫软件,我们下一小节说明)。
接着,计算机硬件的组成,冯先知说了,有五个部分:“运算器CA、逻辑控制器CC、存储器M、输入装置I和输出装置O”。我们可以进一步归纳成三部分:
中央处理器(运算器+控制器)
存储设备(内存+外存)
输入/输出设备
学习未知的东西,最好是从已知的知识中获得启发,我们以汽车做比喻,它有什么中央处理器、存储设备和输入输出呢?
汽车的组成 | |
---|---|
输入设备 | 方向盘、油门、刹车板…… |
输出设备 | 车轮…… |
处理器 | 齿轮、轴承…… |
存储设备 | 油箱、水箱、蓄电瓶…… |
表格 1-1 汽车的输入、输出、存储设备及“中央处理器 ”
说明如下——
汽车的“I/O / 输入输出”设备
通过方向盘的输入,可输出车轮的转向……
通过油门或刹车板,可以输出车轮的转速……
不要混淆“输入输出设备”和“输入输出数据”。方向盘是设备,而你转方向盘时的动作中包含的力量扭矩、速度、力度,那些是输入数据。
车轮是输出设备,输出数据是车的速度,车的行驶方向。
汽车的“CPU/ 中央处理器”
汽车处理器是引擎。有人说应该是驾驶员的大脑,这似是而非,人不是汽车的一部分,人是汽车的用户,同理,你使用计算机,但你不是计算机的中央处理器。
处理器的典型工作是“吃”进一些数据,然后“吐”出一些数据。吃与吐之间,存在某种既定逻辑的处理,从而体现到数据在输入前和输出后将发生某种可预测的变化,这些变化就是处理的成果。我们的胃就是一台强大的处理器——当你还不是程序员时,你应该没有这么思考过你的五脏六腑。
“处理器”的定义明白了,那又为什么要加一个“中央”来修饰呢?一台设备往往有多个处理器,但如果其中一个连接设备的主要或多数输入输出设备时,被称作“中央处理器”。人的中央处理器应该是大脑,它通过神经连接、控制人体。
基于上述解释,对汽车而言,直接或间接接受“方向盘,刹车板、油门”等这些输入、并将动力输出“车轮”的引擎和外部各类连杆,可称为它的中央处理器。当你踩下油门,同时把方向盘打向左,那些齿轮、轴承等设备,忠实而精确进行了运算,于是车轮向左一拐,并加速飞驰——在路的右边,是万丈悬崖。处理器必须竭尽全力提供精确可控的计算,你理解吗?
汽车的存储设备
计算机的存储设备分为“内存”和“外存”。油箱、水箱、蓄电瓶之类的设备,存储某种材料,必要时供引擎直接或间接使用。类似引擎对油、水、电根据需要每次取一些,并集中在汽缸内混合处理。比如:引擎不会蠢到直接在油箱中加电,所以汽缸可以当成是“内存”。
内存当然也很重要,智能手机内存不够大,《愤怒的小鸟》就会玩起来很卡,汽车的内存不够大,你的车就跑得不猛。
我们将更多的计算机原理级别的内容,放在后面第4章中。这一小节的内容仅讲到这里,也许你对“什么计算机”还有些模糊,不过我相信你对于我们满大街跑的汽车,一定有了新的认识。没错,当你习惯用“程序员”的眼光去这个世界,你一定会惊奇的发现:原来世间到处是输入、输出设备,到处都是处理器,到处是存储设备。站起来走走,重新鉴赏一遍家里的各类电器,或者干脆就是马桶……看出点什么了吗?
不过,如果到处是带有“处理器、输入输出、存储”的设备,那计算机器的特点又是什么呢?
美国有个电脑神童说:“凡是摔到地上会坏的就是硬件”,似乎有道理,但一旦硬件坏了,硬件所承载的数据,好像也会“消失”。想一想,新买的数码相机没用就摔坏是一种心疼,和女神春游拍了很多照片,回来的路上给摔坏了,又是一种心疼。那些照片数据算硬件还是软件呢?
另外,什么是“代码”?什么是“程序”?“代码”、“程序”、“软件”感觉有些傻傻分不清楚……