章前问题
初级问题
硬件和软件的区别是什么?
答:硬件是看得见摸得着的设备,比如计算机主机、显示器、键盘等。而软件是计算机所执行的程序,即指令和数据。软件本身是看不见的。
解释:硬件( Hardware) 代表“硬的东西”, 而软件( Software)代表“软的东西”。 是硬的还是软的取决于眼睛能否看得到, 或者实际上能否用手摸到。
中级问题
存储字符串“中国”需要几个字节?
答:在 GBK 字符编码下,存储“中国”需要 4 个字节。
解释:存储汉字时, 字符编码不同, 汉字所占用的字节数也就不同。 在 GBK 字符编码下, 一个汉字占用 2 个字节。 而在 UTF-8 字符编码下, 一个汉字占用 3 个字节。
高级问题
什么是编码(Code)?
答:通常将为了便于计算机处理而经过数字化处理的信息称作编码。
解释:计算机内部会把所有的信息都当成数字来处理, 尽管有些信息本来不是数字。 用于表示字符的数字是“字符编码”, 用于表示颜色的数字是“颜色编码”。
本章重点
现在的计算机看起来好像是种高度复杂的机器,可是其基本的构造却简单得令人惊讶。在认识计算机时,需要把握的最基础的要点只有三个,我们就将这三个要点称为“计算机的三大原则”吧。无论是多么高深、多么难懂的最新技术,都可以对照着这三大原则来解释说明。只要了解了计算机的三大原则,就会感到眼前豁然开朗了,计算机也比以往更加贴近自己了,就连新技术接连不断诞生的原因也明白了。
本书以本章介绍的计算机的三大原则为基础,内容延伸至硬件和软件、编程、数据库、网络以及计算机系统。在阅读之后的章节时,也请诸位时常将计算机的三大原则放在心上。
计算机的三个根本性基础
- 计算机是执行输入、运算、输出的机器
- 程序是指令和数据的集合
- 计算机的处理方式有时与人们的思维习惯不同
计算机是由硬件和软件组成的。 诸位可以把硬件和软件的区别理解成游戏机( 硬件) 和收录在 CD-ROM 中的游戏( 软件) 的区别。 这样就能理解硬件和软件各自的基础了( 三大原则中的第一点和第二点)。
在此之上, 计算机有计算机的处理方式也是一条重要的原则。 而且请诸位注意, 计算机的处理方式往往不符合人们的思维习惯( 三大原则中的第三点)。
输入、运算、输出是硬件的基础(第一基础)
首先从硬件的基础开始介绍。 从硬件上来看, 可以说计算机是执行输入、 运算、 输出三种操作的机器。 计算机的硬件由大量的 IC( Integrated Circuit, 集成电路) 组成( 如图 1.1 所示)。 每块 IC 上都带有许多引脚。 这些引脚有的用于输入, 有的用于输出。 IC 会在其内部对外部输入的信息进行运算, 并把运算结果输出到外部。
IC( Integrated Circuit, 集成电路)
所有的硬件都是由 一个集成电路或一些集成电路 组成。
硬件做的事(简单来看,具体做了什么运算我们先不追究)就是:
输入——》运算——》输出
集成电路IC输入、输出 自然需要引脚(导线也行),从下图可以看,硬件下面伸出
来的一条条金属就是硬件里面集成电路IC的引脚,自然就是用来输入输出的。
由此引申出:计算机是更多的集成电路IC组成,其中甚至有很多硬件(本质也是
集成电路),因此计算机本质上做的事也是:输入——》运算——》输出
输入:也许有人会说不是吧,我打个游戏点个鼠标。。。没输入呀,但是其实这些
你的这些操作本质上就是输入来的,只是前人们为了能让更多的人能使用计算机而
发明的键盘鼠标,为的就是简化输入,方便大众使用。不然我想现在不会那么多人
喜欢打游戏了,毕竟每一个操作都是靠往计算机塞打了孔的纸带,甚至更离谱。
运算:也许有人会说不是吧,我想说不需要进行运算的话,对于计算机,最终接受
的就是一些01,如果不进行运算的话,输出来的还是01,那跟我找条电线,一头输入
高低电平,另一个输出高低电平有什么区别。
输出:也许有人会说不是吧,我想说,我们显示屏看到的就都是输出(同样源于前人
的科技)。


