第1章背景知识.docx

上传人:b****8 文档编号:11404764 上传时间:2023-02-28 格式:DOCX 页数:15 大小:137.82KB
下载 相关 举报
第1章背景知识.docx_第1页
第1页 / 共15页
第1章背景知识.docx_第2页
第2页 / 共15页
第1章背景知识.docx_第3页
第3页 / 共15页
第1章背景知识.docx_第4页
第4页 / 共15页
第1章背景知识.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第1章背景知识.docx

《第1章背景知识.docx》由会员分享,可在线阅读,更多相关《第1章背景知识.docx(15页珍藏版)》请在冰豆网上搜索。

第1章背景知识.docx

第1章背景知识

第1章背景知识

在未来几年里,互联网和计算机革命会带来极佳的就业机会和很有趣的挑战。

这些机会遍布在硬件、软件设计到市场形成的技术、以及企业活动的全部领域。

而挑战包括开发在各种不同类型计算机上运行的程序,以及开发成百上千行准确无误的代码(如:

放射疗法和网上拍卖系统)。

为了迎接这些大小挑战,大多数的计算机从业者都在使用面向对象设计的技术。

在本章中,介绍计算机和互联网的基本术语,以及面向对象设计的概念。

也介绍Java,一个已经在互联网的发展中扮演了重要角色的面向对象编程语言。

例如,使用Java,可以开发能提供动态图形和安全通信的、基于网络交互式的应用程序。

Java提供了广泛的可移植程序资源,使许多不同类型的应用都得以快速发展(比如:

多媒体,电子商务,无线通信)。

在本章末尾,安排了问题解决办法的讨论,以帮助读者建立软件解决的方案。

本章内容

•介绍硬件和软件术语。

•介绍高级编程语言。

•介绍Java编程、编译和运行。

•介绍面向对象设计的基本概念。

•提供有用的问题解决策略。

1.1引言

传统上,编程课本都是由一个显示“Hello,World.”的程序开始的。

这样做的原因是这个程序很简单,便于解释,而且其功能也值得讨论。

本书第一个Java程序和这个不同。

//作者:

J.P.Cohoon与J.W.Davidson

//目的:

在一个控制窗口中显示一段引用语

publicclassDisplayForecast{

//main():

应用程序入口

publicstaticvoidmain(String[]args){

System.out.print("Ithinkthereisaworldmarketfor");

System.out.println("maybefivecomputers.");

System.out.println("ThomasWatson,IBM,1943.");

}

}

这里取代有效的“Hello,World.”,程序引用了现在看来有些幽默的、一位IBM前任总裁在1942年的预言。

程序的输出如下:

Ithinkthereisaworldmarketformaybefivecomputers.

ThomasWatson,IBM,1943.

这体现了本书和典型Java教科书之间的差别,因为本书目标不仅是介绍Java语言,还想教如何有效的编程,而且,用一种充满趣味的方式来教。

有了明确的动机,学习起来会更容易。

在示例设计上考虑彼此的相关性,和各种类型读者的要求。

事实上,有位评论家提出警告,认为例子有时候过分注重趣味了。

有效的编程需要多种技能和对计算的全面了解。

⏹因为一个程序就是一组可在计算机上运行的指令,所以对计算机结构的基本了解很重要。

头脑中有一个计算机执行指令方式的模型,就可以更好地、形象化地想象软件操作,以及在设计新软件时需要哪些资源。

⏹由Web激活的软件,正迅速成为主导性的软件范例,因此,熟悉网络基础很必要。

⏹在开发软件时,标准的软件工程原则往往随之而至。

这些原则应用的基本方法是面向对象编程方法学。

这个重要方法学启发人们,按客观世界的方式去设想软件模型和交互。

⏹最后,也可能是最重要的,一定要会解决问题。

程序的设计、实施和测试就是用计算机系统去解决问题。

如果连编程者都不知道应该怎么做,就无法让计算机去完成任何事情。

为了成为一个能干的软件设计者,必需去理解计算机基本结构、软件、网络、软件工程实践和解决问题的基本方法。

