1、第 1 章 引论本章要点:1.什么是计算;2.计算机科学与计算科学的区别;3.来自计算机发展史的启示;4.计算机应用;5.计算机发展趋势。1.1 什么是计算?简单计算,如我们从幼儿就开始学习和训练的算术运算,如“3 + 2 = 5”“3 2 = 6”等,是指“数据”在“运算符”的操作下,按“规则”进行的数据变换。我们不断学习和训练的是各种运算符的“规则”及其组合应用,目的是通过计算得到正确的结果。 广义地讲,一个函数如“ ”把 x变成了 f(x)就可认为是一次计算,在高中及大学阶段我们不断学习各种计算“规则”并应用这些规则来求解各种问题,得到正确的计算结果。如对数与指数、微分与积分等。“规则”
2、可以学习与掌握,但应用“规则”进行计算则可能超出了人的计算能力,即人知道规则但却没有办法得到计算结果。如何解决呢?一种办法是研究复杂计算的各种简化的等效计算方法(数学)使人可以计算,另一种办法是设计一些简单的规则,让机械来重复的执行完成计算,即考虑能否用机械来代替人按照“规则”自动计算。例如:能否机械地判断方程“ a1x1b1+a2x2b2+anxnbn = c”是否有整数解?”,即机械地证明一个命题是否有解? 是否正确? 类似的上述问题,促进了计算机科学和计算科学的诞生和发展,促进了人们思考: 什么能够被有效地自动计算?现实世界需要计算的问题是很多的,哪些问题是可以自动计算的,哪些问题是可以
3、在有限时间有限空间内自动计算的?这就出现了计算及计算复杂性问题。以现实世界的各种思维模式为启发,寻找求解复杂问题的有效规则,就出现了算法及算法设计与分析问题。例如观察人的思维模式而提出的遗传算法、观察蚂蚁行动的规律而提出的蚁群算法等。 如何低成本、高效地实现自动计算?如何构建一个高效的计算系统:计算机器的构建问题和软件系统的构建问题。 如何方便有效地利用计算系统进行计算?利用已有计算系统,面向各行各业的计算问题求解。什么能、且如何被有效地自动计算问题就是计算学科的科学家不断在研究和解决的问题。2 大学计算机-计算思维导论1.2 计算机科学与计算科学 一般而言,“计算机科学”是研究计算机和可计算
4、系统的理论方面的学科 1,包括软件、硬件等计算系统的设计和建造,发现并提出新的问题求解策略、新的问题求解算法,在硬件、软件、互联网方面发现并设计使用计算机的新方式和新方法等。简单而言,计算机科学围绕着“构造各种计算机器”和“应用各种计算机器”进行研究。当前,计算手段已发展为与理论手段和实验手段并存的科学研究的第三种手段 2。理论手段是指以数学学科为代表,以推理和演绎为特征的手段,科学家通过构建分析模型和理论推导进行规律预测和发现。实验手段是指以物理学科为代表,以实验、观察和总结为特征的手段,科学家通过直接的观察获取数据,对数据进行分析进行规律的发现。计算手段则是以计算机学科为代表,以设计和构造
5、为特征的手段,科学家通过建立仿真的分析模型和有效的算法,利用计算工具来进行规律预测和发现。技术进步已经使得现实世界的各种事物都可感知可度量,进而形成数量庞大的数据或数据群,使得基于庞大数据形成仿真系统成为可能,因此依靠计算手段发现和预测规律成为不同学科的科学家进行研究的重要手段。例如生物学家利用计算手段研究生命体的特性,化学家利用计算手段研究化学反应的机理,建筑学家利用计算手段来研究建筑结构的抗震性,经济学家社会学家利用计算手段研究社会群体网络的各种特性等。由此计算手段与各学科结合形成了所谓的计算科学,如计算物理学、计算化学、计算生物学、计算经济学等。著名的计算机科学家、1972 年图灵奖得主
6、 Edsger Dijkstra3说:“我们所使用的工具影响着我们的思维方式和思维习惯,从而也将深刻地影响着我们的思维能力”。各学科人员在利用计算手段进行创新研究的同时,也在不断地研究新型的计算手段。这种结合不同专业的新型计算手段的研究需要专业知识与计算思维的结合,1998 年 John Pople便因成功地研究出量子化学综合软件包 Gaussian4而获得诺贝尔奖,Gaussian 已成为研究化学领域许多课题的重要的计算手段。另一个典型的计算手段如求解应力或疲劳等结构力学、多物理场耦合的有限元分析手段。以电影阿凡达为代表的影视创作平台也在不断利用先进的计算手段(如捕捉虚拟合成扣像手段)创造意
7、想不到的视觉效果。周以真(Jeannette M. Wing)教授指出计算思维(Computational Thinking)是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为的一系列思维活动的统称 5。它是如同所有人都具备“读、写、算”能力一样,都必须具备的思维能力,计算思维建立在计算过程的能力和限制之上,由人由机器执行。因此,理解“计算机”的思维,即理解计算系统是如何工作的? 计算系统的功能是如何越来越强大的,以及利用计算机的思维,即理解现实世界的各种事物如何利用计算系统来进行控制和处理,理解计算系统的一些核心概念,培养一些计算思维模式,对于所有学科的人员建立复合型的知识结构,进
8、行各种新型计算手段研究以及基于新型计算手段的学科创新都有重要的意义。技术与知识是创新的支撑,然而思维是创新的源头。第 1 章引论 31.3 来自计算机发展史的启示 历史的回顾,不只是要记住历史事件及历史人物,而是要观察技术的发展路线,观察其带给我们的思想性的启示,这对于创新及创新性思维培养是非常有用的!1.3.1 来自计算工具发展的启示一般而言,计算与自动计算要解决以下四个问题:(1)【数据】的表示;(2)数据的【存储】及自动存储;(3) 【计算规则】的表示和(4) 【计算规则执行】及自动执行。图 1.1 计算工具的发展与演变我们首先看算盘。算盘上的珠子可以表示和【存储】数,【计算规则】是一套
9、口诀,按照口诀拨动珠子可以进行四则运算。然而所有的操作都要靠人的大脑和手完成,因此算盘被认为是一种计算辅助工具,不能被归入自动计算工具范畴。若要进行自动计算,需要由机器来自动执行规则、自动存储和获取数据。1642年法国科学家帕斯卡(Blaise Pascal, 16231662)发明了著名的帕斯卡机械计算机,首次确立了计算机器的概念。该机器用齿轮来表示与【存储】十进制各个数位上的【数字】,通过齿轮的比来解决进位问题。低位的齿轮每转动 10圈,高位上的齿轮只转动 1圈。机器可【自动执行】一些【计算规则】,“数”在计算过程中自动存储。德国数学家莱布尼茨(Gottfried Wilhelm Leib
10、niz, 16461716)随后对此进行了改进,设计了“步进轮”实现了计4 大学计算机-计算思维导论算规则的自动连续重复的执行。帕斯卡机的意义:它告诉人们“用纯机械装置可代替人的思维和记忆”,开辟了自动计算的道路。1822年,30 岁的巴贝奇(C. Babbage)受前人杰卡德(J.Jacquard)编织机的启迪,花费 10年的时间,设计并制作出了差分机。这台差分机能够按照设计者的旨意,自动处理不同函数的计算过程。1834 年,巴贝奇设计出具有堆栈、运算器、控制器的分析机,英国著名诗人拜伦的独生女阿达.奥古斯塔(Ada Augusta)为分析机编制了人类历史上第一批程序,即一套可预先变化的有限
11、有序的【计算规则】。巴贝奇用了 50年时间不断研究如何制造差分机,但限于当时科技发展水平,其第二个差分机和分析机均未能制造出来。在巴贝奇去世 70多年之后,Mark 在 IBM的实验室制作成功,巴贝奇的夙愿才得以实现。巴贝奇用一生进行科学探索和研究,这种精神永远地流传了下来。正是由于前人对机械计算机的不断探索与研究,不断追求计算的机械化、自动化、智能化:如何能够自动存取数据?如何能够让机器识别可变化的计算规则并按照规则执行?如何能够让机器像人一样地思考?这些问题促进了机械技术和电子技术的结合,最终导致了现代计算机的出现。现代计算机,在借鉴了前人的机械化自动化思想后,设计了能够理解和执行任意复杂
12、程序的机器,可以进行任意形式的计算,如数学计算、逻辑推理、图形图像变换、数理统计、人工智能与问题求解等,计算机的能力在不断提高之中。1.3.2 来自元器件发展的启示自动计算要解决数据的自动存、自动取以及随规则自动变化的问题,如何找到能够满足这种特性的元器件便成为电子时代研究者不断追求的目标。 第 1 章引论 5图 1.2 元器件的发展与演变1883年,爱迪生在为电灯泡寻找最佳灯丝材料的时候,发现了一个奇怪的现象:在真空电灯泡内部碳丝附近安装一截铜丝,结果在碳丝和铜板之间产生了微弱的电流。1895 年,英国的电器工程师弗莱明(J. Fleming)博士对这个“爱迪生效应”进行了深入的研究,最终发
13、明了人类第一只电子管(真空二极管):一种使电子单向流动的元器件。1907 年,美国人德福雷斯发明了真空三极管,他的这一发明为他赢得“无线电之父”的称号。其实,德福雷斯所做的就是在二极管的灯丝和板极之间加了一块栅板,使电子流动可以受到控制,从而使电子管进入到普及和应用阶段。电子管是可存储和控制二进制数的电子元器件。在随后几十年中,人们开始用电子管制作自动计算的机器。标志性的成果是 1946年宾夕法尼亚大学的 ENIAC,ENIAC 6是世界上公认的第一台电子计算机。ENIAC 的成功奠定了“二进制”“电子技术”作为计算机核心技术的地位。然而电子管有很多缺陷,比如体积庞大、可靠性低、功耗大等等,对
14、于如何克服这些问题的思考促使了人们寻找性能比电子管更加优秀的替代品。1947年,贝尔实验室的肖克莱和巴丁、布拉顿发明了点接触晶体管,两年后肖克莱进一步发明了可以批量生产的结型晶体管(1956 年他们三人因为发明晶体管共同获得了诺贝尔奖),1954年德州仪器公司的迪尔发明了制造硅晶体管的方法。1955 年之后,制造晶体管的成本以每年 30%的速度下降,到 50年代末,这种廉价的器件已经风靡世界,以晶体管为主要器件的计算机也迈入了新的时代。尽管晶体管代替电子管有很多优点,但还是需要使用电线将各个元件逐个连接起来,对于电路设计人员来说,能够用电线连接起来的单个电子元件的数量不能超过一定的限度。而当时
15、一台计算机可能就需要 25000个晶体管、10 万个二极管、成千上万个电阻和6 大学计算机-计算思维导论电容,其错综复杂的结构使其可靠性大为降低。如何解决呢?1958年,费尔柴尔德半导体公司的诺伊斯和德州仪器公司的基尔比提出了集成电路的构想:在一层保护性的氧化硅薄片下面,用同一种材料(硅)制造晶体管、二极管、电阻、电容,再采用氧化硅绝缘层的平面渗透技术,以及将细小的金属线直接蚀刻在这些薄片表面上的方法把这些元件互相连接起来,这样几千个元件就可以紧密地排列在一小块薄片上。将成千上万个元件封装成集成电路,自动实现一些复杂的变换,集成电路成为了功能更为强大的元件,人们可以通过连接不同的集成电路,制造
16、自动计算的机器,人类由此进入了微电子时代。随后人们不断研究集成电路的制造工艺,光刻技术、微刻技术到现在的纳刻技术使得集成电路的规模越来越大,形成了超大规模集成电路。自那时起,集成电路的发展就像 Intel创始人戈登.摩尔(Gordon Moore)提出的被称之为摩尔定律 7一样:当价格不变时,集成电路上可容纳的晶体管数目,约每隔 18个月便会增加一倍,其性能也将提升一倍。截至 2012年,一个超大规模集成电路芯片的晶体管数量可达 14亿颗以上。电子计算机的计算能力应该说已经很强大了,但为什么仍无法达到或者超越人类大脑的计算能力呢?人类的计算模式又是怎样的呢?这些问题促进着科学家不断追求新形式的
17、元器件的研究,比如生物体芯片,科学家发现蛋白质具有 0/1控制的特性,能否被用于制作芯片呢?而这种生物芯片在解决一些复杂的计算时是否会有与人一样的计算模式呢?目前已经取得了很多的成果,这里不予赘述。 1.3.3 来自计算机硬件发展的启示所谓的计算机硬件是指制造完成后基本不能改变的部件,包括核心的微处理器(又被称为中央处理单元 Central Processing Unit,简称 CPU)、存储设备、输入设备和输出设备。负责解释和执行程序的部件被称为微处理器,负责存储数据的部件被称为存储设备,负责将外界信息送入计算机系统的部件被称为输入设备,负责将计算机系统内部数据使外界感知的部件被称为输出设备
18、。第 1 章引论 7图 1.3 计算机硬件的发展与演变我们先看输入设备的发展。如何使外界信息被机器感知呢?1725 年,法国纺织机械师布乔(B. Bouchon)发明了“穿孔纸带”的构想,1805 年,法国机械师杰卡德(J. Jacquard)据其完成了“自动提花编织机”的设计制作。纸带上穿孔为 1,无孔为 0,有一穿孔机制作纸带,制作好的纸带被机器阅读并识别,实现了以 0、1 编码的信息的输入;如何将英文字母直接输入到机器中呢?1868 年,美国克里斯托夫.肖尔斯(C. Sholes)发明了沿用至今的 QWERTY键盘,将英文字母符号按位置排列,当按下不同字母按键时,机器识别出其位置,据位置
19、信息进而识别出输入的是哪一个字母,从而实现了符号输入。如何实现对由一系列点构成的图形的控制呢?1968 年,美国恩格巴特(Douglas Englebart)发明了鼠标,实现了点输入,促进了图形化计算机的发展。目前各种输入手段不断创新,输入设备层出不求。例如为实现纸质文档/图象的输入,出现了扫描仪;为实现人对屏幕上图形的直接控制,出现了基于电阻/电容的触摸感应式输入设备,可以感应手指的接触或压力实现信息的输入;为使人更方便地输入信息,出现了语音输入设备,自动识别人的语音;出现了随人眼、手变动的感知输入设备如微软公司推出的 Kinect体感设备等,各种各样的感知设备,包括接触式感知,也包括非接触
20、式感知,目前的物联网技术(Internet of Things)目的是使计算机感知现实世界万事万物。再看输出设备的发展。如何使机器处理的结果被外界感知呢?最基本的是通过屏幕显示计算的结果。1908 年,英国 Campbell Swinton叙述了电子扫描方法并预示用阴极射线管制造电视,1960年,DEC 的 PDP-1计算机使用了 CRT(阴极射线管, cathode ray tube)式显示器, 它利用显像管内的点子枪发出电子光束,打在一个内层玻璃涂满了无数三原色的荧光粉层上,荧光粉层上的布满的三原色点的数目(被称为像素),电子枪周期性的发出电子束,循环激发像素点,会使得荧光粉发光,就显示出
21、了不同颜色的点。而如何控制电子束的扫描以使其按希望的点的颜色进行显示?如何提高屏幕显示的清晰度和色彩准确度?如何使屏幕在计算机的控制下显示8 大学计算机-计算思维导论希望的图形或符号?这些问题促进了人们对显示设备的深入研究。1963 年,Ivan Sutherland研发出了笔迹或向量式的模拟显示器,即第一台使用计算机产生画面的显示器。上世纪 60年代末期, Tektronix 公司基于示波器原理研究了字符发生器,这是一种光栅扫描显示器,它有小量的内存,大概可以容纳一个字符,当它扫描映像管的表面时做开关的动作。1972 年,Ramtek开发出了采用帧缓冲技术的数字光栅扫描显示器-一种基于内存的
22、显示器技术。目前显示设备的研究向数字高清显示器、三维显示器、触控显示器等方向发展。概括来讲,显示技术的发展趋势为:分辨率越来越高,颜色越来越逼真,显示速度越来越快(屏幕刷新速度和图形处理速度),体积越来越薄,视觉效果越来越清晰,可视角度越来越接近平角等。其他类型的输出设备,如打印机等也以类似的思维不断地发展着,在此不再赘述。接着再看存储设备的发展。1950 年,基于汞在室温时是液体同时又是导体特性,并结合机械与电子技术开发了汞延迟线实现 0和 1的存储。1953,利用磁性材料及其磁化翻转特性而实现永久性的存储,发明了磁芯、磁带、磁鼓,进一步 IBM于 1956年首次实现“温彻斯特(Winche
23、ster)”硬盘技术。1973 年,IBM 公司研制成功第一片软磁盘。1983 年,IBM 推出了 IBM PC的改进型号 IBM PC/XT,并为其内置了硬盘。2002 年 2月 26日,西捷公司推出了全球首款Serial ATA接口硬盘。1985, Philips 和 Sony合作推出 CD-ROM光盘驱动器。1994 年,索尼/飞利浦发布了高密度 CD碟片(HIGH-DENSITY CD),即现在的 DVD-9(DS-SL)和 DVD-18(DS-SL)格式碟片的始祖。1995 年,欧、美、日 10家制造公司达成协议,DVD 光盘将包括视频和音频、只读和可写等全面解决方案。目前一些新型的
24、存储介质如 FlashRAM、MultiMedia Card(MMC)、USB removable disk(U-Disk)、固态硬盘、纳米存储(用磁性纳米棒研制量子存储系统)层出不穷。概括来讲,存储设备的发展趋势为:体积越来越小,容量越来越大,访问速度越来越快,可靠性越来越高,功耗越来越低,持久性越来越好等。自 1974年 Intel推出第一款 8位微处理芯片 8080及随后推出的 16位微处理器 8086以来,微处理器便依摩尔定律在发展着。微处理器是计算机内部执行指令和进行运算的核心部件。通常有几个指标来衡量微处理器,(1)字长,字是 CPU内部进行数据处理、信息传输等的基本单位,每一个字
25、所包含的二进制位数称为字长。字长也即一次 CPU操作所能处理数据的位数。微处理器字长从 4位,发展为 8位、16 位、32 位和 64位。(2)主频,主频是指 CPU每秒钟所能完成操作的次数,也称时钟频率。微处理器的主频由几 MHz发展为几十 MHz、几百 MHz、几 GHz、几十GHz。 (3)功能/规模,早期的微处理器仅仅以定点数运算为基础,当进行浮点数运算时速度较慢,为此开发了单独的协处理器进行浮点元算,一台计算机上安装两个处理器;随后发展便将微处理器和协处理器集成为一个芯片,形成新的微处理器;为提高图形的处理速度,又开发了图形处理单元 GPU,随后又将图形处理单元与微处理器集成,形成新
26、的多核处理器,再进一步集成了多媒体处理器、3D 多媒体处理器,形成了现在的多核处理器,目前 Intel公司已开发出了八核、十核及更多核心的处理器,功能规模越来越大。(4)晶体管数量,正是由于微处理器不断集成更多的处理单元,使其内部集成的晶体管由早期的几万颗发展为几十万颗、几百万颗、几千万颗、几亿颗,目前达到 14亿颗以上,当然这一切离不开集成电路的微刻、纳刻制造工艺的发展。 第 1 章引论 91.3.4 来自计算机软件发展的启示尽管计算机硬件功能很强,但真正控制计算机运行的还是软件,计算机技术的发展也是伴随着软件技术的发展而发展的。所谓软件可看作是程序系统或者说程序集合,是计算机系统中与硬件相
27、互依存的另一部分,而所谓程序是可按事先设计好的功能和性能要求进行执行的指令序列。硬件一旦设计好,其功能就确定了,而其功能的扩展和延伸是通过软件来实现的。当程序系统稳定后,人们可将固定不变的程序再做成硬件,扩大了硬件功能,进而在新的硬件基础上再设计功能更为强大的软件,如此相互促进,计算机功能越来越强大。图 1.4 计算机软件的发展与演变怎样编写程序和软件呢?最初人们是以硬件所能直接执行的“指令”编写程序,即用机器语言编写程序。机器语言是指硬件能够直接识别和执行的语言,包括由 0,1编码的指令及其指令的书写规则。20 世纪 50年代初期,出现了汇编语言,用若干个英文字母构成的助记符号来表示指令,人
28、们可以用更为容易记忆的字母符号来编写程序,由于不同机器有不同的指令,所以汇编语言是面向机器的语言。如何使语言不依赖于具体的机器呢?如何使语言能像自然语言一样进行表达呢?1951 年 IBM开始研发高级语言,意在创建一种独立于机器、能在不同的计算机上兼容执行的语言,1956 年 10月 IBM推出了 FORTRAN语言,标志着高级语言的诞生。FORTRAN语言的名称来自 formula和 translator两个词,意思是公式转换器,它类似自然语言,10 大学计算机-计算思维导论使用数学公式和英文来表达让机器自动执行的计算规则,但因为是在跟机器交流,所以在语法上要遵循严格的规定,毕竟机器是不能像
29、人那样识别模糊表达的。为使人更容易理解和编写更复杂的程序,出现了众多的计算机语言,如 BASIC语言,全称是 Beginners All purpose Symbolic Instruction Code,意为“初学者通用符号指令代码”,如 1960年 1月,图灵奖获得者 Alan J. Perlis发表了“演算法语言 ALGOL60报告”,推出了程序设计语言 ALGOL60,随后不断演化形成了现在广为使用的 C语言等。20世纪 80年代及其以前都是使用高级语言如 C语言、FORTRAN 语言,来开发程序。用高级语言开发的程序被称为结构化程序,结构化程序是由一个个函数构成的,而函数,又被称作子
30、程序,是由一个个常量和变量等定义的数据结构及由一行行各种表达式和语句所表达的算法构成的,算法是完成问题求解的一系列步骤。简单而言,结构化程序就是用“函数”来表达数据结构和算法,通过“函数调用”来实现不同程序之间的交互。结构化程序设计就好比建平房,但也可用建造平房的技术来建造复杂的建筑,如典型的操作系统软件 Unix,就是用 C语言编写的。20世纪 80年代后期,程序开发方式发生了变化。如何构造复杂的程序呢?人们提出了用“对象”和“类”来构造程序。对象的概念模拟的是现实世界中的各种各样的对象,每个对象具有相对独立的特性(数据和功能),可以独立的运行,如何模拟这种可相互独立运行的对象呢?此时人们将
31、一个对象相关的若干数据和函数封装起来,形成可执行体,被称为对象,对象的类型被称作“类”,由类产生的一个运行体就是一个“对象”,对象和对象之间通过消息(数据)进行交互,由此实现了人们期待已久的软件体的自动生成,出现了面向对象的程序设计语言,如 C+(1983), Java(1995),Visual 系列语言(1990)等。面向对象的程序设计语言极大地提高了人们程序设计的能力,也使人们从“编”程序向“构造”程序转变,使得构造特色的复杂的程序成为可能。面向对象程序设计好比建高楼,可以更为方便地构造具有特色的相当复杂性的建筑。典型的 Windows图形界面操作系统及基于图形界面的可视化系统都是面向对象
32、程序设计的结果示例。如何快速地批量化地构造复杂的程序呢?人们在上世纪 90年代后,提出了将若干系统中都经常使用的对象做成“构件”,通过重复使用一些构件来构造程序进而提高软件开发效率的思想。所谓构件是将若干对象的相对复杂的特性封装起来,而只将其与外部的交互性的特性(被称为接口)暴露给开发者。进而,开发者只需考虑如何利用接口来利用构件,而无需考虑构件内部的复杂特性。这样,构件就可以被很多系统所使用。然而构件和构件如何连接,连接构件的连接件如何制作,如何连接构件使形成的系统具有更好的性能?这些问题就是软件系统的架构问题。因此说,此阶段是以“构件”及“软件结构”为单位进行复杂程序的构造。目前典型的软件
33、架构为 J2EE,.Net 和 CORBA。软件架构的研究也促进了中间件技术的发展,如 BEA公司的WebLogic,IBM 公司的 WebSphere和开源软件的 Tomcat等。在 J2EE架构和中间件的支持下人们又提出了很多具有不同特色的开发框架(Framework),如 Spring框架、Ruby on Rails 框架等,极大地提高了批量化构造程序的效率。构件化系统开发就好比堆积木一样可以批量地、快速地构造更为复杂的建筑。进入 21世纪后,随着互联网技术的深入发展,如何支持一个信息系统可以和外部的任何其他系统进行互联互通成为软件开发的重要问题。构件之间可以通过构件的接口实现相互调用,
34、第 1 章引论 11但调用的前提是构件双方能够知道对方的接口,已知对方的接口,便可在己方程序中写入调用语句来实现调用。然而互联网环境,如何能知道对方的接口,如何能够不改变已编写的程序实现和新增系统的交互呢?人们提出用“服务”与“服务总线”的概念来构造系统。所谓服务是将构件的接口重新按公共标准接口进行封装,可以随时接入到服务总线上。任何一个系统都可通过服务总线发现该服务,也可在服务总线的支持下调用该服务。通过服务总线可实现任何两个信息系统之间的互联互通。目前出现的面向服务的体系结构(Service-Oriented Architecture, SOA)技术、云计算(Cloud Computing
35、)技术等就是体现这些思想的典型技术。服务化程序设计就好像是建设一座城市,不仅要建立一栋栋建筑,更要考虑建筑之间水、电、气等的互联互通。1.3.5 一些重要思想/重要事件及其带来的影响1674年,莱布尼茨提出了“二进制”数的概念。1847 年,英国数学家布尔(G.Boole)发表著作逻辑的数学分析。1854 年,布尔发表思维规律的研究逻辑与概率的数学理论基础,创立了一门全新的学科布尔代数,为百年后出现的数字计算机的开关电路设计提供了重要的数学方法和理论基础。1938 年,香农 8发表了著名的论文继电器和开关电路的符号分析,首次用布尔代数进行开关电路分析,并证明布尔代数的逻辑运算,可以通过继电器电
36、路来实现,明确地给出了实现加、减、乘、除等运算的电子电路的设计方法。这篇论文成为开关电路理论的开端。1937年,Alan Turing 9想出了一个“通用机器(Universal Machine)”的概念,可以执行任何的算法,形成了一个“可计算(computability)”的基本概念。Turing 的概念比其它同类型的发明为好,因为他用了符号处理(symbol processing)的概念。1950 年 10月,阿兰.图灵发表自己的论文机器能思考吗,从而为人工智能奠定了基础,图灵也获得了“人工智能之父”的美誉。1940年,控制论之父维纳提出了计算机五原则:(1)不是模拟式,而是数字式;(2)
37、由电子元件构成,尽量减少机械部件;(3)采用二进制,而不是十进制;(4)内部存放计算表-计算控制规则;(5)在计算机内部存贮数据。1952 年,由计算机之父,冯.诺伊曼(Von Neumann)设计的 IAS电子计算机问世,IAS 计算机共采用了 2300个电子管,使用汞延迟线做存储器,运算速度却比拥有 18000个电子管的“ENIAC”提高了 10倍,为什么会提高速度呢?冯.诺依曼 10设想:将运算和存储分离,运算由运算部件来实现,存储由存储部件来实现,需要运算的数据和程序事先存储在存储部件中,运算部件可通过读写存储部件进行快速的计算,冯.诺伊曼的设想在这台计算机上得到了圆满的体现,实现了计
38、算机结构上的创新,被称为“冯.诺伊曼计算机”。1953年,IBM 正式对外发布自己的第一台电子计算机 IBM701。随后 IBM又相继发布了中型计算机 IBM650等,在市场中确立了领导者的地位。1964 年,IBM360 计算机问世,标志着第三代计算机的全面登场,这也是 IBM历史上最为成功的机型。1981 年,IBM 宣布 IBM PC的诞生,掀开了改变世界历史的一页。1982 年,康柏公司推出了便携式 PC机 Portable,开拓了兼容机市场。1983 年,苹果公司推出了丽萨(Lisa)电脑,是世界上第一台商品化的图形用户界面的个人计算机,同时这款电脑也第一次配备了鼠标。1984 年,
39、苹果公司推出了划时代的 Macintosh12 大学计算机-计算思维导论计算机,不仅首次采用了图形界面的操作系统,并且第一次使个人计算机具有了多媒体处理能力。1948年,香农在Bell System Technical Journal上发表了他影响深远的论文通讯的数学原理和噪声下的通信,阐明了通信的基本问题,给出了通信系统的模型,提出了信息量的数学表达式,并解决了信道容量、信源统计特性、信源编码、信道编码等一系列基本技术问题,成为信息论的奠基性著作。1962 年,蓝德公司的保罗.巴兰发表了一篇具有里程碑式意义的学术报告论分布式通信,在文中他首次提出了“分布式自适应信息块交换”,这就是我们现在称
40、之为“分组交换”的通讯技术。1969 年,美国国防部高级研究计划局(ARPA,Advanced Research Project Agency),发起研究横跨美国的实验性广域计算机网,研究的成果是出现了著名的 ARPANET,阿帕网美国加州大学洛杉矶分校(UCLA)节点与斯坦福研究院(SRI)节点实现了第一次分组交换技术的远程通讯,标志着互联网的正式诞生。1973 年,施乐PARC研究中心组建了世界上第一个计算机局域网络-ALTO ALOHA 网络,后改名为“以太网”。1980年,Novell 公司推出 NetWare网络操作系统。DEC、Intel 和 Xerox共同发布了“以太网”技术规范
41、,这就是现在著名的以太网蓝皮书。1982 年,3Com 公司推出了世界上第一款网卡EtherLink 网络接口卡,这也是世界上第一款应用于 IBMPC 上的 ISA接口网络适配器。1960年,麻省理工学院教授约瑟夫.立克里德(J. Licklider)发表了著名的计算机研究论文人机共生关系,提出了分时操作系统的构想,并第一次实现了计算机网络的设想。1969 年,贝尔实验室在一部 PDP7 上开发了 Unix操作系统,解决了人们为进行计算需要与硬件交互的难题,所有与硬件设备相关的工作都由操作系统负责管理和调度。1981 年,微软配合 IBM PC机推出 MS-DOS 1.0版。1990 年推出
42、Windows 3.0操作系统,提供了对多媒体、网络等众多最先进技术的支持,并在年底创下销售 100万套的纪录,从而被称为软件技术的一场革命。1991 年,来自芬兰的大学生 Linus.Torvalds开发了一种基于 UNIX的操作系统Linux,并且将源代码全部公开于互联网上,从而引发了席卷全世界的源代码开放运动。2001 年开始,出现众多的嵌入式操作系统,如智能手机操作系统 Symbian,Windows Mobile 的 Smart Phone和 Pocket PC,Palm,Linux 和 blackberry。2007 年 11月 5日,Google 推出基于 Linux平台的开源手
43、机操作系统 Android。1988年,由 23 岁研究生罗伯特.莫里斯(R.T.Morris)编制的“蠕虫”病毒在互联网上大规模发作,这也是互联网第一次遭受病毒的侵袭,从此,计算机病毒逐渐传播开来,计算机病毒的影响也受到广泛的重视,1999 年,台湾学生陈盈豪编写的 CIH病毒在全球范围内爆发,近100万台左右的计算机软硬件遭到不同程度的破坏,直接经济损失达数十亿美元。这也促进了网络安全、信息安全、网络攻防技术的研究和发展。1991年, 出现第一个 World Wide Web标准。1992 年,Internet 协会成立,简称(ISOC)。1993年,美国总统克林顿在加州报告中正式提出了组
44、建国家信息基础设施(NII)的构想,这就是后来的信息高速公路计划。1993 年,我国接入 Internet的第一根专线,中科院高能物理研究所租用 ATT公司的国际卫星接入美国斯坦福线性加速器中心的 64K专线正式开通。1998 年,美国铱星公司成立,该公司通过由 66颗卫星组成的铱星系统,首次实现了能从地球的任何地点进行连接的服务。同日,美国数十家电视台在 23个大城市正式播出数字式电视节目,这也标志着数字电视时代的到来。1995 年 7月,贝佐斯成立了亚马逊网上书店(Amazon),这个以世界上流域第 1 章引论 13最广、流量最大的河流命名的“书店”正在引起越来越多的注意。21 世纪,IB
45、M 大力发展面向服务的体系结构(SOA)技术和云计算技术(Cloud Computing),并在此基础上提出了智慧地球(Smart Planer);欧盟提出了发展以物联网(Internet of Things)、数据与知识网络(Internet of Data and Knowledge)、3D 网络(Internet of 3D)、服务联网(Internet of Service)和人与组织网络(Internet of and for People)为代表的未来互联网技术(Future Internet);1.4 计算机应用计算机最初的应用就是数值计算,后来随着计算机技术的发展,计算机的计算
46、能力日益强大,计算范围日益广泛,计算内容日益丰富,计算机的应用领域也日益宽广。归纳起来,计算机的应用主要体现在这样几个方面。1.4.1 科学计算科学计算也称为数值计算,指用于完成科学研究和工程技术中提出的数学问题的计算。现代科学技术的发展,使得各种领域中的计算模型日趋复杂,如大型水坝的设计、卫星轨道的计算、卫星气象预报、地震探测等,通常需要求解几十阶微分方程组、几百个线性联立方程组、大型矩阵等,如果利用人工来进行这些计算,通常需要几年甚至几百年,还不一定能满足及时性、精确性要求。世界上第一台计算机的研制就是为科学计算而设计的,计算机高速、高精度的运算是人工计算所望尘莫及的,利用计算机可以解决人
47、工无法解决的复杂计算问题。1.4.2 数据/信息处理数据/信息处理也称为非数值计算,指对大量的数据进行搜集、归纳、分类、整理、存储、检索、统计、分析、列表、绘图等。人类在很长一段时间内,只能用自身的感官去收集信息,借助于纸张,用大脑存储和加工信息,用语言交流信息。在机关办公室、企业、商业、情报业、服务业等方面存在着大量的信息需要处理,例如各种人事档案资料、企业的各种定额资料、每天的业务与财务情况、生产情况等。随着计算机技术的发展,当今社会已从工业社会进入信息社会,信息已经成为赢得竞争的一种资源,计算机已广泛应用于政府机关、企业、商业、服务业等行业中,进行数据/信息处理。利用计算机进行数据/信息
48、处理不仅能使人们从繁重的事务性工作中解脱出来,去做更多创造性的工作,而且能够满足信息利用与分析的高频度、及时性、复杂性要求,从而使得人们能够通过已获取信息去产生更多更有价值的信息。1.4.3 过程控制过程控制是指利用计算机对生产过程、制造过程或运行过程进行监测与控制,即通过实时监测目标物体的当前状态,及时调整被控对象,使被控对象能够正确地完成目标物体的生产、制造或运行。过程控制广泛应用于各种工业生产环境中,其一,能够替代人在危险、有害于人的环境中14 大学计算机-计算思维导论进行作业。其二,能在保证同样质量前提下进行连续作业,不受疲劳、情感等因素的影响。其三,能够完成人所不能完成的有高精度、高
49、速度、时间性、空间性等要求的操作。计算机过程控制已在冶金、石油、化工、纺织、水电、机械、航天等行业得到广泛的应用。1.4.4 多媒体应用所谓的多媒体一般包括文本(Text)、图形(Graphics)、影像(Image)、音频(Audio)、视频(Video)、动画(Animation)等多种信息媒介。多媒体技术是指人和计算机交互地进行上述多种媒介信息的捕捉、传输、转换、编辑、存储、管理,并由计算机综合处理为表格、文字、图形、动画、音响、影像等视听信息有机结合的表现形式。多媒体技术拓宽了计算机应用领域,使计算机广泛应用于商业、服务业、教育、广告宣传、文化娱乐、家庭等方面。同时多媒体技术与人工智能技术的有机结合还促