软件是指令和数据的集合(第二基础)
下面介绍软件, 即程序的基础。 所谓程序, 其实非常简单, 只不
过是指令和数据的集合。 无论程序多么高深、 多么复杂, 其内容也都是
指令和数据。 所谓指令, 就是控制计算机进行输入、 运算、 输出的命令。
把向计算机发出的指令一条条列出来, 就得到了程序。
程序中的数据分为两类, 一类是作为指令执行对象的输入数据,
一类是从指令的执行结果得到的输出数据。
软件本质上就是一个程序,这个程序由一些 指令和数据 组成,指令自然就是用来控制计算机进行输入、 运算、 输出的命令,而数据就是计算机操作的东西。
程序需要编译转换成机器语言后,计算机才认识并执行。

编译转换成机器语言

对计算机来说什么都是数字(第三基础)
计算机本身只不过是为我们处理特定工作的机器。 如果计算机能自己干活
的话, 那么笔者一定会买几百台, 让它们先替自己完成一整年的工作。
但是, 并没有这种会挣钱的计算机, 计算机终究只是受人支配的工具。
迄今为止, 使用计算机的目的就是为了提高手工作业的效率。 例
如, 文字处理软件可以提高编写文档的效率; 电子邮件可以提高传统邮
件寄送的效率。 总之, 作为可以提高工作效率的工具, 有些靠手工作
业完成的业务可以直接交给计算机处理。
计算机就是个傻子,它只认识它的01,但是它超级超级超级快,我们就是看到了这个优点,所以希望它帮我计算,那你如果试图跟它直接对话的话,那简直痴心妄想,用鸟语都不行
那我们去对话呢?(比如怎么去表示数字、文字、颜色呢?)
因为计算机是个傻子,又只认识01,我们又想叫它帮忙,那自然得委屈一下用它看得懂得方式,例如:
告诉它“8”,我们用“1000"。
告诉它颜色,我们用“0,0,255” 表示蓝色, 用“255,0,0” 表示红色, 用“255,0,255” 表示由蓝色和红色混合而成的紫色。
只要理解了三大原则,即使遇到难懂的最新技术,也能轻松应对
这里摘录了一段有关 .NET 技术的介绍, .NET 是微软公司率先提出
的一种新技术。 如果要正式地介绍 .NET 技术, 就会像下面这样进行说明。
【有关 .NET 的说明之一】
微软公司率先提出了作为新一代互联网平台的 .NET 技术。 作为
.NET 核心的 XML Web 服务使用通用技术 SOAP、 XML, 促使企业间
的计算机协同工作。
真是不好理解的一段话啊。 可是如果把 .NET 的核心技术对照着计
算机三大原则再介绍一遍的话, 就会像下面这样进行说明。
【有关 .NET 的说明之二】
计算机是执行程序的机器。 程序是指令和数据的集合。 为了使互
联网上相互连接的计算机能通过程序协同工作, 微软公司采用了 SOAP
以及 XML 规范。 SOAP 是关于调用指令的规范, XML 则是定义数据
格式的规范。
只要定义出了指令和数据的规范, 装有符合规范的程序的计算机
自然就可以相互协作了。 所谓计算机的协同工作指的是, 输入到一台
计算机中的数据, 可以通过互联网传送到与这台计算机相连的其他计
算机上执行运算, 运算所输出的结果再返回给这台计算机。 像这样部
署在其他计算机上能执行某种运算的程序就叫作 XML Web 服务。
这回怎么样? 应该变得容易理解了吧? 如果又想到了其他的问题,
比如“为什么不得不遵循 SOAP 和 XML 的规范呢?” 或者“实际看了看
SOAP 和 XML 的规范, 才发现也很复杂。” 那么就可以把答案归结为
“因为那些都是适合计算机的处理方式”。
很多技术的开发,归根结底都会回归 计算机的三大原则,我们可以结合三大原则对技术进行理解,虽然技术详细可能会很复杂,但是我们以 计算机的三大原则 进行理解,可以以大的视野去得知该技术的边界,觉得技术详细部分,我们可以再满满学习。
为了贴近人类,计算机在不断地进化
围绕着计算机的技术正在以狂奔般的速度不断进化, 与其说是日
新月异, 倒不如说是“秒新分异”。 虽然也许有人会觉得眼前的已经够
用了, 希望能停留在现有的技术水平上。 但是计算机的进化是不会停
止的, 因为计算机还远远没有到达完善的地步。
计算机进化的目的只有一个——与人类更加相近。 要想贴近人类, 就
必须从计算机的处理方式中摒弃不符合人们思维习惯的部分。
举例来说, 键盘这种不好用的输入设备进化成了好用的鼠标。 平
面的 2D( 二维) 游戏进化成了立体的 3D( 三维) 游戏。 无论是哪一种
进化, 都是为了使计算机的处理方式更加贴近人类。
这样发展下去的话, 也许计算机进化的最终形态就是机器人了,
有着与人类一样的外表, 可以使用人类的语言。
例如在 1985 年茨城县筑波市举办的筑波世博会上, 就展示出了一台用 CCD 照相机
识别乐谱, 弹奏钢琴的机器人。
若与十几年前相比, 诸位身边的个人计算机也在逐渐贴近人类。
20 世纪 80 年代中期盛行的个人计算机操作系统是 MS-DOS, 其操作方
法是靠在全黑的画面上敲入字符, 把命令传给计算机。 进入 90 年代
后, MS-DOS 进化成了 Windows, 用户可以在图形界面上通过鼠标的
操作直观地下达命令( 如图 1.3 所示)。 开发出 Windows 的美国微软公
司, 正将目标锁定在用户体验( User Experience) 上, 旨在开发出超过
现有 Windows、 更加贴近人类的用户界面( 计算机的操作方法)。
Windows XP 和 Office XP 末尾的 XP, 代表的就是 Experience( 体验)。
Windows 若能这样不断进化下去, 早晚会有一天, 面向个人计算机的
语音输入和手写输入等技术将变得极为普及。

