一、计算机的三个根本性基础
1.计算机是执行输入、运算、输出的机器
2.程序是指令和数据的集合
3.计算机的处理方式有时与人们的思维习惯不同
计算机是由硬件和软件组成的。硬件是看的见、摸得着的设备,比如计算机主机、显示器、键盘等。而软件是计算机所执行的程序,即指令和数据。软件本身是看不见的。
二、输入、运算、输出是硬件的基础
从硬件上看,计算机是执行输入、运算、输出的机器。计算机的硬件由大量IC组成。每块IC都带有很多引脚。这些引脚有的用于输入、有的用于输出。IC会在其内部对外部输入的信息进行运算,并把其运算结果输出到外部。
无论多么复杂的功能,都是通过组合一个又一个由输入、运算、输出构成的流程单位来实现的。如果打算用计算机来做点什么的话,就要考虑该如何进行输入、如何获取输出以及进行怎样的运算才能从输入得到输出。
输入、运算、输出三者必须成套出现,缺一不可。这样说的原因有几点。首先,现在计算机还没有发展到能通过自发的思考创造出信息的地步。因此不输入信息,计算机就不能工作。所以,输入是必不可少的。其次,计算机不可能不执行任何运算。如果只是使输入的信息绕过运算环节直接输出,那么这就是电线而不是计算机了。可以说,不进行运算,计算机也就没有什么存在的意义了。最后,如果输入的信息经过运算,那么运算结果就必然要输出。如果不输出结果,那么这也不是计算机而是堆积信息的垃圾箱了。因此,输出也必不可少。
三、软件是指令和数据的集合
下面介绍软件,即程序的基础。所谓程序,其实非常简单,只不过是指令和数据的集合。无论程序多么高深、多么复杂,其内容也都是指令和数据。所谓指令,就是控制计算机进行输入、运算、输出的命令。把向计算机发出的指令一条条列出来,就得到了程序。这里成套出现的输入、运算、输出,就是之前在硬件的基础一节中说明过的流程。向计算机发出的指令与计算机硬件上的行为一一对应是理所当然的。
在程序设计中,会为一组指令赋予一个名字,可以称之为“函数”。
程序中的数据分为两类,一类是作为指令执行对象的输入数据,一类是从指令的执行结果得到的输出数据。在编程时程序员会为数据赋予名字,称其为“变量”。因为计算机是先把所有的信息都表示成数字后才对其进行运算,所以编程语言的语法类似数学数学算式也就不足为奇了。
下面我们举一个例子作为证据来证明程序是指令和数据的集合。请诸位看代码清单1.1。这里列出了一段用C语言编写的程序。第一行的"int a, b, c;"表示接下来要使用名为a、b、c的整数变量,其中int是integer(整数)的缩写,用于告诉计算机“要用的是整数”。下一行的“a = 10;"表示把整数10赋值给变量a。同样地,”b = 20;“表示把整数20赋值给变量b。等号“=”是赋值给变量的指令。再来看最后一行“c = Average(a,b);”,这一行表示把变量a和b传给函数的参数,并将运算结果赋值给变量c。其中使用了一个名为Average的函数,它的作用是返回两个参数的平均值。
无论程序多么复杂,都只是指令和数据的集合。在一般的编程过程中,都要先编译再执行。所谓编译就是把用C语言等编程语言编写的文件(源文件)转换成用机器语言(原生代码)编写的文件。假设我们先把代码清单1.1中的代码保存到文件MyProg.c中,然后经过编译就可以生成可执行的程序文件MyProg.exe了。接下来使用能查看文件内容的工具查看MyProg.exe,其内容应该与代码清单1.2类似。可以看到里面仅仅是数值的罗列(此处用十六进制数表示)。
代码清单1.2中的每个数值要么是指令,要么是数据。
四、对计算机来说什么都是数字
计算机有计算机的处理方法,这是三大原则中的最后一点。计算机本身只不过是为我们处理特定工作的机器。如果计算机能自己干活的话,那么笔者一定会买几百台,让他们先替自己完成一年的工作。但是,目前并没有这种会挣钱的计算机,计算机终究只是受人支配的工具。
迄今为止,使用计算机的目的就是为了提高手工作业的效率。例如,文字处理软件可以提高编写文档的效率;电子邮件可以提高传统邮件寄送的效率。总之,作为可以提高工作效率的工具,有些靠手工作业完成的业务可以直接交给计算机处理。但是也有很多手工作业无法直接由计算机处理。也就是说,在用计算机代替手工作业的过程中,要想顺应计算机的处理方法,有时就要违背人们的思维习惯。
用数字表示所有信息,这就是一个很具有代表性的计算机式的处理方法,这一点也正是和人类的思维习惯最不一样的地方。
五、只要理解了三大原则,即使遇到难懂的最新技术,也能轻松应对
有关计算机三大原则的说明到此结束。只要理解了这三大原则,即使遇到难懂的最新技术,也能轻松应对。下面就给诸位看一个具体的例子。这里摘录了一段有关.NET技术的介绍,.NET是微软公司率先提出的一种新技术。如果要正式地介绍.NET技术,就会像下面这样说明。
【有关.NET的说明之一】
微软公司率先提出了作为新一代互联网平台的.NET技术。作为.NET核心的XML Web服务使用通用技术SOAP、XML,促使企业间的计算机协同工作。
【有关.NET的说明之二】
计算机是执行程序的机器。程序是指令和数据的集合。为了使互联网上相互连接的计算机能通过程序协同工作,微软公司采用了SOAP以及XML规范。SOAP是关于调用指令的规范,XML则是定义数据格式的规范。
只要定义出了指令和数据的规范,装有符合规范的程序的计算机自然就可以相互协作了。所谓计算机的协同工作指的是,输入到一台计算机中的数据,可以通过互联网传送到与这台计算机相连的其他计算机上执行运算,运算所输出的结果再返回给这台计算机。像这样部署在其他计算机上能执行某种运算的程序就叫做XML Web服务。
六、为了贴近人类,计算机在不断地进化
围绕着计算机的技术正在以狂奔般的速度不断进化。虽然也许有人会觉得眼前的已经够用了,希望能停留在现有的技术水平上。但是计算机的进化是不会停止的,因为计算机还远远没有到达完善的地步。
计算机进化的目的只有一个——与人类更加相近。想要贴近人类,就必须从计算机的处理方式中摒弃不符合人们思维习惯的部分。
若与十几年前相比,诸位身边的个人计算机也在逐渐贴近人类。计算机操作系统从20世纪80年代的MS-DOS进化成了Windows,用户可以在图形界面上通过鼠标的操作直观地下达命令。开发出Windows的美国微软公司,正将目标锁定在用户体验上,旨在开发出超过现有Windows、更贴近人类的用户界面。Windows若能这样不断的进化下去,早晚有一天,面向个人计算机的语音输入和手写输入等技术将变得极为普及。
诸位读者中应该也有对编程感兴趣的人吧。编程方法也在进化,进化的成果是诞生了两种编程方法,面向组件编程和面向对象编程。这两者的进化目标一致,都是使程序员可以在编程中继续沿用人类创造事物时的方法。面向组件编程的方法是通过将组件组装到一起完成程序;面向对象编程的方法是先如实地对现实世界的业务建模,之后再把模型搬到程序中。使用符合人类思维习惯的编程方法,可以实现高效率的开发。
七、预习下章
在本章最后先简单介绍下计算机硬件的组成要素。如下图1.4,体会一下其中要点。
如图所示,计算机内部主要由被称作IC的元件组成。虽然在IC家族当中有功能各异的各种IC,但是在这里希望诸位记住的只有三种:CPU(处理器)、内存以及I/O。
CPU是计算机的大脑,在其内部可对数据执行运算并控制内存和I/O。内存用于存储指令和数据。I/O负责把键盘、鼠标、显示器等周边设备和主机连接在一起,实现数据的输入与输出。
只要用电路把CPU、内存以及I/O上的引脚相互连接起来,为每块IC提供电源,再为CPU提供时钟信号,硬件上的计算机就组装起来了,还是非常简单的。所谓时钟信号,就是由内含晶振的、被称作时钟发生器的元件发出的滴答滴答的电信号。