因此,在分析任何程序之前,先学习以上提到的每个概念。

在以后的章节中,用Java语言提出、演示以及解释开发程序设计时,还将会对这些概念扩展。

1.2计算机结构

大多数计算机有四个主要部件:

中央处理单元、内存、输入设备和输出设备。

中央处理单元(CPU)是计算机的大脑,它是计算机进行计算和做出决定的地方。

内存是CPU处理的数据和软件所存放的地方。

实际上,它是CPU的基本工作空间和草稿本。

CPU不但从内存中提取信息,而且把信息暂时存放在内存中。

内存多表示计算机可以运行更大的应用软件,也能更快地完成任务。

通常,输入设备和输出设备用在计算机与用户之间,或计算机与其他计算机之间通信信息。

例如,键盘和鼠标是用户发请求的输入设备,而监控器和打印机是显示信息的输出设备。

数字计算机使用二进制系统,而不是十进制系统,来表达数字。

二进制系统只有两个数字:

0和1。

一个二进制的数字被称为一位(bit)。

采用二进制系统,是因为计算机的基本构造单元是开关,很像人们熟悉的电灯开/关。

开关的状态可用相应的数字的值0或1来表示。

在早期的计算机中,这些开关是由机械的继电器实现,结果机器庞大,占据了整个房间。

还需要专用的动力和冷却。

现在的计算机,开关是极小的晶体管。

因此,整个计算机可以装在单个硅芯片上。

这些芯片就叫做微处理器。

Intel的奔腾4微处理器,只占略大于1平方英寸的面积上,含有大约5500万个晶体管,如图1.1所示。

图1.1Intel奔腾4微处理器

二进制系统的计算原则与十进制系统的计算原则一样,都是与位有关的系统,就是说,一个数字的位显示了它对应的值。

举一个例子:

在十进制数4506中,5在百位上,因此它显示的值就是500。

从右边读这个数,每一位表示递增10倍。

这样,4506的值可以表达为:

4×103+5×102+0×101+6×100

二进制的工作基理相同,只是每一位表示递增2倍。

比如,二进制数1101代表十进制数13。

在谈论计算机存储时,存储大小用字节(byte)为单位,一个字节是8位(bit)。

现在来讨论科学家们所描述计算机的速度和存储容量的其他术语。

使用这些术语,来分析一台个人计算机的广告,以继续对计算机结构的介绍(参见图1.2)。

图1.2一个典型的个人计算机广告

1.2.1计算机的部件

说明一台计算机的速度时,计算机制造商有时会报告机器完成一个基本操作所需的时间。

在这些情况,用的时间单位有千分之一、百万分之一、十亿分之一和万亿分之一秒(见表1.1最常用的测量单位标准)。

现在计算机做大多数算术运算只需数ps(微微秒),预计在不远的将来,计算机能够在数fs(毫微微秒)内完成操作。

表1.1常用2的幂及其缩写

秒的分数

缩写

10−3

毫秒(millisecond,ms)

10−6

微秒(microsecond,µs)

10−9

毫微秒(nanosecond,ns)

10−12

微微秒(picosecond,ps)

10−15

毫微微秒(femtosecond,fs)

计算机制造商也用时钟速率(频率)来报告计算机的速度。

时钟速率表明计算机在一秒钟内能完成多少次操作,通常用赫兹(hertz)来表达(每秒的循环数)。

举个例子:

一台计算机的时钟速率是20亿赫兹,它可以每500ps(也就是:

1÷200亿秒)完成一次操作。

在表示赫兹值的时候,科学家们用表1.2中的前缀。

对上例来说,把计算机速度写成2GHz(念作“2gigahertz”)。

一般来说,时钟速率越高,表示计算机速度越快。

表1.2常用10的幂和它们的缩写

缩写

1000

k(kilo)

1000000

M(mega)

1000000000

G(giga)

1000000000000

T(tera)

关于容量或大小方面,计算机科学家们更喜欢用2的幂来计算。

因为计算机用二进制系统,用2的幂来计算很方便,表1.3显示了常用的2的幂。

按照表中所示,210的缩写为K,K是从词干“kilo”而来。

