今天,计算机正在以惊人的速度发展变化着,变得越来越复杂而这期间产生了许多技术,但是人们并没有过多的时间去深入学习每一门技术。——前言
2020年,计算机依旧是世界所关注的热点,焦点话题;这不仅仅是时代所趋,更是未来的走向,但究竟什么是计算机,计算机究竟是怎样跑起来的呢?《计算机是怎样跑起来的》这本书告诉我了原因。
计算机是由硬件和软件组成的。我们也可以把硬件和软件的区别理解成游戏机(硬件)和收录在CD-ROM中的游戏(软件)的区别。这样就能理解硬件和软件各自的基础了(三大原则中的第一点和第二点)。在此之上,计算机有计算机的处理方式也是一条重要的原则,但是计算机的处理方式往往不符合人们的思维习惯;从硬件上来看,可以说计算机是执行输入、运算、输出三种操作的机器。。计算机的硬件由大量的IC(Integrated Circuit,集成电路)组成。每块IC上都带有许多引脚。这些引脚有的用于输入,有的用于输出。IC会在其内部对外部输入的信息进行运算,并把运算结果输出到外部,输入、运算、输出三者必须成套出现,缺一不可。(1)输入、运算、输出是硬件的基础;首先,现在的计算机还没有发展到能通过自发的思考创造出信息的地步。因此不输入信息,计算机就不能工作。所以,输入是必不可少的。其次,计算机不可能不执行任何运算。如果只是使输入的信息绕过运算环节直接输出,那么这就是电线而不是计算机了。可以说不进行运算,计算机也就没有什么存在的意义。最后,输入的信息如果经过了运算,那么运算结果就必然要输出。如果不输出结果,那么这也不是计算机而只是堆积信息的垃圾箱了。(2)软件是指令和数据的集合;下面介绍软件,即程序的基础。所谓程序,其实非常简单,只不过是指令和数据的集合。无论程序多么高深、多么复杂,其内容也都是指令和数据。所谓指令,就是控制计算机进行输入、运算、输出的命令。把向计算机发出的指令一条条列出来,就得到了程序。这里成套出现的输入、运算、输出,就是之前在硬件的基础一节中说明过的流程。向计算机发出的指令与计算机硬件上的行为一一对应是理所当然的。(3)对计算机来说什么都是数字;计算机有计算机的处理方法,这是三大原则中的最后一点。计算机本身只不过是为我们处理特定工作的机器。如果计算机能自己干活的话,那么笔者一定会买几百台,让它们先替自己完成一整年的工作。但是,并没有这种会挣钱的计算机,计算机终究只是受人支配的工具。
随着科学技术的不断进步,计算机也在不断的更新换代,围绕着计算机的技术正在以狂奔般的速度不断进化,与其说是日新月异,倒不如说是“秒新分异”。虽然也许有人会觉得眼前的已经够用了,希望能停留在现有的技术水平上。但是计算机的进化是不会停止的,因为计算机还远远没有到达完善的地步。计算机进化的目的只有一个——与人类更加相近。要想贴近人类,就必须从计算机的处理方式中摒弃不符合人们思维习惯的部分。举例来说,键盘这种不好用的输入设备进化成了好用的鼠标。平面的2D(二维)游戏进化成了立体的3D(三维)游戏。无论是哪一种进化,都是为了使计算机的处理方式更加贴近人类。这样发展下去的话,也许计算机进化的最终形态就是机器人了,有着与人类一样的外表,可以使用人类的语言。例如在1985年茨城县筑波市举办的筑波世博会上,就展示出了一台用CCD照相机识别乐谱,弹奏钢琴的机器人。也许有人会觉得:“数码音乐什么的用个人计算机不是也能完成吗?”但是这个发明的意义在于机器人能和人类做相同的事了。就在不久前,本田公司开发出的两足步行机器人也成为了热议的话题。也许又有人会觉得:“为什么非要特地用两只脚行走呢,装上轮子能动起来不也一样吗?”但是这个发明的意义还是在于机器人能和人类做相同的事了。有乐谱和钢琴就能演奏,人能走的道路或台阶它也能走,这样的机器人无疑才能更加方便地应用于人类社会。若与十几年前相比,诸位身边的个人计算机也在逐渐贴近人类。20世纪80年代中期盛行的个人计算机操作系统是MS-DOS,其操作方法是靠在全黑的画面上敲入字符,把命令传给计算机。进入90年代后,MS-DOS进化成了Windows,用户可以在图形界面上通过鼠标的操作直观地下达命令。开发出Windows的美国微软公司,正将目标锁定在用户体验(User Experience)上,旨在开发出超过现有W i n d o w s、更加贴近人类的用户界面(计算机的操作方法)。为了贴近人类,计算机在不断地进化;Windows XP和Office XP末尾的XP,代表的就是Experience(体验)。Windows若能这样不断进化下去,早晚会有一天,面向个人计算机的语音输入和手写输入等技术将变得极为普及。在这些技术普及的同时编程方法也在进化,进化的成果是诞生了两种编程方法,面向组件编程(Component Based Programming)和面向对象编程(Object Oriented Programming)。这两者的进化目标一致,都是使程序员可以在编程中继续沿用人类创造事物时的方法。面向组件编程的方法是通过将组件(程序的零件)组装到一起完成程序;面向对象编程的方法是先如实地对现实世界的业务建模,之后再把模型搬到程序中。使用符合人类思维习惯的编程方法,可以实现高效率的开发。
这本书不仅介绍了计算机的原理,也告诉了我计算机的组成,结构,以及它的语言,计算机有属于自己独特的语言;(1)机器语言,是最低级的语言,是由二进制码组成,是最早期的一种程序语言;(2)汇编语言,用助记符和地址符代替了二进制码,更易于编写;(3)高级语言,相对于汇编语言又上升了一步,更接近于自然语言,如C语言、Pascal、Java、C#等都是高级语言。计算机语言(Computer Language)指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机系统最大特征是指令通过一种语言传达给机器。为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规划,由这些字符和语法规则组成计算机各种指令(或各种语句)。这些就是计算机能接受的语言。不仅是汇编语言,用C语言、Java、BASIC等编程语言编写的程序,也都需要先转换成机器语言才能被执行。机器语言有时也叫作“原生代码”(Native Code)。这本书让我对计算机有了全新的认识,也让我对计算机的看法有了翻天覆地的变化,它让我对计算机这门大类专业的了解更加深刻,也让我对之前并不太喜欢的程序设计(代码)产生了些许的兴趣;[1]计算机包括硬件(外部的显示器、键盘、主机等,内部CPU、内存、I/O等)和软件(计算机所执行的程序,即指令和数据)。对于计算机来说什么都是数字,比如红色就是“255,0,0”,随着时代的进化,计算机也在不断进化,比如编程就有了面向组件编程(通过将组件组装到一起完成程序)和面向对象编程(如实对现实世界的业务建模,再把模型搬到程序中)。[2]机器语言(二进制)是处理器可以直接理解的编程语言,我们所学习的C语言、Basic、Java、C++等编程语言都需要在计算机底层转换成机器语言才可以被执行。[3]程序的流程分为三种(顺序执行、条件分支和循环),编写程序之前需要画流程图,先勾画粗略流程图,进而细化。流程图的方便之处在于它并不依赖于特定的编程语言,制作好流程图后可以用任何语言来描述它,编程语言只不过是将流程图上的流程用文字重现出来罢了。当程序指令繁多,使用结构块(解决条件分支和循环)进行结构化程序设计可以避免程序陷入到流程错综复杂的状态。[4]程序是用来在计算机上实现现实世界中的业务和娱乐活动的,它包括算法(处理问题的步骤)和数据结构(作为处理对象的数据的排列方式)。计算机是机械性的解决问题,所以它的所执行的步骤是明确且有限的,优秀的算法可以提升程序执行速度。我们可以运用主要的典型算法,比如除法(求最大公约数,从较大的数中减去较小的数,将结果写到较大数的下方,直到两者相等,这个数便是最大公约数)、埃拉托斯特尼筛法(判定素数,除以比他小的所有正整数)、顺序查找、二分查找、希尔查找、冒泡排序、快速排序等。除此之外,我们还要试着找出数字间的规律,善于借用“哨兵”实现优秀算法。[5]数据存储在内存中,而内存被分割成各个地址,依靠指定地址的方式编写程序很麻烦,所以我们使用变量把数据存储进内存。但要实现想要的算法,离散的变量也不行,所以数组成为了数据结构的基础,它是为了存储多个数据而在内存上集中分配出的一块内存空间,并且为这块空间整体赋予了一个名字。数组是一种直接利用内存物理结构的基本数据结构,大多数问题还是不能得到解决,这就要用到典型数据结构了(栈、队列、链表、二叉树等),实现链表和二叉树要通过“结构体”,即把若干个数据项汇集到一处并赋予其名字后所形成的一个整体,在其中放入指针可以让各个元素“把手拉起来”,这就变成了“自我引用的结构体”,此时便实现了数据结构的灵活排序、删除和插入。[6]面对对象编程(OOP)是一种能够提升编程效率、写出易于维护的代码的编程方法。大型程序中需要用到大量的函数和变量,把其中有关联的函数和变量汇集到一起编成“类”,通过把若干个类组装到一起便构成了一个完整的程序,来自各个领域的程序员编写的类组成“类库”,这大大提升程序的开发效率和可维护性,OOP的关键在于能否灵活地运用类!因此OOP具有继承、封装和多态性,类可以被看作是一个独立的饼干模具。[7]数据库就是数据的基地,它的构成要素包括数据文件、数据库管理系统(DBMS)和应用程序三部分。建立数据库结构要关系化、规范化,将一张大的数据表分割成多张小表,用主键和外键在表间建立关系,要避免重复存储相同的数据。[8]系统开发过程中的瀑布模型:开始→需求分析→外部设计→内部设计→程序设计→编码实现→测试→部署、维护→目标。成功的计算机系统应该是能完全满足客户需求的计算机系统。上面种种内容都让我感受到了计算机前所未有的魅力与价值,但以我目前的能力与眼界并不能完全理解上面的种种思维模式与逻辑关系,也不能完全读懂上面的学术语言,计算机的世界还在不断变化,我也要继续努力更上它的脚步。
《计算机是怎样跑起来的》,计算机是这样跑起来的,计算机的世界等待着我去探索,去追寻,去突破!(郑瑞)
公众号:pcren_cn(长按复制)


评论