救命啊!给一群根本不懂电脑的人上课!
电子计算机是根据一系列指令处理数据的机器。相关的技术研究叫计算机科学,以数据为中心的研究叫信息技术。
电脑有很多种。事实上,计算机一般是处理信息的工具。根据图灵机理论,一台具备最基本功能的计算机应该可以做其他计算机能做的任何事情。因此,不考虑时间和存储因素,所有个人数字助理(PDA)和超级计算机应该能够完成相同的工作。也就是说,即使是设计相同的计算机,也要用于各种任务,从公司工资管理到无人飞船控制,只要做相应的修改。由于科学技术的快速进步,下一代计算机在性能上总能显著超越前辈,这有时被称为“摩尔定律”。
计算机在组成上有不同的形式。早期的计算机有一所房子那么大,但是今天一些嵌入式计算机可能比一副扑克牌还小。当然,即使在今天,仍然有大量的巨型超级计算机为大型组织服务于特殊的科学计算或事务处理需求。为个人应用而设计的相对较小的计算机叫做微型计算机,或简称为微型计算机。当我们在今天的日常生活中使用“计算机”这个词时,我们通常会提到这一点。然而,现在计算机最常见的应用形式是嵌入式。嵌入式计算机通常相对简单,体积小,用于控制其他设备-无论是飞机,工业机器人还是数码相机。
电子计算机的上述定义包括许多能计算或具有有限功能的专用设备。但说到现代电子计算机,其最重要的特点是,任何电子计算机只要给它正确的指令(只受电子计算机本身的存储能力和执行速度的限制),就可以模拟任何其他计算机的行为。因此,与早期的电子计算机相比,现代电子计算机也被称为通用电子计算机。
历史
ENIAC是计算机发展史上的一个里程碑。英文单词“computer”原指从事数据计算的人。而且他们经常需要使用一些机械计算设备或者模拟计算机。这些早期计算设备的祖先包括算盘和安提阿-奎特拉机械装置,它们可以追溯到公元前87年,古希腊人用来计算行星运动。随着中世纪末期数学和工程学在欧洲的重新繁荣,威廉·席卡德(Wilhelm Schickard)于1623年率先研制出欧洲第一台计算设备,这是一种可以加减六位数以内的数字,并通过铃声输出答案的“计算钟”。使用旋转齿轮进行操作。
1642年,法国数学家帕斯卡在威廉·奥特雷德的基础上改进了计算尺,能够进行八位计算。它还销售了许多产品,成为当时的时尚商品。
1801年,Joseph Marie Jacquard改进了织布机的设计,其中他使用了一系列穿孔纸卡作为程序来编织复杂的图案。虽然提花织机不被认为是真正的计算机,但它的出现确实是现代计算机发展的重要一步。
查尔斯。巴比奇是1820年第一个构思和设计完全可编程计算机的人。然而,由于技术条件、资金限制,以及难以忍受的对设计的不断修补,这台计算机在他的有生之年从未问世。到19世纪末,许多被证明对计算机科学有重大意义的技术相继出现,包括穿孔卡片和真空管。赫尔曼·霍尔瑞斯(Hermann Hollerith)设计了一台用于制表的机器,它利用穿孔卡片实现了大规模自动数据处理。
20世纪上半叶,为了满足科学计算的需要,发展了许多用途单一、日益复杂的模拟计算机。这些计算机是基于它们所针对的特定问题的机械或电子模型。在20世纪30年代和40年代,计算机的性能变得更强,通用性得到提高,现代计算机的关键功能不断增加。
65438-0937年,克劳德·埃尔伍德·香农发表了他的伟大论文《继电器和开关电路中的符号分析》,其中首次提到了数字电子技术的应用。他向人们展示了如何使用开关来实现逻辑和数学运算。此后,他通过研究万尼瓦尔·布什的微分模拟器进一步巩固了自己的想法。这是一个重要的时刻,标志着二进制电子电路设计和逻辑门应用的开始。作为这些关键思想诞生的先驱,应该包括:阿尔蒙·史端乔(Almon Strowger),他为一种包含逻辑门的装置申请了专利;尼古拉斯?尼古拉·特斯拉,早在1898就申请了带逻辑门的电路设备;德·福雷斯特,在1907中,他用真空管代替了继电器。
80年代Commodore公司生产的Amiga 500计算机,沿着这么长的路程,要定义所谓的“第一台电子计算机”是相当困难的。1941 12年5月,康拉德·楚泽完成了他的机电设备“Z3”,这是第一台具有自动二进制数学计算和可行编程功能的计算机,但它不是“电子”计算机。此外,其他值得注意的成就主要包括:阿塔纳索夫-贝里计算机,诞生于1941年夏天,是世界上第一台电子计算机,它采用真空管计算器、二进制值和可重复使用的存储器;1943年在英国展出的神秘巨像计算机,确实告诉人们,使用真空管是可靠的,可以实现电气化重编程,虽然它的编程能力极其有限。哈佛马克一世;哈佛大学的;以及基于二进制的“ENIAC”(ENIAC,1944),这是第一台具有通用目的的计算机,但其结构设计不够灵活,所以每次重新编程都意味着重新连接电气和物理电路。
开发Eniac的团队根据其缺陷进一步改进设计,最终呈现出我们今天所熟悉的冯诺依曼结构(程序存储架构)。这个系统是今天所有计算机的基础。40年代中后期,大量基于该系统的计算机开始被开发出来,其中英国是最早的。虽然研制并投入运行的第一台机器是“小型实验机”(SSEM),但真正研制出的实用机器很可能是EDSAC。
在整个20世纪50年代,真空管计算机占主导地位。1958年9月2日,在罗伯特·诺伊斯(英特尔公司创始人)的领导下,集成电路发明了。不久之后,微处理器问世了。在1959和1964之间设计的计算机一般称为二代计算机。
20世纪60年代,晶体管电脑取而代之。晶体管更小、更快、更便宜、更可靠,这使得它们可以商业化。从1964到1972的计算机一般称为第三代计算机。大量使用集成电路,典型型号为IBM360系列。
70年代,集成电路技术的引入大大降低了电脑的生产成本,电脑开始走向千家万户。1972之后的计算机习惯上称为第四代计算机。基于大规模集成电路以及后来的超大规模集成电路。1972 4月1日,英特尔推出了8008微处理器。1976斯蒂芬·沃兹纳克和斯蒂芬·乔布斯创立了苹果电脑公司。并推出了苹果I电脑。1977苹果二代电脑5月发布。1979 6月1日,英特尔发布了一款8位8088微处理器。
从65438年到0982年,微型计算机开始普及,大量进入学校和家庭。1982 65438+10月Commodore 64电脑发布,价格:595美元。1982 2月80286发布。时钟频率提高到20MHz,增加了保护模式,可以访问16M内存。支持1GB以上虚拟内存。每秒执行270万条指令,集成134000个晶体管。
1990 165438+10月:第一代MPC(多媒体个人计算机标准)发布。处理器至少80286/12MHz,后来增加到80386SX/16 MHz,光驱传输速率至少150 KB/秒。1994 10 6月10日,英特尔发布了75 MHz奔腾处理器。1995 165438+10月1奔腾Pro发布。主频可达200 MHz,每秒完成4.4亿条指令,集成550万个晶体管。1997 65438+10月8日英特尔发布奔腾MMX。游戏和多媒体功能得到了增强。
此后计算机日新月异,1965年发表的摩尔定律被不断证明,预言在未来10~15年仍然适用。
原则
个人计算机(PC)的主要结构:
指示器
主板
中央处理器
主存储器
扩展卡(显卡、声卡、网卡等一些主板可以集成这些)
电源
光盘驱动器
辅助存储器(硬盘)
键盘
老鼠
虽然自20世纪40年代第一台电子通用计算机诞生以来,计算机技术发展迅速,但今天的计算机仍然基本采用存储程序结构,即冯·诺依曼结构。这种结构实现了实用的通用计算机。
存储程序结构将计算机描述为四个主要部分:算术逻辑单元(ALU)、控制电路、存储器和输入/输出设备(I/O)。这些元件由一组扁平电缆(特别是当一组导线用于不同意图的数据传输时,也称为总线)连接,并由时钟驱动(当然,一些其他事件也可能驱动控制电路)。
从概念上讲,计算机的内存可以看作是一组“细胞”。每个“细胞”都有一个称为地址的号码;而且可以存储较小的定长信息。这些信息可以是指令(告诉计算机做什么)或数据(指令的处理对象)。原则上,每个“单元”可以存储其中任何一个。
算术逻辑单元(ALU)可以被称为计算机的大脑。它可以做两种运算:第一种是算术运算,比如两个数的加减。算术运算器在ALU中的作用非常有限。事实上,有些alu根本不支持电路级的乘除运算(因为用户只能通过编程进行乘除运算)。第二种是比较运算,即给定两个数,ALU进行比较,确定哪个更大。
输入输出系统是计算机接收外界信息并向外界反馈运算结果的手段。对于一台标准的个人计算机,输入设备主要是键盘和鼠标,而输出设备是显示器、打印机和许多其他可以连接到计算机的I/O设备。
控制系统连接上述计算机的所有部分。它的功能是从内存和输入/输出设备中读取指令和数据,解码指令,并将符合指令要求的正确输入传递给ALU,告诉ALU如何处理这些数据以及将结果数据返回到哪里。控制系统中的一个重要部件是一个计数器,用来记录当前指令的地址。通常,该计数器随着指令的执行而累积,但是有时如果指令指示跳转,则不遵循该规则。
自20世纪80年代以来,ALU和控制单元(两者都集成到中央处理器(CPU))逐渐集成到一个集成电路中,称为微处理器。这种计算机的工作模式非常直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。重复该过程,直到获得终止指令。
按照控制器的解释,运算单元执行的指令集是一组精心定义的简单指令,数量非常有限。一般可以分为四类:1)、数据移动(例如将一个数值从存储单元A复制到存储单元B)2)、数与逻辑运算(例如计算存储单元A和存储单元B的和并将结果返回到存储单元C)3)、条件验证(例如如果存储单元A中的数值是100,那么下一条指令。
指令和数据一样,在计算机中用二进制表示。比如10110000就是Intel x86微处理器的一个复制指令代码。计算机支持的指令集是计算机的机器语言。因此,使用流行的机器语言将使已建立的软件更容易在新计算机上运行。所以对于开发商业软件的人来说,通常只关注一种或几种不同的机器语言。
更强大的小型计算机、大型计算机和服务器可能与上述计算机不同。它们通常与不同的CPU共享任务来执行。如今,微处理器和多核个人电脑也在朝这个方向发展。
超级计算机通常具有与基本存储程序计算机明显不同的体系结构。他们通常有数千个CPU,但这些设计似乎只对特定的任务有用。在各种计算机中,有一些微控制器使用哈佛架构来分离程序和数据。
计算机的数字电路实现
上述这些概念设计的物理实现是多种多样的。正如我们前面提到的,存储程序计算机既可以是机械的,也可以是基于数字电子的。而数字电路可以通过电子控制继电器等开关,实现使用二进制数的算术和逻辑运算。香农的论文只是向我们展示了如何排列继电器,形成可以实现简单布尔运算的逻辑门。其他学者很快指出,真空管可以取代继电器电路。真空管最初在无线电电路中用作放大器,后来开始越来越多地用作数字电子电路中的快速开关。当电子管的一个管脚通电时,电流可以在另两端之间自由流动。
通过逻辑门的排列和组合,我们可以设计和完成许多复杂的任务。例如,加法器就是其中之一。该装置实现了电子领域中两个数的相加并保存结果——在计算机科学中,这样一种通过一组运算达到特定意图的方法叫做算法。最后,人们通过相当数量的逻辑门成功地组装了一个完整的ALU和控制器。是一个相当可观的数字,看看CSIRAC就知道了,它可能是最小的实用电子管计算机。机器包含2000个电子管,其中很多是两用器件,也就是说总共有2000到4000个逻辑器件。
真空管显然无法制造大规模门电路。昂贵、不稳定(尤其是大批量)、臃肿、能耗高、速度不够快——虽然远超机械开关电路。所有这些导致它们在20世纪60年代被晶体管取代。后者体积更小,操作方便,可靠性高,更节能,成本更低。
集成电路是当今电子计算机的基础。20世纪60年代后,晶体管开始逐渐被集成电路取代,集成电路将大量晶体管、其他各种电子元件和连接线放在一块硅板上。20世纪70年代,ALU和控制器作为CPU的两个部分,开始集成到一个芯片上,称为“微处理器”。沿着集成电路的发展历史,我们可以看到一个芯片上集成器件的数量迅速增加。第一个集成电路只包含几十个组件,到2006年,一个英特尔酷睿双核处理器上的晶体管数量高达1.51亿个。
无论是电子管、晶体管还是集成电路,都可以通过使用触发器设计机制,作为存储程序架构中的“存储”组件。事实上,触发器确实被用作小规模超高速存储。然而,几乎没有计算机设计使用触发器进行大规模数据存储。最早的计算机使用威廉姆斯电子管将电子束发送到电视屏幕或几条水银延迟线(声波传播速度慢到足以被认为是“存储”在其上),然后读取它们。当然,这些有效但不优雅的方法最终被磁存储所取代。比如磁芯存储器,代表信息的电流可以在铁材料中产生一个永久的弱磁场,当这个磁场再次被读出时,就实现了数据恢复。还发明了动态随机存取存储器(DRAM)。它是包含大量电容的集成电路,这些电容器件负责存储数据电荷——电荷的强度被定义为数据的值。
输入输出设备
输入输出设备(I/O)是从外界向计算机发送信息的设备和向外界返回处理结果的设备的总称。这些返回的结果可能是用户直观体验到的,也可能是计算机控制的其他设备的输入:对于一个机器人来说,控制计算机的输出基本上就是机器人本身,比如做出各种行为。
第一代计算机的输入和输出设备的类型非常有限。通常的输入设备是带穿孔卡片的读卡器,用来把指令和数据输入存储器;用于存储结果的输出设备通常是磁带。随着科技的进步,输入输出设备的丰富性得到了提高。以个人电脑为例:键盘和鼠标是用户直接向电脑输入信息的主要工具,而显示器、打印机、扬声器和耳机则返回处理结果。此外,还有许多输入设备可以接受其他不同种类的信息,如可以输入图像的数码相机。在输入输出设备中,有两类值得关注:第一类是二级存储设备,如硬盘、光盘或其他速度慢但容量大的设备。二是计算机网络接入设备,通过这种设备,计算机之间的直接数据传输大大提升了计算机的价值。今天,互联网已经使数千万台计算机能够相互传输各种类型的数据。
程序
简单地说,计算机程序是由计算机执行的一系列指令。它可以是执行简单任务的几条指令,也可以是操作大量数据的复杂指令队列。许多计算机程序包含数百万条指令,其中许多可能被重复执行。2005年,一台典型的个人电脑每秒可以执行大约30亿条指令。计算机通常不会执行一些复杂的指令来获得额外的功能,而是按照程序员的安排,在运行那些简单但数量众多的短指令。
一般来说,程序员不会直接用机器语言给计算机写指令。这样做的结果只能是耗时、费力、低效和漏洞百出。因此,程序员通常用“高级”语言编写程序,然后由一些特殊的计算机程序,如解释器或编译器,将其翻译成机器语言。有些编程语言看起来很像机器语言,比如汇编语言,被认为是低级语言。而其他语言,比如Prolog这种抽象原理,完全忽略了计算机实际运行的操作细节,可谓高级语言。对于一个具体的任务,要根据它的事务特性、程序员技能、可用工具和客户需求来选择相应的语言,其中客户需求是最重要的(美国和中国的工程项目通常要求使用Ada语言)。
计算机软件是另一个不等同于计算机程序的词。计算机软件是一个包容性更强的技术术语,它包括用于完成任务的各种程序和所有相关材料。例如,电子游戏不仅包含程序本身,还包括图片、声音和其他数据内容,以创建虚拟游戏环境。在零售市场,电脑上的一个应用,对于大量用户来说,只是一个软件的拷贝。这里老生常谈的例子当然是微软的office软件组,它包括一系列满足一般办公需求的相互关联的程序。
用那些极其简单的机器语言指令来实现无数强大的应用软件,意味着它的编程规模注定很大。Windows XP,一个操作系统程序,包含4000万行C++高级语言源代码。当然,这还不是最大的。如此庞大的软件规模也说明了管理在开发过程中的重要性。在实际编程中,程序会被细分成每个程序员都能在可接受的时间内完成的规模。
即便如此,软件开发的过程仍然是缓慢的、不可预测的和充满疏漏的。随着时代的要求,软件工程着眼于如何加快工作进度,提高效率和质量。
库和操作系统
计算机诞生后不久,人们发现某些任务必须在许多不同的程序中执行,例如计算一些标准的数学函数。为了提高效率,这些程序的标准版本被收集到一个“库”中,供每个程序调用。许多任务经常需要处理各种各样的输入和输出接口。这个时候,用于连接的库就可以派上用场了。
20世纪60年代,随着计算机工业化的普及,计算机越来越多地用于处理组织中的不同工作。很快,可以自动安排作业延续和执行的特殊软件出现了。这些控制硬件并负责作业调度的软件被称为“操作系统”。早期操作系统的一个例子是IBM OS/360。
在不断改进的过程中,操作系统引入了分时机制——并发。这使得许多不同的用户能够使用该机器同时执行他们自己的程序,就好像每个人都有自己的计算机一样。为此,操作系统需要为每个用户提供一个“虚拟机”来分离不同的程序。由于需要操作系统控制的设备越来越多,其中之一就是硬盘。因此,操作系统还引入了文件管理和目录管理(文件夹),大大简化了这类永久存储设备的应用。此外,操作系统还负责安全控制,以确保用户只能访问那些已被允许的文件。
当然,到目前为止,操作系统发展的最后一个重要步骤是为程序提供一个标准的图形用户界面(GUI)。虽然没有技术上的原因说明操作系统必须提供这些接口,但是操作系统厂商总是希望并鼓励运行在他们系统上的软件在外观和行为特征上与操作系统保持一致或相似。
除了这些核心功能,操作系统还封装了一系列其他常用工具。有些对计算机管理意义不大,但对用户很有用。例如,苹果的Mac OS X包括一个视频编辑应用程序。
一些小型计算机的操作系统可能不会使用这么多功能。由于内存和处理能力有限,早期的微型计算机不提供额外的功能,而嵌入式计算机使用专门的操作系统或根本不使用。他们经常通过应用程序直接表现操作系统的一些功能。
app应用
由计算机控制的机器在工业中很普遍。
很多现代量产的玩具,比如Furby,都离不开廉价的嵌入式处理器。
起初,巨大而昂贵的数字计算机主要用于进行科学计算,尤其是军事项目。比如ENIAC最早用于计算火炮弹道截面的中子密度,设计氢弹(今天很多超级计算机在模拟核试验中仍然发挥着巨大的作用)。CSIR Mk I是澳大利亚设计的第一台存储程序计算机,负责评估水力发电项目集水区的降雨情况。其他的用于解密,比如英国的“巨像”可编程计算机。除了这些早期的科学或军事应用,计算机还广泛应用于其他领域。
从一开始,存储程序计算机就与商业问题的解决密切相关。早在IBM的第一台商用计算机诞生之前,英国的J. Lyons等人就为资产管理或迎合其他商业目的设计制造了LEO。由于持续的量和成本控制,计算机开始普及到较小的组织。加上20世纪70年代微处理器的发明,廉价电脑成为现实。上世纪80年代,个人电脑全面普及,电子文档书写打印、预算计算等重复性报表操作开始越来越依赖电脑。
随着电脑越来越便宜,创造性的艺术作品开始使用它们。人们使用合成器、计算机图形和动画来创建和修改声音、图像和视频。电子游戏的工业化也表明计算机在娱乐方面创造了新的历史。
自从计算机小型化以后,机械设备的控制也开始依赖计算机的支持。事实上,正是建造一台小到足以控制阿波罗飞船的嵌入式计算机刺激了集成电路技术的飞跃。今天,找到一个不受计算机控制的主动机械装置比找到一个甚至部分受计算机控制的装置要困难得多。也许最著名的计算机控制设备是机器人,它有或多或少的人类外表和人类行为的某个子集。在大规模生产中,工业机器人已经变得司空见惯。然而,完全拟人化的机器人仍然只存在于科幻小说或实验室中。
机器人技术本质上是人工智能领域的一个物理表达环节。所谓的人工智能是一个模糊的概念,但可以肯定的是,这门学科试图让计算机拥有目前还不具备,但作为人类所固有的能力。多年来,许多新的方法被开发出来,让计算机做以前被认为只有人类才能做的事情。比如看书下棋。然而,到目前为止,开发具有人类一般“整体”智能的计算机的进展仍然非常缓慢。
网络,互联网
自20世纪50年代以来,计算机一直被用作协调来自不同地方的信息的工具。美军的SAGE(赛奇)是该领域第一个大规模系统。之后也出现了“saber”等一系列专用商业系统。
20世纪70年代后,美国大学的计算机工程师开始使用电信技术连接他们的计算机。因为这项工作是由ARPA赞助的,所以它的计算机网络也被称为ARPANET。此后,ARPA网络所使用的技术迅速传播和演进,这个网络也突破了大学和军队的范围,最终形成了今天的互联网。网络的出现导致了计算机属性和边界的重新定义。太阳微系统公司的约翰·盖奇和比尔·乔伊指出,“网络就是计算机”。计算机操作系统和应用程序正朝着访问网络资源(如网络中的其他计算机)的方向发展。起初,这些网络设备只供高端科学家使用,但90年代后,随着电子邮件和万维网技术的普及,以及以太网和ADSL等网络连接技术的廉价,互联网已经无处不在。为什么今天有几千万台电脑联网?随着无线互联技术的普及,移动计算环境下的互联网也紧随其后。比如笔记本电脑广泛使用的Wi-Fi技术,就是无线上网的代表性应用。