使用前缀kilo是因为1024近似于1000。

类似地,前缀mega用于220,因为其值(1 048 576)近似于1 000 000。

当使用这些单位来表明机器的存储容量时,实际上意味着精确的2的幂。

举例来说,一台机器有128兆字节内存就有128×220个字节,或134 217 728个字节的内存。

使用前缀表示不同的意思,有时候会带来混淆,但是,从上下文能告诉使用的是二进制还是十进制。

表1.3常用的2的幂及其缩写

2的幂

缩写

210

1024

K(kilo)

220

1048576

M(mega)

230

1073741824

G(giga)

240

1099511627776

T(tera)

1.2.2购买个人计算机

现在,已为查阅一个典型的个人计算机广告做好准备,大多数广告会列出计算机主要部件的规格。

图1.2包含了一个典型的个人计算机广告的规格。

广告的第1行描述计算机的微处理器。

这台计算机是有3.06GHz的Intel奔腾4微处理器,也就是说,这个微处理器每秒完成30.6亿次操作(也就是每次操作用了327ps)。

奔腾4微处理器有一个512千字节的高速缓冲存储器,高速缓冲存储器是用来存储当前用过和立即要用的信息和指令。

广告的第2行说明内存的大小和型号。

内存是CPU执行时存放数据和软件的地方。

这台机器的内存有512兆字节,对运行Windows操作系统来说足够。

一般说,内存越大越好,但对于普通用户,内存大于1GB,性能价格比就不合算了。

具体到这台计算机,它有一个DDRSDRAM内存。

DDR是doubledatarate的首字母缩写。

它意味着存储在DDR内存中的数据,会以两倍于非DDR内存的速率提供给CPU。

两倍数据速率的取得与跳绳游戏“doubledutch”相似。

取代一个时钟信号(也就是一条绳子),它采用了两个时钟信号(也就是两条绳子)来加倍数据传输的速率(也就是跳绳者必须以两倍快的速度跳)。

SDRAM代表synchronousdynamicrandomaccessmemory的首字母缩写。

SDRAM中DRAM指出存储二进制信息的技术类型。

在DRAM内存中,每一位数的1或0存储在电容器中,电容器是保持充电的装置。

如果该装置充了电,就代表二进制为1;如果没带电,就代表0。

在SDRAM中,synchronous表示内存的工作速度与CPU优化的时钟速率一致。

注意还有许多其他类型的内存。

有的快一些,有的慢一些。

广告的第3行给出了机器硬盘的说明(参见图1.3硬盘照片)。

硬盘是数据文件和软件存放的地方。

硬盘越大,可安装的软件就越多,可存储的数据也越多(如:

照片和音乐)。

广告说明硬盘的容量是200GB,而且硬盘与系统的连接使用UATA-100接口(ultra-advancedtechnologyattachment)。

该接口定义了数据从硬盘到CPU以及反向的速度。

UATA-100支持传输速率100MBps。

硬盘的其他参数是硬盘性能的进一步显示。

从旋转速率(7200RPM)可看出硬盘转得多快。

因为在数据被扫描以前,必须等待数据转到硬盘的读/写头下面,旋转速度影响读数据的时间,一个快的旋转速率对应短的延迟。

便宜的硬盘转速为5400RPM,昂贵的硬盘转速可以是10000RPM。

数据是通过一系列在硬盘上,能移动的读/写头写在硬盘上。

数据被写在称为磁道的同心圆上。

硬盘的另一个重要参数是寻道时间,寻道时间是头移动到访问磁道的平均时间。

广告说明,这台硬盘移动头到具体磁道的时间是9.0毫秒。

这个时间与内存的读写时间比起来是很长,从这个事实可以推断,硬盘读写要比内存读写慢得多。

广告第4行指出一个17英寸的液晶显示器(LCD)。

这种显示器通常被称为平板显示器(见图1.4)。

这些显示器显示图形的技术,与在一些手表和计算器中的一样。

另一种显示技术用了CRT(阴极射线管),大多数电视都用CRT技术。

与CRT显示器比较,LCD面板很轻,占用空间小。