编程方法也在进化,
进化的成果是诞生了两种编程方法, 面向组件编程( Component Based
Programming) 和面向对象编程( Object Oriented Programming)。 这两者
的进化目标一致, 都是使程序员可以在编程中继续沿用人类创造事物
时的方法。 面向组件编程的方法是通过将组件( 程序的零件) 组装到一
起完成程序; 面向对象编程的方法是先如实地对现实世界的业务建模,
之后再把模型搬到程序中。 使用符合人类思维习惯的编程方法, 可以
实现高效率的开发。
偏偏有这类程序员, 他们对面向组件编程敬而远之, 明明
有各种各样现成的组件可供使用, 却什么功能都要自己亲手做, 仿佛
不这样编程就不舒心。 还有的程序员误认为面向对象编程难以理解。
像这样的程序员人数还不少, 特别是在昔日的计算机发烧友当中。 总
之就是因为他们太习惯于配合计算机的处理方式了, 反倒认为计算机
贴近人类这一发展趋势是在添乱。
计算机的技术一直在进化,主要为的就是让人们能以更加贴近人类的方式去操作计算机,例如:上方的机器人、语音识别、人脸识别等等。但是要记住的是,这些技术内部核心确是相当复杂的操作,因为无论你输入的是语言、图像,最终都要经过处理变成01数字才能给计算机,计算机再帮你处理(可能会相当复杂,数据量可能也会特别大)后输出,可见技术的伟大!
本文介绍了计算机的基本构造和原理,包括硬件的输入、运算、输出过程,软件作为指令和数据的集合,以及计算机处理方式的特点。通过理解这些基本原则,有助于掌握计算机科学的核心概念。
446

被折叠的 条评论
为什么被折叠?