现在LCDs比CTRs贵很多。

但是,由于厂家正在由CRTs向LCDs转产,LCD显示屏的价格正在下降。

图1.3硬盘驱动内部图1.4数字液晶显示器(Hewlett-Packard照片)

显示器最重要的两个特性是屏幕大小和分辨率。

通常显示器的可视面积从14英寸到24英寸。

分辨率是屏幕横向和纵向一英寸内,可显示像素点的数目。

每一个像素点代表“图形元素”。

分辨率越高,屏幕上的图像就越清晰。

大多数显示器支持1024×768的分辨率。

高端的显示器还会支持更高的分辨率,如1280×1024和1920×1200的分辨率。

显示的图像是用图形卡送到显示器上。

为显示高分辨率的图像,需要增加可观的资源,图形卡带有为显示图像而特殊设计的微处理器。

为区别于CPUs,这些微处理器常常称为图形处理单元GPU(graphicprocessingunits)。

广告第5行说明的GeForce4就是指GPU的类型,是由NVIDIA公司制造。

其他更流行的有ATITechnologies和Matrox制造的图形卡。

图形卡的一个关键特性是内存大小,图形卡内存的总量决定了可显示图像的分辨率、有多少种颜色可显示、屏幕的更新速度。

低端的图形卡有16~32MB内存,而高端的图形卡有128MB内存。

广告中所列的图形卡有64MB内存,可以很好地完成大多数应用,包括图形很强化的游戏。

广告中第6行和第7行指明有DVD驱动器和CD-RW驱动器。

DVD驱动器可以在计算机上播放DVD电影。

这个DVD驱动器不支持制作DVD,制作DVD的驱动器在市场上可以买到。

DVD和CD-RW的一个关键参数是数据读写的速度。

DVD和CD-RW驱动器的速度是第一次驱动器速度的倍数。

广告中所说的DVD驱动器的速率是16x,也就是说它可以以16倍第一次驱动器的速度读出。

CD-RW中的RW说明驱动器可以在CD上读写。

这种驱动器很流行,因为它们使消费者可以刻写自己的音乐CD,这也是保存文件的好方法。

一张CD可以存放650MB数据或几小时的音乐。

对CD-RW前的48x/24x/48x说明:

驱动器可以以48倍的速度往CD-R介质中写,以24倍的速度往CD-RW介质中写,以48倍的速度读盘。

(CD-R介质只能写一次,CD-RW介质可反复写。

广告第8行指明有一个56K的调制解调器modem(modulator/demodulator的缩写),使计算机可通过电话线与互联网连接。

56K显示了调制解调器传送数据的速率,56K是每秒钟可传送56千位。

但是,大多数56K的调制解调器达不到这个最高速率。

首先,大多数电话网络的最高速率,限制在每秒53千位。

其次,实际的速率依赖于其他一些因素,如电话线的线路状况(出现静电噪声或者干扰),以及与电话总公司设备的距离等。

广告第9行给出安装的操作系统,版本是WindowsXP家庭版。

WindowsXP有两个主要的变种:

家庭版和专业版。

专业版有附加特性:

用以保护有价值数据的文件系统加密、用户可以通过Internet访问远程计算机、移动计算机可连接到文件服务器的离线文件和文件夹。

操作系统

计算机还有其他的操作系统。

一个越来越流行的操作系统是Linux。

Linux常常被研究人员采用,而且用于致力于高端应用的计算机系统,如:

Web服务器,网络的网关和文件服务器。

Linux流行的一个主要原因是它的源代码免费公开。

通过访问源代码,Linux可以被改变以适于应用程序的具体需要。

有许多不同版本的Linux可用,最广泛使用的是RedHatLinux。

在互联网上去下载某个版本的Linux,要求有快速的网络连接。

因为Linux很大,使用宽带连接,下载也要几个小时。

广告最后一条说明有一个高速网卡。

如果,想在家里建一个自己的局域网,或使用与互联网的宽带连接,高速的网卡是很有用的。

宽带是通过电缆调制解调器或电话公司提供的数字用户线路(DSL)实现的高速连接。

不同于低速的电话调制解调器连接,电缆调制解调器和DSL服务提供的传输速率,可达到每秒钟几兆字节。

具体到广告上这张网卡,它可以每秒钟发送和接收10MB或100MB的数据。

不论哪一个速度,对家庭网络都已足够。

如果这台机器用于网络中,为其他机器提供服务(如:

文件存储和备份),值得去用更高的传输速率。

鉴于计算机网络,特别是互联网是如此重要,现在就来了解一下有关的网络知识。

1.3互联网计算

互联网的诞生和发展,从根本上改变了社会。

把互联网的影响与Gutenburg印刷术的影响相比较很有道理。

(译注:

GutenburgJohannes是15世纪德国活版印刷术发明人。

活版印刷术使信息的传播在价格上更易被人接受。

因此,信息可以被一个更广大的人群所接收。

结果,对那些统治者来说,限制信息接触就更困难。

信息接触的扩大推动了原有社会结构的根本变革。

互联网有相似的效果。

它使得大量信息可以很便宜地被一批巨大、并仍不断增长的人群所获得。

同样,互联网使统治者很难控制哪些信息可被人们访问和得到。

从社会基础上看,许多专家相信,这次信息的量变也会飞跃成又一次的社会结构的质变。

那么要问,什么是互联网,它又是怎样发展起来的?

互联网是一个支持计算机之间信息快速传递的庞大基础设施。

互联网由数千个的地方、区域、国家和国际的网络连接在一起,它是网络的网络。

因为互联网跨越国界,没有一个实体真正控制整个互联网。

但是,有一些组织负责互联网开发技术方面和制定标准。

互联网的起源,可追溯到20世纪60年代早期,一个美国政府的技术发展机构:

高级项目研究代理ARPA(AdvancedResearchProjectsAgency),在美国全国范围内资助工业界和大学实验室的研究。

为让实验室的科学家共享研究的成果资源,提高工作效率,把ARPA支持的不同实验室的计算机连成网络。

经过几年的开发,1969年ARPA网可以运行了。

第一个网络使四所大学的计算机相连(3所大学在加利福尼亚,1所在犹他)。

多年以来,ARPA网在连接的站点和所支持的应用数量上都不断增加。

1971年开发了ARPA网的第一个电子邮件应用。

还开发了许多用于文件传输和研究者远程运行应用软件的工具。

认识到计算机连网的价值后,在1986年,美国国家科学基金会(NationalScienceFoundation)建立了NSFNet。

(国家科学基金会是美国政府资助基础科学研究的代理机构。

)NSFNet是一个由大西洋到太平洋两岸的大学院校、研究实验室连接在一起的高速传输线。

最后,NSFNet将许多内部的网络连在一起,于是互联网这个词就悄悄进入了词典。

1990年,TimVerners-Lee开发了WorldWideWeb。

这时候,互联网的规模和使用开始成指数增长。

1.3.1网络

网络由一个连接计算机的方法,和一套计算机之间交换信息的规则组成。

连接的方法可以是用56K调制解调器的标准电话线,DSL连接,或使用网卡的连接。

图1.5显示了用两台计算机连成的一个家庭网络。

图1.5家庭网络与互联网连接

因为互联网是网络的网络,必须有一些机制把网络连接在一起。

连接是利用一种特殊计算机来完成,该特殊计算机称为路由器(router)。

路由器把局部的、或区域的网络连接到一条高速传输线上,这条传输线称为主干线(backbone)。

可以把主干线当作高速公路,车辆可以快速地从一个区域到另一个区域(上限为每秒10Gb)。

图1.6是一张普通互联网服务供应商的美国主干线路图。

图1.6美国主干网

路由器的工作是直接把信息互联到正确目的地。

路由器就像铁路的调度室。

调度决定列车(信息包)从哪一条铁轨(具体的网络)到达目的地。

由于路由器要处理的信息量巨大,路由器通常是专为处理网络信息而设计的计算机。

为了使计算机可以在网络上交流,必须有一套规则去管理数据的传送。

没有一套规则协议,计算机就不能有效地通信。

举个例子:

人们采用双向无线电通信谈话时,当一个人讲话完毕后,说“完毕(Over)”。

“完毕”是轮到另一个人讲话的信号。

讲话者想终止谈话时,就说“结束(Overandout)”。

这个通信的规则就称为通信协议。

互联网发展过程中的一个重要内容,就是开发有效的协议。

最重要的互联网协议是传输控制协议/网络协议TCP/IP(TransmissionControlProtocol/InternetProtocol)。

它们管理信息包在互联网中的发送。

TCP规定把信息分割成信息包,以及在信息送到目的地时,把信息包组合还原成原来的信息。

IP处理信息包的地址部分,保证信息能送到正确的目的地。

还有其他专门的协议。

这些协议大部分都是用TCP/IP实施。

互联网上常用的一些其他协议包括:

⏹文件传输协议FTP(FileTransferProtocol)指定计算机之间如何交换文件。

⏹简单邮件传输协议SMTP(SimpleMailTransferProtocol)指定电子邮件在网络中传递。

⏹邮政协议POP3(Postofficeprotocol)管理电子邮件在邮件阅读器(如:

Outlook和NetscapeCommunicator)和网络服务供应商(ISP)之间交换。

另一个网络信息访问协议IMAP(InternetMessageAccessprotocol)负责个人计算机与网络服务供应商之间电子邮件通信。

⏹超文本传输协议HTTP(HypertextTransferprotocol)是在WorldWideWeb(WWW)上,交换文件(文本、图像、声音、视频和其他多媒体文件)的一套规则。

指定点击文档中链接的相关活动。

⏹加密套接字协议层SSL(SecureSocketsLayer)是指定信息送到互联网之前,对信息加密的协议,在电子商务中广泛应用。

凡是用https开头的WWW网页地址都使用了SSL。

现在把注意力转到计算机系统的软件组成、以及Java为什么对未来软件的发展是如此重要。

1.4软件和Java语言

在互联网中,需要意识到的重要问题之一,是许多不同类型的计算机连接在网络上。

个人计算机、个人数字助理、移动电话、工作站和连接这些设备的主机——大型计算机。

这就要问,怎样在互联网中,开发出能在任何类型的计算机上运行的软件?

解决这个问题是设计Java程序语言的关键之一。

为理解这一问题和Java对网络计算的重要性,本节将讨论一个Java程序如何在一台连网的计算机上运行。

1.4.1编程语言

计算机本身不会做任何有用的事,必须有一个程序来指挥计算机完成指定的任务。

一个程序是告诉计算机该做什么的一个指令序列。

当计算机完成程序的指令时,就说程序被执行。

用语言写好的程序是专门为计算机发布命令而设计,把这种语言称为编程语言。

最原始的编程语言是机器语言。

一个机器语言程序或目标代码是计算机可以直接执行的程序。

每一条目标代码指令,对应于机器的一个基本操作。

一台机器的指令集是CPU类型惟一的二进制代码集。

因此,不同计算机用不同的机器语言。

Intel奔腾处理器懂得的机器语言,与IBMPowerPC处理器懂得的机器语言很不相同。

用机器语言编程的一个主要问题是非常枯燥,而且,直接用二进制代码编写很容易出错。

汇编语言编程略改进一点。

汇编语言是对机器语言指令编码符号化的语言。

如机器语言的程序员一样,汇编语言程序员也要对机器的基本操作有全面的理解。

此外,机器操作太原始,即使是很简单的任务,汇编语言程序也会很长而复杂。

多年来,计算机科学家在开发编程语言上,投入大量努力,为的是让人们可以用一种更自然的方式编写程序。

这种编程语言被称为高级编程语言。

形容词“高级”显示了这种编程语言比汇编语言级别高。

高级语言的区别特征是编程不需要计算机的具体知识。

另一个特征是高级编程语言所使用的词汇和结构,与问题求解的模型接近。

举个例子,用于解决科学和工程问题的FORTRAN语言就采用了数学表示法。

实际上,FORTRAN这个名字,就是从短语“公式转换”(formulatrans

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1