1.scilab发展情况
2.电子计算机最主要的源码工作原理是什么
3.scilab历史
4.美国的一部科幻片,说的源码是星际移民的事情,很美好的源码地方,都是源码欢乐。但是源码这是假的,根本就没有这个地方,源码android源码详解
5.什麽是源码电脑
6.什么是电脑
scilab发展情况
科学计算软件在工程领域的研究与发展中起到了革命性的作用。如今,源码SCILAB,源码由法国国立信息与自动化研究院(INRIA)于年推出的源码开源软件,已经成为科研领域不可或缺的源码工具,尤其受到学者、源码教师和学生们的源码青睐。SCILAB的源码诞生,源自六位杰出创始人——INRIA的源码Francois Delebecque、Claude Gomez等,以及法国国立桥梁学院(ENPC)的Jean-Phillippe Chancelier的共同贡献,它是多领域研究成果的集大成者。 SCILAB的成功在全球范围内得到了显著体现,每月都有成千上万的用户访问其网站并下载软件。这一国际化的成功得益于其语法和功能与行业标准软件MATLAB相当,且完全免费。源代码开放的特性也使得用户能自主控制开发进程,引入最新技术优化软件。INRIA在年启动了“SCILAB共同体”计划,与学术界和工业界合作,以实现更高的目标:将SCILAB打造成卓越的数字科学计算工具,获得教育、研究和工业界的广泛认可,并通过免费策略推动其在全球范围内的广泛应用,保障用户安全,以及与工业需求和先进技术紧密相连。 为了实现这一愿景,SCILAB团队正积极拓展其国际影响力,明白只有在国际平台上,才能实现其宏大计划的成功。因此,未来几年,我们期待SCILAB在世界各地的影响力持续扩大,成为全球数字科学计算领域的标杆工具。扩展资料
SCILAB 是由法国国家信息、自动化研究院(INRIA)的科学家们开发的“开放源码”软件。SCILAB 一词来源于英文 “Scientific Laboratory"(科学实验室)词头的合并。电子计算机最主要的工作原理是什么
电子计算机(以下简称计算机)是一种根据一系列指令来对数据进行处理的机器。俗称“电脑”。
计算机种类繁多。实际来看,计算机总体上是处理信息的工具。根据图灵机理论,一部具有最基本功能的计算机应当能够完成任何其它计算机能做的事情。
因此,只要不考虑时间和存储因素,从个人数字助理(PDA)到超级计算机都应该可以完成同样的作业。即是说,即使是设计完全相同的计算机,只要经过相应改装,就应该可以被用于从公司薪金管理到无人驾驶飞船操控在内的各种任务。由于科技的飞速进步,下一代计算机总是在性能上能够显著地超过其前一代,这一现象有时被称作“摩尔定律”。
计算机在组成上形式不一。早期计算机的体积足有一间房屋大小,而今天某些嵌入式计算机可能比一副扑克牌还小。当然,即使在今天,依然有大量体积庞大的巨型计算机为特别的科学计算或面向大型组织的事务处理需求服务。比较小的,为个人应用而设计的计算机称为微型计算机,简称微机。
我们今天在日常使用“计算机”一词时通常也是指此。不过,现在计算机最为普遍的应用形式却是嵌入式的。嵌入式计算机通常相对简单,体积小,并被用来控制其它设备—无论是飞机,工业机器人还是数码相机。
上述对于电子计算机的定义包括了许多能计算或是只有有限功能的特定用途的设备。
然而当说到现代的电子计算机,其最重要的特征是,只要给予正确的指示,任何一台电子计算机都可以模拟其他任何计算机的行为(只受限于电子计算机本身的存储容量和执行的速度)。据此,现代电子计算机相对于早期的电子计算机也被称为通用型电子计算机。
历史
ENIAC 是电脑发展史上的一个里程碑本来,计算机的英文原词"computer" 是指从事数据计算的人。
而他们往往都需要借助某些机械计算设备或模拟计算机。这些早期计算设备的祖先包括有算盘,以及可以追溯到公元前年的被古希腊人用于计算行星移动的Antikythera mechanism。随着中世纪末期欧洲数学与工程学的再次繁荣,Wilhelm Schickard于 年率先研制出了欧洲第一台计算设备。
年,Joseph Marie Jacquard对织布机的设计进行了改进,其中他使用了一系列打孔的纸卡片来作为编织复杂图案的程序。Jacquard 式织布机,尽管并不被认为是一台真正的计算机,但是它的出现确实是现代计算机发展过程中重要的一步。
查尔斯?巴比奇(Charles Babbage)是构想和设计一台完全可编程计算机的第一人,当时是年。但由于技术条件,经费限制,以及无法忍耐对设计不停的修补,这台计算机在他有生之年始终未能问世。约到世纪晚期,许多后来被证明对计算机科学有着重大意义的技术相继出现,包括打孔卡片以及真空管。
Hermann Hollerith设计了一台制表用的机器,就实现了应用打孔卡片的大规模自动数据处理。
在世纪前半叶,为了迎合科学计算的需要,许许多多单一用途的并不断深化复杂的模拟计算机被研制出来。这些计算机都是用它们所针对的特定问题的机械或电子模型作为计算基础。
世纪3,年代,计算机的性能逐渐强大并且通用性得到提升,现代计算机的关键特色被不断地加入进来。
克劳德?香农(Claude Shannon)于年发表了他的伟大论文《对继电器和开关电路中的符号分析》,文中首次提及数字电子技术的应用。
他向人们展示了如何使用开关来实现逻辑和数学运算。此后,他通过研究Vannevar Bush的微分模拟器进一步巩固了他的想法。这是一个标志着二进制电子电路设计和逻辑门应用开始的重要时刻,而作为这些关键思想诞生的先驱,应当包括:Almon Strowger,他为一个含有逻辑门电路的设备申请了专利;尼古拉?特斯拉(Nikola Tesla),他早在年就曾申请含有逻辑门的电路设备;Lee De Forest,于年他用真空管代替了继电器。
沿着这样一条上下求索的漫漫长途去定义所谓的“第一台电子计算机”可谓相当困难。年5月日,Konrad Zuse完成了他的机电共享设备“Z3”,这是第一台具有自动二进制数学计算特色以及可行的编程功能的计算机,但还不是“电子”计算机。
此外,其他值得注意的成就主要有:年夏天诞生的Atanasoff-Berry计算机,这是一台具有特定意图的计算机,但它使用了真空管计算器,二进制数值,可复用内存;在英国于年被展示的神秘的巨像计算机(Colossus computer),尽管编程能力极其有限,但是它的的确确告诉了人们使用真空管既值得信赖又能实现电气化的再编程;哈佛大学的Harvard Mark I;以及基于二进制的“埃尼爱克”(ENIAC,年),这是第一台通用意图的计算机,但由于其结构设计不够弹性化,导致对它的每一次再编程都意味着电气物理线路的再连接。
开发埃尼爱克的小组针对其缺陷又进一步完善了设计,并最终呈现出今天我们所熟知的冯?诺伊曼体系结构(程序存储体系结构)。这个体系是当今所有计算机的基础。世纪年代中晚期,大批基于此一体系的计算机开始被研制,其中以英国最早。
尽管第一台研制完成并投入运转的是“小规模实验机”(Small-Scale Experimental Machine,SSEM),但真正被开发出来的实用机很可能是EDSAC。
在整个世纪年代,真空管计算机居于统治地位。
到了年代,晶体管计算机将其取而代之。晶体管体积更小,速度更快,价格更加低廉,性能更加可靠,这使得它们可以被商品化生产。到了年代,集成电路技术的引入极大地降低了计算机生产成本,计算机也从此开始走向千家万户。
[编辑] 原理
个人电脑的主要结构:
显示器
主板
CPU (微处理器)
主要储存器 (内存)
扩充卡
电源供应器
光驱
次要储存器 (硬盘)
键盘
鼠标
尽管计算机技术自世纪年代第一台电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯?诺伊曼体系结构。
这个结构实现了实用化的通用计算机。
存储程序结构间将一台计算机描述成四个主要部分:算术逻辑单元(ALU),控制电路,存储器,以及输入输出设备(I/O)。这些部件通过一组一组的排线连接(特别地,当一组线被用于多种不同意图的数据传输时又被称为总线),并且由一个时钟来驱动(当然某些其他事件也可能驱动控制电路)。
概念上讲,grpc 源码阅读一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。
算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算:第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上,一些ALU根本不支持电路级的乘法和除法运算(由是使用者只能通过编程进行乘除法运算)。
第二类是比较运算,即给定两个数,ALU对其进行比较以确定哪个更大一些。
输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一台标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器,打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。
控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码,并向ALU交付符合指令要求的正确输入,告知ALU对这些数据做那些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。
通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。
世纪年代以来ALU和控制单元(二者合成中央处理器,CPU)逐渐被整合到一块集成电路上,称作微处理器。这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。
这个过程被反复执行,直至得到一个终止指令。
由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动(如:将一个数值从存储单元A拷贝到存储单元B)2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、条件验证(如:如果存储单元A内数值为,则下一条指令地址为存储单元F)4)、指令序列改易(如:下一条指令地址为存储单元F)
指令如同数据一样在计算机内部是以二进制来表示的。
比如说,就是一条Intel x系列微处理器的拷贝指令代码。某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一台新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。
更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天,微处理器和多核个人电脑也在朝这个方向发展。
超级计算机通常有着与基本的存储程序计算机显著区别的体系结构。
它们通常由者数以千计的CPU,不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛体系结构(Harvard architecture)。
[编辑] 计算机的数字电路实现
以上所说的这些概念性设计的物理实现是多种多样的。
如同我们所前述所及,一台存储程序式计算机既可以是巴比奇的机械式的,也可以是基于数字电子的。但是,数字电路可以通过诸如继电器之类的电子控制开关来实现使用2进制数的算术和逻辑运算。香农的论文正是向我们展示了如何排列继电器来组成能够实现简单布尔运算的逻辑门。
其他一些学者很快指出使用真空管可以代替继电器电路。真空管最初被用作无线电电路中的放大器,之后便开始被越来越多地用作数字电子电路中的快速开关。当电子管的一个针脚被通电后,电流就可以在另外两端间自由通过。
通过逻辑门的排列组合我们可以设计完成很多复杂的任务。
举例而言,加法器就是其中之一。该器件在电子领域实现了两个数相加并将结果保存下来—在计算机科学中这样一个通过一组运算来实现某个特定意图的方法被称做一个算法。最终,人们通过数量可观的逻辑门电路组装成功了完整的ALU和控制器。说它数量可观,只需看一下CSIRAC这台可能是最小的实用化电子管计算机。
该机含有个电子管,其中还有不少是双用器件,也即是说总计合有到个逻辑器件。
真空管对于制造规模庞大的门电路明显力不从心。昂贵,不稳(尤其是数量多时),臃肿,能耗高,并且速度也不够快—尽管远超机械开关电路。
这一切导致世纪年代它们被晶体管取代。后者体积更小,易于操作,可靠性高,更省能耗,同时成本也更低。
集成电路是现今电子计算机的基础世纪年代后,晶体管开始逐渐为将大量晶体管、其他各种电器元件和连接导线安置在一片硅板上的集成电路所取代。
年代,ALU和控制器作为组成CPU的两大部分,开始被集成到一块芯片上,并称为“微处理器”。沿着集成电路的发展史,可以看到一片芯片上所集成器件的数量有了飞速增长。第一块集成电路只不过包含几十个部件,而到了年,一块Intel Core Duo 处理器上的晶体管数目高达一亿五千一百万之巨。
无论是电子管,晶体管还是集成电路,它们都可以通过使用一种触发器设计机制来用作存储程序体系结构中的“存储”部件。而事实上触发器的确被用作小规模的超高速存储。但是,几乎没有任何计算机设计使用触发器来进行大规模数据存储。最早的计算机是使用Williams电子管向一个电视屏或若干条水银延迟线(声波通过这种线时的走行速度极为缓慢足够被认为是“存储”在了上面)发射电子束然后再来读取的方式来存储数据的。
当然,这些尽管有效却不怎么优雅的方法最终还是被磁性存储取而代之。比如说磁芯存储器,代表信息的电流可在其中的铁质材料内制造恒久的弱磁场,当这个磁场再被读出时就实现了数据恢复。动态随机存储器(DRAM)亦被发明出来。它是一个包含大量电容的集成电路,而这些电容器件正是负责存储数据电荷—电荷的强度则被定义为数据的值。
[编辑] 输入输出设备
输入输出设备(I/O)是对将外部世界信息发送给计算机的设备和将处理结果返回给外部世界的设备的总称。这些返回结果可能是作为使用者能够视觉上体验的,或是作为该计算机所控制的其他设备的输入:对于一台机器人,控制计算机的输出基本上就是这台机器人本身,如做出各种行为。
第一代计算机的输入输出设备种类非常有限。通常的输入用设备是打孔卡片的读卡机,用来将指令和数据导入内存;而用于存储结果的输出设备则一般是磁带。随着科技的进步,输入输出设备的丰富性得到提高。以个人计算机为例:键盘和鼠标是用户向计算机直接输入信息的主要工具,而显示器、打印机、扩音器、耳机则返回处理结果。
此外还有许多输入设备可以接受其他不同种类的信息,如数码相机可以输入图像。在输入输出设备中,有两类很值得注意:第一类是二级存储设备,如硬盘,[[光盘]]或其他速度缓慢但拥有很高容量的设备。第二个是计算机网络访问设备,通过他们而实现的计算机间直接数据传送极大地提升了计算机的价值。
今天,国际互联网成就了数以千万计的计算机彼此间传送各种类型的数据。
[编辑] 程序
简单说,计算机程序就是计算机执行指令的一个序列。它既可以只是几条执行某个简单任务的指令,也可能是可能要操作巨大数据量的复杂指令队列。
许多计算机程序包含有百万计的指令,而其中很多指令可能被反复执行。在年,一台典型的PC机可以每秒执行大约亿条指令。计算机通常并不会执行一些很复杂的指令来获得额外的机能,更多地它们是在按照程序员的排列来运行那些较简单但为数众多的短指令。
一般情况下,程序员们是不会直接用机器语言来为计算机写入指令的。那么做的结果只能是费时费力、效率低下而且漏洞百出。所以,程序员一般通过“高级”一些的语言来写程序,然后再由某些特别的计算机程序,如解释器或编译器将之翻译成机器语言。
一些编程语言看起来很接近机器语言,如汇编程序,被认为是低级语言。而另一些语言,如即如抽象原则的后台源码修改Prolog,则完全无视计算机实际运行的操作细节,可谓是高级语言。对于一项特定任务,应该根据其事务特点,程序员技能,可用工具和客户需求来选择相应的语言,其中又以客户需求最为重要(美国和中国军队的工程项目通常被要求使用Ada语言)。
计算机软件是与计算机程序并不相等的另一个词汇。计算机软件一个较为包容性较强的技术术语,它包含了用于完成任务的各种程序以及所有相关材料。举例说,一个视频游戏不但只包含程序本身,也包括、声音以及其他创造虚拟游戏环境的数据内容。
在零售市场,在一台计算机上的某个应用程序只是一个面向大量用户的软件的一个副本。这里老生常谈的例子当然还是微软的office软件组,它包括一些列互相关联的、面向一般办公需求的程序。
利用那些极其简单的机器语言指令来实现无数功能强大的应用软件意味着其编程规模注定不小。
Windows XP这个操作系统程序包含的C 高级语言源代码达到了万行。当然这还不是最大的。如此庞大的软件规模也显示了管理在开发过程中的重要性。实际编程时,程序会被细分到每一个程序员都可以在一个可接受的时长内完成的规模。
即便如此,软件开发的过程仍然进程缓慢,不可预见且遗漏多多。
应运而生的软件工程学就重点面向如何加快作业进度和提高效率与质量。
[编辑] 库与操作系统
在计算机诞生后不久,人们发现某些特定作业在许多不同的程序中都要被实施,比如说计算某些标准数学函数。
出于效率考量,这些程序的标准版本就被收集到一个“库”中以供各程序调用。许多任务经常要去额外处理种类繁多的输入输出接口,这时,用于连接的库就能派上用场。
世纪年代,随着计算机工业化普及,计算机越来越多地被用作一个组织内不同作业的处理。
很快,能够自动安排作业时续和执行的特殊软件出现了。这些既控制硬件又负责作业时序安排的软件被称为“操作系统”。一个早期操作系统的例子是IBM的OS/。
在不断地完善中,操作系统又引入了时间共享机制——并发。这使得多个不同用户可以“同时”地使用机器执行他们自己的程序,看起来就像是每个人都有一台自己的计算机。
为此,操作系统需要像每个用户提供一台“虚拟机”来分离各个不同的程序。由于需要操作系统控制的设备也在不断增加,其中之一便是硬盘。因之,操作系统又引入了文件管理和目录管理(文件夹),大大简化了这类永久储存性设备的应用。此外,操作系统也负责安全控制,确保用户只能访问那些已获得允许的文件。
当然,到目前为止操作系统发展历程中最后一个重要步骤就是为程序提供标准图形用户界面(GUI)。尽管没有什么技术原因表明操作系统必须得提供这些界面,但操作系统供应商们总是希望并鼓励那些运行在其系统上的软件能够在外观和行为特征上与操作系统保持一致或相似。
除了以上这些核心功能,操作系统还封装了一系列其他常用工具。其中一些虽然对计算机管理并无重大意义,但是于用户而言很是有用。比如,苹果公司的Mac OS X就包含视频剪辑应用程序。
一些用于更小规模的计算机的操作系统可能没用如此众多的功能。
早期的微型计算机由于内存和处理能力有限而不会提供额外功能,而嵌入式计算机则使用特定化了的操作系统或者干脆没有,它们往往通过应用程序直接代理操作系统的某些功能。
[编辑] 应用
由电脑控制的机械在工业中十分常见 很多现代大量生产的玩具,如Furby,是不能没有便宜的嵌入式处理器
起初,体积庞大而价格昂贵的数字计算机主要是用做执行科学计算,特别是军用课题。
如ENIAC最早就是被用作火炮弹道计算和设计氢弹时计算断面中子密度的(如今许多超级计算机仍然在模拟核试验方面发挥着巨大作用)。澳大利亚设计的首台存储程序计算机CSIR Mk I型负责对水电工程中的集水地带的降雨情形进行评估。还有一些被用于解密,比如英国的“巨像”可编程计算机。
除去这些早年的科学或军工应用,计算机在其他领域的推广亦十分迅速。
从一开始,存储程序计算机就与商业问题的解决息息相关。早在IBM的第一台商用计算机诞生之前,英国J。 Lyons等就设计制造了LEO以进行资产管理或迎合其他商业用途。
由于持续的体积与成本控制,计算机开始向更小型的组织内普及。加之世纪年代微处理器的发明,廉价计算机成为了现实。年代,个人计算机全面流行,电子文档写作与印刷,计算预算和其他重复性的报表作业越来越多地开始依赖计算机。
随着计算机便宜起来,创作性的艺术工作也开始使用它们。
人们利用合成器,计算机图形和动画来创作和修改声音,图像,视频。视频游戏的产业化也说明了计算机在娱乐方面也开创了新的历史。
计算机小型化以来,机械设备的控制也开始仰仗计算机的支持。其实,正是当年为了建造足够小的嵌入式计算机来控制阿波罗宇宙飞船才刺激了集成电路技术的跃进。
今天想要找一台不被计算机控制的有源机械设备要比找一台哪怕是部分计算机控制的设备要难得多。可能最著名的计算机控制设备要非机器人莫属,这些机器有着或多或少人类的外表和并具备人类行为的某一子集。在批量生产中,工业机器人已是寻常之物。不过,完全的拟人机器人还只是停留在科幻小说或实验室之中。
机器人技术实质上是人工智能领域中的物理表达环节。所谓人工智能是一个定义模糊的概念但是可以肯定的是这门学科试图令计算机拥有目前它们还没有但作为人类却固有的能力。数年以来,不断有许多新方法被开发出来以允许计算机做那些之前被认为只有人才能做的事情。
比如读书、下棋。然而,到目前为止,在研制具有人类的一般“整体性”智能的计算机方面,进展仍十分缓慢。
[编辑] 网络、国际互联网
世纪年代以来计算机开始用作协调来自不同地方之信息的工具,美国军方的贤者系统(SAGE)就是这方面第一个大规模系统。
之后“军刀”等一系列特殊用途的商业系统也不断涌现出来。
年代后,美国各大院校的计算机工程师开始使用电信技术把他们的计算机连接起来。由于这方面的工作得到了ARPA的赞助,其计算机网络也就被称为ARPANET。此后,用于ARPA网的技术快速扩散和进化,这个网络也冲破大学和军队的范围最终形成了今天的国际互联网(Internet)。
网络的出现导致了对计算机属性和边界的再定义。太阳微系统公司的John Gage 和 Bill Joy就指出:“网络即是计算机”。计算机操作系统和应用程序纷纷向能访问诸如网内其它计算机等网络资源的方向发展。最初这些网络设备仅限于为高端科学工作者所使用,但年代后随着电子邮件和万维网(World Wide Web)技术的扩散,以及以太网和ADSL等网络连接技术的廉价化,互联网络已变得无所不在。
今日入网的计算机总数,何以千万计;无线互联技术的普及,使得互联网在移动计算环境中亦如影随形。比如在笔记本计算机上广泛使用的Wi-Fi技术就是无线上网的代表性应用。
[编辑] 下一代计算机
尽管自问世以来数字计算机在速度和能力上有了可观的提升,迄今仍有不少课题显得超出了当前计算机的能力所及。
对于其中一部分课题,传统计算机是无论如何也不可能实现的,因为找到一个解决方法的时间还赶不上问题规模的扩展速度。因此,科学家开始将目光转向生物计算技术和量子理论来解决这一类问题。比如,人们计划用生物性的处理来解决特定问题(DNA计算)。由于细胞分裂的指数级增长方式,DNA计算系统很有可能具备解决同等规模问题的能力。
当然,这样一个系统直接受限于可控制的DNA总量。
量子计算机,顾名思义,利用了量子物理世界的超常特性。一旦能够造出量子计算机,那么它在速度上的提升将令一般计算机难以望其项背。当然,这种涉及密码学和量子物理模拟的下一代计算机还只是停留在构想阶段。
上述的计算机目前都还未成型,并且即使成功制造出来,它们也很有可能只会被用作解决那些普通计算机无法解决的问题。
[编辑] 计算机学科
在当今世界,几乎所有专业都与计算机息息相关。
但是,只有某些特定职业和学科才会深入研究计算机本身的制造、编程和使用技术。用来诠释计算机学科内不同研究领域的aspnet安装源码各个学术名词的涵义不断发生变化,同时新学科也层出不穷。
计算机工程学 是电子工程的一个分支,主要研究计算机软硬件和二者间的彼此联系。
计算机科学 是对计算机进行学术研究的传统称谓。主要研究计算技术和执行特定任务的高效算法。该门学科为我们解决确定一个问题在计算机领域内是否可解,如可解其效率如何,以及如何作成更加高效率的程序。时至今日,在计算机科学内已经衍生了许多分支,每一个分支都针对不同类别的问题进行深入研究。
软件工程学 着重于研究开发高质量软件系统的方法学和实践方式,并试图压缩并预测开发成本及开发周期。
信息系统 研究计算机在一个广泛的有组织环境(商业为主)中的计算机应用。
许多学科都与其他学科相互交织。
如地理信息系统专家就是利用计算机技术来管理地理信息。
全球有三个较大规模的致力于计算机科学的组织:英国计算机协会 (BCS);美国计算机协会(ACM);美国电气电子工程师协会(IEEE)。
scilab历史
Scilab的历史可以追溯到世纪年代,起源于INRIA的计算机辅助控制系统设计软件Blaise。最初,由弗朗斯瓦·底列贝克和舍齐·史迪尔共同开发,Blaise的灵感源于Steve Moler用FORTRAN编写的MATLAB软件[1]。 在年,Blaise更名为Basile,由Simulog研发小组负责分发。然而,到了年代初,Simulog停止了Basile的分发。这时,Basile改名为Scilab,Scilab小组由Jean-Philippe Chancelier(来自ENPC)和INRIA的François Delebecque、Claude Gomez、Maurice Goursat、Ramine Nikoukhah、Serge Steer等六位成员组成,他们继续Scilab的开发工作。INRIA随后决定将其作为开源软件进行分发。年1月2日,Scilab的第一个版本Scilab 1.1在匿名ftp站点发布。在此后的很长时间里,直到年底,Scilab的开发和发布主要由这六人团队与外部开发者共同完成[1]。 从年起,Scilab软件的开发和相关技术支持转由新成立的Scilab协会负责。这一转变标志着Scilab在社区支持和专业化管理方面的深化,为后续的持续发展奠定了坚实基础。扩展资料
SCILAB 是由法国国家信息、自动化研究院(INRIA)的科学家们开发的“开放源码”软件。SCILAB 一词来源于英文 “Scientific Laboratory"(科学实验室)词头的合并。美国的一部科幻片,说的是星际移民的事情,很美好的地方,都是欢乐。但是这是假的,根本就没有这个地方,
不是美国的,是这部
**太空运输 Cargo ()
导演: Ivan Engler
编剧: Arnold Bucher / Ivan Engler / Johnny Hartmann
主演: Martin Rapold / Michael Finger / Claude-Oliver Rudolph
类型: 科幻 / 悬疑 / 惊悚 / 冒险
制片国家/地区: 瑞士
语言: 德语
上映日期: -
片长: 分钟
世纪中叶,地球已进入全面崩溃的阶段,战争和传染病让这颗原本美丽的蓝色星球破烂不堪,人类被迫离开赖以生存的家园,远赴外太空寻找新的栖息地。凭借TSA先进的技术,木卫五成为充满希望的新兴乐土。在此之后,大批地球人乘坐飞船前往木卫五,地球逐渐被人遗忘。 但这一切都是假象。
什麽是电脑
英文名称:
computer
电子计算机是一种根据一系列指令来对数据进行处理的机器。所相关的技术研究叫计算机科学,由数据为核心的研究称信息技术。
计算机种类繁多。实际来看,计算机总体上是处理信息的工具。根据图灵机理论,一部具有最基本功能的计算机应当能够完成任何其它计算机能做的事情。因此,只要不考虑时间和存储因素,从个人数码助理(PDA)到超级计算机都应该可以完成同样的作业。即是说,即使是设计完全相同的计算机,只要经过相应改装,就应该可以被用于从公司薪金管理到无人驾驶飞船操控在内的各种任务。由于科技的飞速进步,下一代计算机总是在性能上能够显著地超过其前一代,这一现象有时被称作“摩尔定律”。
计算机在组成上形式不一。早期计算机的体积足有一间房屋大小,而今天某些嵌入式计算机可能比一副扑克牌还小。当然,即使在今天,依然有大量体积庞大的巨型计算机为特别的科学计算或面向大型组织的事务处理需求服务。比较小的,为个人应用而设计的计算机称为微型计算机,简称微机。我们今天在日常使用“计算机”一词时通常也是指此。不过,现在计算机最为普遍的应用形式却是嵌入式的。嵌入式计算机通常相对简单,体积小,并被用来控制其它设备—无论是飞机,工业机器人还是数码相机。
上述对于电子计算机的定义包括了许多能计算或是只有有限功能的特定用途的设备。然而当说到现代的电子计算机,其最重要的特征是,只要给予正确的指示,任何一台电子计算机都可以模拟其他任何计算机的行为(只受限于电子计算机本身的存储容量和执行的速度)。据此,现代电子计算机相对于早期的电子计算机也被称为通用型电子计算机。
历史
ENIAC是电脑发展史上的一个里程碑本来,计算机的英文原词“computer”是指从事数据计算的人。而他们往往都需要借助某些机械计算设备或模拟计算机。这些早期计算设备的祖先包括有算盘,以及可以追溯到公元前年的被古希腊人用于计算行星移动的安提基特拉机制。随着中世纪末期欧洲数学与工程学的再次繁荣,年由Wilhelm Schickard率先研制出了欧洲第一台计算设备,这是一个能进行六位以内数加减法,并能通过铃声输出答案的“计算钟”。使用转动齿轮来进行操作。
年法国数学家Pascal 在WILLIAM Oughtred计算尺的基础上,将计算尺加以改进,能进行八位计算。还卖出了许多制品,成为当时一种时髦的商品。
年,Joseph Marie Jacquard对织布机的设计进行了改进,其中他使用了一系列打孔的纸卡片来作为编织复杂图案的程序。Jacquard式织布机,尽管并不被认为是一台真正的计算机,但是它的出现确实是现代计算机发展过程中重要的一步。
查尔斯・巴比奇(Charles Babbage)是构想和设计一台完全可编程计算机的第一人,当时是年。但由于技术条件,经费限制,以及无法忍耐对设计不停的修补,这台计算机在他有生之年始终未能问世。约到世纪晚期,许多后来被证明对计算机科学有着重大意义的技术相继出现,包括打孔卡片以及真空管。Hermann Hollerith设计了一台制表用的机器,就实现了应用打孔卡片的大规模自动数据处理。
在世纪前半叶,为了迎合科学计算的需要,许许多多单一用途的并不断深化复杂的模拟计算机被研制出来。这些计算机都是用它们所针对的特定问题的机械或电子模型作为计算基础。世纪三四十年代,计算机的性能逐渐强大并且通用性得到提升,现代计算机的关键特色被不断地加入进来。
年由克劳德·艾尔伍德·香农(Claude Shannon)发表了他的伟大论文《对继电器和开关电路中的符号分析》,文中首次提及数字电子技术的应用。他向人们展示了如何使用开关来实现逻辑和数学运算。此后,他通过研究Vannevar Bush的微分模拟器进一步巩固了他的想法。这是一个标志着二进制电子电路设计和逻辑门应用开始的重要时刻,而作为这些关键思想诞生的先驱,应当包括:Almon Strowger,他为一个含有逻辑门电路的设备申请了专利;尼古拉・特斯拉(Nikola Tesla),他早在年就曾申请含有逻辑门的电路设备;Lee De Forest,于年他用真空管代替了继电器。
Commodore公司在世纪八十年代生产的Amiga 电脑沿着这样一条上下求索的漫漫长途去定义所谓的“第一台电子计算机”可谓相当困难。年5月日,Konrad Zuse完成了他的机电共享设备“Z3”,这是第一台具有自动二进制数学计算特色以及可行的编程功能的计算机,但还不是“电子”计算机。此外,其他值得注意的成就主要有:年夏天诞生的阿塔纳索夫-贝瑞计算机是世界上第一台电子计算机,它使用了真空管计算器,二进制数值,可复用内存;在英国于年被展示的神秘的巨像计算机(Colossus computer),尽管编程能力极其有限,但是它的的确确告诉了人们使用真空管既值得信赖又能实现电气化的再编程;哈佛大学的Harvard Mark I;以及基于二进制的“埃尼阿克”(ENIAC,年),这是第一台通用意图的计算机,但由于其结构设计不够弹性化,导致对它的每一次再编程都意味着电气物理线路的再连接。
开发埃尼爱克的权重指标源码小组针对其缺陷又进一步完善了设计,并最终呈现出今天我们所熟知的冯·诺伊曼结构(程序存储体系结构)。这个体系是当今所有计算机的基础。世纪年代中晚期,大批基于此一体系的计算机开始被研制,其中以英国最早。尽管第一台研制完成并投入运转的是“小规模实验机”(Small-Scale Experimental Machine,SSEM),但真正被开发出来的实用机很可能是EDSAC。
在整个世纪年代,真空管计算机居于统治地位。年 9月日 在Robert Noyce(INTEL公司的创始人)的领导下,发明了集成电路。不久又推出了微处理器。年到年间设计的计算机一般被称为第二代计算机。
到了年代,晶体管计算机将其取而代之。晶体管体积更小,速度更快,价格更加低廉,性能更加可靠,这使得它们可以被商品化生产。年到年的计算机一般被称为第三代计算机。大量使用集成电路,典型的机型是IBM系列。
到了年代,集成电路技术的引入极大地降低了计算机生产成本,计算机也从此开始走向千家万户。年以后的计算机习惯上被称为第四代计算机。基于大规模集成电路,及后来的超大规模集成电路。年4月1日 INTEL推出微处理器。年Stephen Wozinak和Stephen Jobs创办苹果计算机公司。并推出其Apple I 计算机。年5月 Apple II 型计算机发布。年6月1日 INTEL发布了8位元的微处理器。
年,微电脑开始普及,大量进入学校和家庭。年1月Commodore 计算机发布,价格:美元。 年2月发布。时钟频率提高到MHz,并增加了保护模式,可访问M内存。支持1GB以上的虚拟内存。每秒执行万条指令,集成了个晶体管。
年月: 第一代MPC (多媒体个人电脑标准)发布。处理器至少/MHz,后来增加到SX/ MHz ,及一个光驱,至少 KB/sec的传输率。年月日 Intel 发布 MHz Pentium处理器。年月1日Pentium Pro发布。主频可达 MHz ,每秒钟完成4.4亿条指令,集成了万个晶体管。年1月8日Intel发布Pentium MMX。对游戏和多媒体功能进行了增强。
此后计算机的变化日新月异,年发表的摩尔定律发表不断被应证,预测在未来~年仍依然适用。
原理
个人电脑的主要结构:
显示器
主板
CPU (中央处理器)
主要储存器 (内存)
扩充卡
电源供应器
光驱
次要储存器 (硬盘)
键盘
鼠标
尽管计算机技术自世纪年代第一台电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯·诺伊曼结构。这个结构实现了实用化的通用计算机。
存储程序结构间将一台计算机描述成四个主要部分:算术逻辑单元(ALU),控制电路,存储器,以及输入输出设备(I/O)。这些部件通过一组一组的排线连接(特别地,当一组线被用于多种不同意图的数据传输时又被称为总线),并且由一个时钟来驱动(当然某些其他事件也可能驱动控制电路)。
概念上讲,一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。
算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算:第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上,一些ALU根本不支持电路级的乘法和除法运算(由是使用者只能通过编程进行乘除法运算)。第二类是比较运算,即给定两个数,ALU对其进行比较以确定哪个更大一些。
输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一台标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器,打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。
控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码,并向ALU交付符合指令要求的正确输入,告知ALU对这些数据做哪些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。
世纪年代以来ALU和控制单元(二者合成中央处理器,CPU)逐渐被整合到一块集成电路上,称作微处理器。这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。这个过程被反复执行,直至得到一个终止指令。
由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动(如:将一个数值从存储单元A拷贝到存储单元B)2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、条件验证(如:如果存储单元A内数值为,则下一条指令地址为存储单元F)4)、指令序列改易(如:下一条指令地址为存储单元F)
指令如同数据一样在计算机内部是以二进制来表示的。比如说,就是一条Intel x系列微处理器的拷贝指令代码。某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一台新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。
更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天,微处理器和多核个人电脑也在朝这个方向发展。
超级计算机通常有着与基本的存储程序计算机显著区别的体系结构。它们通常有着数以千计的CPU,不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛架构(Harvard architecture)。
计算机的数字电路实现
以上所说的这些概念性设计的物理实现是多种多样的。如同我们前述所及,一台存储程序式计算机既可以是巴比奇的机械式的,也可以是基于数字电子的。但是,数字电路可以通过诸如继电器之类的电子控制开关来实现使用2进制数的算术和逻辑运算。香农的论文正是向我们展示了如何排列继电器来组成能够实现简单布尔运算的逻辑门。其他一些学者很快指出使用真空管可以代替继电器电路。真空管最初被用作无线电电路中的放大器,之后便开始被越来越多地用作数字电子电路中的快速开关。当电子管的一个针脚被通电后,电流就可以在另外两端间自由通过。
通过逻辑门的排列组合我们可以设计完成很多复杂的任务。举例而言,加法器就是其中之一。该器件在电子领域实现了两个数相加并将结果保存下来—在计算机科学中这样一个通过一组运算来实现某个特定意图的方法被称做一个算法。最终,人们通过数量可观的逻辑门电路组装成功了完整的ALU和控制器。说它数量可观,只需看一下CSIRAC这台可能是最小的实用化电子管计算机。该机含有个电子管,其中还有不少是双用器件,也即是说总计合有到个逻辑器件。
真空管对于制造规模庞大的门电路明显力不从心。昂贵,不稳(尤其是数量多时),臃肿,能耗高,并且速度也不够快—尽管远超机械开关电路。这一切导致世纪年代它们被晶体管取代。后者体积更小,易于操作,可靠性高,更省能耗,同时成本也更低。
集成电路是现今电子计算机的基础世纪年代后,晶体管开始逐渐为将大量晶体管、其他各种电器元件和连接导线安置在一片硅板上的集成电路所取代。年代,ALU和控制器作为组成CPU的两大部分,开始被集成到一块芯片上,并称为“微处理器”。沿着集成电路的发展史,可以看到一片芯片上所集成器件的数量有了飞速增长。第一块集成电路只不过包含几十个部件,而到了年,一块Intel Core Duo处理器上的晶体管数目高达一亿五千一百万之巨。
无论是电子管,晶体管还是集成电路,它们都可以通过使用一种触发器设计机制来用作存储程序体系结构中的“存储”部件。而事实上触发器的确被用作小规模的超高速存储。但是,几乎没有任何计算机设计使用触发器来进行大规模数据存储。最早的计算机是使用Williams电子管向一个电视屏或若干条水银延迟线(声波通过这种线时的走行速度极为缓慢足够被认为是“存储”在了上面)发射电子束然后再来读取的方式来存储数据的。当然,这些尽管有效却不怎么优雅的方法最终还是被磁性存储取而代之。比如说磁芯存储器,代表信息的电流可在其中的铁质材料内制造恒久的弱磁场,当这个磁场再被读出时就实现了数据恢复。动态随机存储器(DRAM)亦被发明出来。它是一个包含大量电容的集成电路,而这些电容器件正是负责存储数据电荷—电荷的强度则被定义为数据的值。
输入输出设备
输入输出设备(I/O)是对将外部世界信息发送给计算机的设备和将处理结果返回给外部世界的设备的总称。这些返回结果可能是作为使用者能够视觉上体验的,或是作为该计算机所控制的其他设备的输入:对于一台机器人,控制计算机的输出基本上就是这台机器人本身,如做出各种行为。
第一代计算机的输入输出设备种类非常有限。通常的输入用设备是打孔卡片的读卡机,用来将指令和数据导入内存;而用于存储结果的输出设备则一般是磁带。随着科技的进步,输入输出设备的丰富性得到提高。以个人计算机为例:键盘和鼠标是用户向计算机直接输入信息的主要工具,而显示器、打印机、扩音器、耳机则返回处理结果。此外还有许多输入设备可以接受其他不同种类的信息,如数码相机可以输入图像。在输入输出设备中,有两类很值得注意:第一类是二级存储设备,如硬盘,光碟或其他速度缓慢但拥有很高容量的设备。第二个是计算机网络访问设备,通过他们而实现的计算机间直接数据传送极大地提升了计算机的价值。今天,国际互联网成就了数以千万计的计算机彼此间传送各种类型的数据。
程序
简单说,计算机程序就是计算机执行指令的一个序列。它既可以只是几条执行某个简单任务的指令,也可能是可能要操作巨大数据量的复杂指令队列。许多计算机程序包含有百万计的指令,而其中很多指令可能被反复执行。在年,一台典型的个人电脑可以每秒执行大约亿条指令。计算机通常并不会执行一些很复杂的指令来获得额外的机能,更多地它们是在按照程序员的排列来运行那些较简单但为数众多的短指令。
一般情况下,程序员们是不会直接用机器语言来为计算机写入指令的。那么做的结果只能是费时费力、效率低下而且漏洞百出。所以,程序员一般通过“高级”一些的语言来写程序,然后再由某些特别的计算机程序,如解释器或编译器将之翻译成机器语言。一些编程语言看起来很接近机器语言,如汇编程序,被认为是低级语言。而另一些语言,如即如抽象原则的Prolog,则完全无视计算机实际运行的操作细节,可谓是高级语言。对于一项特定任务,应该根据其事务特点,程序员技能,可用工具和客户需求来选择相应的语言,其中又以客户需求最为重要(美国和中国军队的工程项目通常被要求使用Ada语言)。
计算机软件是与计算机程序并不相等的另一个词汇。计算机软件一个较为包容性较强的技术术语,它包含了用于完成任务的各种程序以及所有相关材料。举例说,一个视频游戏不但只包含程序本身,也包括、声音以及其他创造虚拟游戏环境的数据内容。在零售市场,在一台计算机上的某个应用程序只是一个面向大量用户的软件的一个副本。这里老生常谈的例子当然还是微软的office软件组,它包括一些列互相关联的、面向一般办公需求的程序。
利用那些极其简单的机器语言指令来实现无数功能强大的应用软件意味着其编程规模注定不小。Windows XP这个操作系统程序包含的C++高级语言源代码达到了万行。当然这还不是最大的。如此庞大的软件规模也显示了管理在开发过程中的重要性。实际编程时,程序会被细分到每一个程序员都可以在一个可接受的时长内完成的规模。
即便如此,软件开发的过程仍然进程缓慢,不可预见且遗漏多多。应运而生的软件工程学就重点面向如何加快作业进度和提高效率与质量。
库与操作系统
在计算机诞生后不久,人们发现某些特定作业在许多不同的程序中都要被实施,比如说计算某些标准数学函数。出于效率考量,这些程序的标准版本就被收集到一个“库”中以供各程序调用。许多任务经常要去额外处理种类繁多的输入输出接口,这时,用于连接的库就能派上用场。
世纪年代,随着计算机工业化普及,计算机越来越多地被用作一个组织内不同作业的处理。很快,能够自动安排作业时续和执行的特殊软件出现了。这些既控制硬件又负责作业时序安排的软件被称为“操作系统”。一个早期操作系统的例子是IBM的OS/。
在不断地完善中,操作系统又引入了时间共享机制——并发。这使得多个不同用户可以“同时”地使用机器执行他们自己的程序,看起来就像是每个人都有一台自己的计算机。为此,操作系统需要像每个用户提供一台“虚拟机”来分离各个不同的程序。由于需要操作系统控制的设备也在不断增加,其中之一便是硬盘。因之,操作系统又引入了文件管理和目录管理(文件夹),大大简化了这类永久储存性设备的应用。此外,操作系统也负责安全控制,确保用户只能访问那些已获得允许的文件。
当然,到目前为止操作系统发展历程中最后一个重要步骤就是为程序提供标准图形用户界面(GUI)。尽管没有什么技术原因表明操作系统必须得提供这些界面,但操作系统供应商们总是希望并鼓励那些运行在其系统上的软件能够在外观和行为特征上与操作系统保持一致或相似。
除了以上这些核心功能,操作系统还封装了一系列其他常用工具。其中一些虽然对计算机管理并无重大意义,但是于用户而言很是有用。比如,苹果公司的Mac OS X就包含视频剪辑应用程序。
一些用于更小规模的计算机的操作系统可能没用如此众多的功能。早期的微型计算机由于记忆体和处理能力有限而不会提供额外功能,而嵌入式计算机则使用特定化了的操作系统或者干脆没有,它们往往通过应用程序直接代理操作系统的某些功能。
应用
由电脑控制的机械在工业中十分常见
很多现代大量生产的玩具,如Furby,是不能没有便宜的嵌入式处理器
起初,体积庞大而价格昂贵的数字计算机主要是用做执行科学计算,特别是军用课题。如ENIAC最早就是被用作火炮弹道计算和设计氢弹时计算断面中子密度的(如今许多超级计算机仍然在模拟核试验方面发挥着巨大作用)。澳大利亚设计的首台存储程序计算机CSIR Mk I型负责对水电工程中的集水地带的降雨情形进行评估。还有一些被用于解密,比如英国的“巨像”可编程计算机。除去这些早年的科学或军工应用,计算机在其他领域的推广亦十分迅速。
从一开始,存储程序计算机就与商业问题的解决息息相关。早在IBM的第一台商用计算机诞生之前,英国J. Lyons等就设计制造了LEO以进行资产管理或迎合其他商业用途。由于持续的体积与成本控制,计算机开始向更小型的组织内普及。加之世纪年代微处理器的发明,廉价计算机成为了现实。年代,个人计算机全面流行,电子文档写作与印刷,计算预算和其他重复性的报表作业越来越多地开始依赖计算机。
随着计算机便宜起来,创作性的艺术工作也开始使用它们。人们利用合成器,计算机图形和动画来创作和修改声音,图像,视频。视频游戏的产业化也说明了计算机在娱乐方面也开创了新的历史。
计算机小型化以来,机械设备的控制也开始仰仗计算机的支持。其实,正是当年为了建造足够小的嵌入式计算机来控制阿波罗宇宙飞船才刺激了集成电路技术的跃进。今天想要找一台不被计算机控制的有源机械设备要比找一台哪怕是部分计算机控制的设备要难得多。可能最著名的计算机控制设备要非机器人莫属,这些机器有着或多或少人类的外表和并具备人类行为的某一子集。在批量生产中,工业机器人已是寻常之物。不过,完全的拟人机器人还只是停留在科幻小说或实验室之中。
机器人技术实质上是人工智能领域中的物理表达环节。所谓人工智能是一个定义模糊的概念但是可以肯定的是这门学科试图令计算机拥有目前它们还没有但作为人类却固有的能力。数年以来,不断有许多新方法被开发出来以允许计算机做那些之前被认为只有人才能做的事情。比如读书、下棋。然而,到目前为止,在研制具有人类的一般“整体性”智能的计算机方面,进展仍十分缓慢。
网络、国际互联网
世纪年代以来计算机开始用作协调来自不同地方之信息的工具,美国军方的贤者系统(SAGE)就是这方面第一个大规模系统。之后“军刀”等一系列特殊用途的商业系统也不断涌现出来。
年代后,美国各大院校的计算机工程师开始使用电信技术把他们的计算机连接起来。由于这方面的工作得到了ARPA的赞助,其计算机网络也就被称为ARPANET。此后,用于ARPA网的技术快速扩散和进化,这个网络也冲破大学和军队的范围最终形成了今天的国际互联网(Internet)。网络的出现导致了对计算机属性和边界的再定义。太阳微系统公司的John Gage 和 Bill Joy就指出:“网络即是计算机”。计算机操作系统和应用程序纷纷向能访问诸如网内其它计算机等网络资源的方向发展。最初这些网络设备仅限于为高端科学工作者所使用,但年代后随着电子邮件和万维网(World Wide Web)技术的扩散,以及以太网和ADSL等网络连接技术的廉价化,互联网络已变得无所不在。今日入网的计算机总数,何以千万计;无线互联技术的普及,使得互联网在移动计算环境中亦如影随形。比如在笔记本计算机上广泛使用的Wi-Fi技术就是无线上网的代表性应用。
下一代计算机
自问世以来数字计算机在速度和能力上有了可观的提升,迄今仍有不少课题显得超出了当前计算机的能力所及。对于其中一部分课题,传统计算机是无论如何也不可能实现的,因为找到一个解决方法的时间还赶不上问题规模的扩展速度。因此,科学家开始将目光转向生物计算技术和量子理论来解决这一类问题。比如,人们计划用生物性的处理来解决特定问题(DNA计算)。由于细胞分裂的指数级增长方式,DNA计算系统很有可能具备解决同等规模问题的能力。当然,这样一个系统直接受限于可控制的DNA总量。
量子计算机,顾名思义,利用了量子物理世界的超常特性。一旦能够造出量子计算机,那么它在速度上的提升将令一般计算机难以望其项背。当然,这种涉及密码学和量子物理模拟的下一代计算机还只是停留在构想阶段。
计算机学科
在当今世界,几乎所有专业都与计算机息息相关。但是,只有某些特定职业和学科才会深入研究计算机本身的制造、编程和使用技术。用来诠释计算机学科内不同研究领域的各个学术名词的涵义不断发生变化,同时新学科也层出不穷。
计算机工程学 是电子工程的一个分支,主要研究计算机软硬件和二者间的彼此联系。
计算机科学 是对计算机进行学术研究的传统称谓。主要研究计算技术和执行特定任务的高效算法。该门学科为我们解决确定一个问题在计算机领域内是否可解,如可解其效率如何,以及如何作成更加高效率的程序。时至今日,在计算机科学内已经衍生了许多分支,每一个分支都针对不同类别的问题进行深入研究。
软件工程学 着重于研究开发高质量软件系统的方法学和实践方式,并试图压缩并预测开发成本及开发周期。
信息系统 研究计算机在一个广泛的有组织环境(商业为主)中的计算机应用。
什么是电脑
computer
电子计算机是一种根据一系列指令来对数据进行处理的机器。所相关的技术研究叫计算机科学,由数据为核心的研究称信息技术。
计算机种类繁多。实际来看,计算机总体上是处理信息的工具。根据图灵机理论,一部具有最基本功能的计算机应当能够完成任何其它计算机能做的事情。因此,只要不考虑时间和存储因素,从个人数码助理(PDA)到超级计算机都应该可以完成同样的作业。即是说,即使是设计完全相同的计算机,只要经过相应改装,就应该可以被用于从公司薪金管理到无人驾驶飞船操控在内的各种任务。由于科技的飞速进步,下一代计算机总是在性能上能够显著地超过其前一代,这一现象有时被称作“摩尔定律”。
计算机在组成上形式不一。早期计算机的体积足有一间房屋大小,而今天某些嵌入式计算机可能比一副扑克牌还小。当然,即使在今天,依然有大量体积庞大的巨型计算机为特别的科学计算或面向大型组织的事务处理需求服务。比较小的,为个人应用而设计的计算机称为微型计算机,简称微机。我们今天在日常使用“计算机”一词时通常也是指此。不过,现在计算机最为普遍的应用形式却是嵌入式的。嵌入式计算机通常相对简单,体积小,并被用来控制其它设备—无论是飞机,工业机器人还是数码相机。
上述对于电子计算机的定义包括了许多能计算或是只有有限功能的特定用途的设备。然而当说到现代的电子计算机,其最重要的特征是,只要给予正确的指示,任何一台电子计算机都可以模拟其他任何计算机的行为(只受限于电子计算机本身的存储容量和执行的速度)。据此,现代电子计算机相对于早期的电子计算机也被称为通用型电子计算机。
历史
ENIAC是电脑发展史上的一个里程碑本来,计算机的英文原词“computer”是指从事数据计算的人。而他们往往都需要借助某些机械计算设备或模拟计算机。这些早期计算设备的祖先包括有算盘,以及可以追溯到公元前年的被古希腊人用于计算行星移动的安提基特拉机制。随着中世纪末期欧洲数学与工程学的再次繁荣,年由Wilhelm Schickard率先研制出了欧洲第一台计算设备,这是一个能进行六位以内数加减法,并能通过铃声输出答案的“计算钟”。使用转动齿轮来进行操作。
年法国数学家Pascal 在WILLIAM Oughtred计算尺的基础上,将计算尺加以改进,能进行八位计算。还卖出了许多制品,成为当时一种时髦的商品。
年,Joseph Marie Jacquard对织布机的设计进行了改进,其中他使用了一系列打孔的纸卡片来作为编织复杂图案的程序。Jacquard式织布机,尽管并不被认为是一台真正的计算机,但是它的出现确实是现代计算机发展过程中重要的一步。
查尔斯・巴比奇(Charles Babbage)是构想和设计一台完全可编程计算机的第一人,当时是年。但由于技术条件,经费限制,以及无法忍耐对设计不停的修补,这台计算机在他有生之年始终未能问世。约到世纪晚期,许多后来被证明对计算机科学有着重大意义的技术相继出现,包括打孔卡片以及真空管。Hermann Hollerith设计了一台制表用的机器,就实现了应用打孔卡片的大规模自动数据处理。
在世纪前半叶,为了迎合科学计算的需要,许许多多单一用途的并不断深化复杂的模拟计算机被研制出来。这些计算机都是用它们所针对的特定问题的机械或电子模型作为计算基础。世纪三四十年代,计算机的性能逐渐强大并且通用性得到提升,现代计算机的关键特色被不断地加入进来。
年由克劳德·艾尔伍德·香农(Claude Shannon)发表了他的伟大论文《对继电器和开关电路中的符号分析》,文中首次提及数字电子技术的应用。他向人们展示了如何使用开关来实现逻辑和数学运算。此后,他通过研究Vannevar Bush的微分模拟器进一步巩固了他的想法。这是一个标志着二进制电子电路设计和逻辑门应用开始的重要时刻,而作为这些关键思想诞生的先驱,应当包括:Almon Strowger,他为一个含有逻辑门电路的设备申请了专利;尼古拉・特斯拉(Nikola Tesla),他早在年就曾申请含有逻辑门的电路设备;Lee De Forest,于年他用真空管代替了继电器。
Commodore公司在世纪八十年代生产的Amiga 电脑沿着这样一条上下求索的漫漫长途去定义所谓的“第一台电子计算机”可谓相当困难。年5月日,Konrad Zuse完成了他的机电共享设备“Z3”,这是第一台具有自动二进制数学计算特色以及可行的编程功能的计算机,但还不是“电子”计算机。此外,其他值得注意的成就主要有:年夏天诞生的阿塔纳索夫-贝瑞计算机是世界上第一台电子计算机,它使用了真空管计算器,二进制数值,可复用内存;在英国于年被展示的神秘的巨像计算机(Colossus computer),尽管编程能力极其有限,但是它的的确确告诉了人们使用真空管既值得信赖又能实现电气化的再编程;哈佛大学的Harvard Mark I;以及基于二进制的“埃尼阿克”(ENIAC,年),这是第一台通用意图的计算机,但由于其结构设计不够弹性化,导致对它的每一次再编程都意味着电气物理线路的再连接。
开发埃尼阿克的小组针对其缺陷又进一步完善了设计,并最终呈现出今天我们所熟知的冯·诺伊曼结构(程序存储体系结构)。这个体系是当今所有计算机的基础。世纪年代中晚期,大批基于此一体系的计算机开始被研制,其中以英国最早。尽管第一台研制完成并投入运转的是“小规模实验机”(Small-Scale Experimental Machine,SSEM),但真正被开发出来的实用机很可能是EDSAC。
在整个世纪年代,真空管计算机居于统治地位。年 9月日 在Robert Noyce(INTEL公司的创始人)的领导下,发明了集成电路。不久又推出了微处理器。年到年间设计的计算机一般被称为第二代计算机。
到了年代,晶体管计算机将其取而代之。晶体管体积更小,速度更快,价格更加低廉,性能更加可靠,这使得它们可以被商品化生产。年到年的计算机一般被称为第三代计算机。大量使用集成电路,典型的机型是IBM系列。
到了年代,集成电路技术的引入极大地降低了计算机生产成本,计算机也从此开始走向千家万户。年以后的计算机习惯上被称为第四代计算机。基于大规模集成电路,及后来的超大规模集成电路。年4月1日 INTEL推出微处理器。年Stephen Wozinak和Stephen Jobs创办苹果计算机公司。并推出其Apple I 计算机。年5月 Apple II 型计算机发布。年6月1日 INTEL发布了8位元的微处理器。
年,微型电脑开始普及,大量进入学校和家庭。年1月Commodore 计算机发布,价格:美元。 年2月发布。时钟频率提高到MHz,并增加了保护模式,可访问M内存。支持1GB以上的虚拟内存。每秒执行万条指令,集成了个晶体管。
年月: 第一代MPC (多媒体个人电脑标准)发布。处理器至少/MHz,后来增加到SX/ MHz ,及一个光驱,至少 KB/sec的传输率。年月日 Intel 发布 MHz Pentium处理器。年月1日Pentium Pro发布。主频可达 MHz ,每秒钟完成4.4亿条指令,集成了万个晶体管。年1月8日Intel发布Pentium MMX。对游戏和多媒体功能进行了增强。
此后计算机的变化日新月异,年发表的摩尔定律发表不断被应证,预测在未来~年仍依然适用。
原理
个人电脑(PC:personal computer )的主要结构:
显示器
主板
CPU (中央处理器)
主要储存器 (内存)
扩充卡(显示卡 声卡 网卡等 有些主板可以整合这些)
电源供应器
光驱
次要储存器 (硬盘)
键盘
鼠标
尽管计算机技术自世纪年代第一台电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯·诺伊曼结构。这个结构实现了实用化的通用计算机。
存储程序结构间将一台计算机描述成四个主要部分:算术逻辑单元(ALU),控制电路,存储器,以及输入输出设备(I/O)。这些部件通过一组一组的排线连接(特别地,当一组线被用于多种不同意图的数据传输时又被称为总线),并且由一个时钟来驱动(当然某些其他事件也可能驱动控制电路)。
概念上讲,一部计算机的存储器可以被视为一组“细胞”单元。每一个“细胞”都有一个编号,称为地址;又都可以存储一个较小的定长信息。这个信息既可以是指令(告诉计算机去做什么),也可以是数据(指令的处理对象)。原则上,每一个“细胞”都是可以存储二者之任一的。
算术逻辑单元(ALU)可以被称作计算机的大脑。它可以做两类运算:第一类是算术运算,比如对两个数字进行加减法。算术运算部件的功能在ALU中是十分有限的,事实上,一些ALU根本不支持电路级的乘法和除法运算(由是使用者只能通过编程进行乘除法运算)。第二类是比较运算,即给定两个数,ALU对其进行比较以确定哪个更大一些。
输入输出系统是计算机从外部世界接收信息和向外部世界反馈运算结果的手段。对于一台标准的个人电脑,输入设备主要有键盘和鼠标,输出设备则是显示器,打印机以及其他许多后文将要讨论的可连接到计算机上的I/O设备。
控制系统将以上计算机各部分联系起来。它的功能是从存储器和输入输出设备中读取指令和数据,对指令进行解码,并向ALU交付符合指令要求的正确输入,告知ALU对这些数据做哪些运算并将结果数据返回到何处。控制系统中一个重要组件就是一个用来保持跟踪当前指令所在地址的计数器。通常这个计数器随着指令的执行而累加,但有时如果指令指示进行跳转则不依此规则。
世纪年代以来ALU和控制单元(二者合成中央处理器,CPU)逐渐被整合到一块集成电路上,称作微处理器。这类计算机的工作模式十分直观:在一个时钟周期内,计算机先从存储器中获取指令和数据,然后执行指令,存储数据,再获取下一条指令。这个过程被反复执行,直至得到一个终止指令。
由控制器解释,运算器执行的指令集是一个精心定义的数目十分有限的简单指令集合。一般可以分为四类:1)、数据移动(如:将一个数值从存储单元A拷贝到存储单元B)2)、数逻运算(如:计算存储单元A与存储单元B之和,结果返回存储单元C)3)、条件验证(如:如果存储单元A内数值为,则下一条指令地址为存储单元F)4)、指令序列改易(如:下一条指令地址为存储单元F)
指令如同数据一样在计算机内部是以二进制来表示的。比如说,就是一条Intel x系列微处理器的拷贝指令代码。某一个计算机所支持的指令集就是该计算机的机器语言。因此,使用流行的机器语言将会使既成软件在一台新计算机上运行得更加容易。所以对于那些机型商业化软件开发的人来说,它们通常只会关注一种或几种不同的机器语言。
更加强大的小型计算机,大型计算机和服务器可能会与上述计算机有所不同。它们通常将任务分担给不同的CPU来执行。今天,微处理器和多核个人电脑也在朝这个方向发展。
超级计算机通常有着与基本的存储程序计算机显著区别的体系结构。它们通常有着数以千计的CPU,不过这些设计似乎只对特定任务有用。在各种计算机中,还有一些微控制器采用令程序和数据分离的哈佛架构(Harvard architecture)。
计算机的数字电路实现
以上所说的这些概念性设计的物理实现是多种多样的。如同我们前述所及,一台存储程序式计算机既可以是巴比奇的机械式的,也可以是基于数字电子的。但是,数字电路可以通过诸如继电器之类的电子控制开关来实现使用2进制数的算术和逻辑运算。香农的论文正是向我们展示了如何排列继电器来组成能够实现简单布尔运算的逻辑门。其他一些学者很快指出使用真空管可以代替继电器电路。真空管最初被用作无线电电路中的放大器,之后便开始被越来越多地用作数字电子电路中的快速开关。当电子管的一个针脚被通电后,电流就可以在另外两端间自由通过。
通过逻辑门的排列组合我们可以设计完成很多复杂的任务。举例而言,加法器就是其中之一。该器件在电子领域实现了两个数相加并将结果保存下来—在计算机科学中这样一个通过一组运算来实现某个特定意图的方法被称做一个算法。最终,人们通过数量可观的逻辑门电路组装成功了完整的ALU和控制器。说它数量可观,只需看一下CSIRAC这台可能是最小的实用化电子管计算机。该机含有个电子管,其中还有不少是双用器件,也即是说总计合有到个逻辑器件。
真空管对于制造规模庞大的门电路明显力不从心。昂贵,不稳(尤其是数量多时),臃肿,能耗高,并且速度也不够快—尽管远超机械开关电路。这一切导致世纪年代它们被晶体管取代。后者体积更小,易于操作,可靠性高,更省能耗,同时成本也更低。
集成电路是现今电子计算机的基础世纪年代后,晶体管开始逐渐为将大量晶体管、其他各种电器元件和连接导线安置在一片硅板上的集成电路所取代。年代,ALU和控制器作为组成CPU的两大部分,开始被集成到一块芯片上,并称为“微处理器”。沿着集成电路的发展史,可以看到一片芯片上所集成器件的数量有了飞速增长。第一块集成电路只不过包含几十个部件,而到了年,一块Intel Core Duo处理器上的晶体管数目高达一亿五千一百万之巨。
无论是电子管,晶体管还是集成电路,它们都可以通过使用一种触发器设计机制来用作存储程序体系结构中的“存储”部件。而事实上触发器的确被用作小规模的超高速存储。但是,几乎没有任何计算机设计使用触发器来进行大规模数据存储。最早的计算机是使用Williams电子管向一个电视屏或若干条水银延迟线(声波通过这种线时的走行速度极为缓慢足够被认为是“存储”在了上面)发射电子束然后再来读取的方式来存储数据的。当然,这些尽管有效却不怎么优雅的方法最终还是被磁性存储取而代之。比如说磁芯存储器,代表信息的电流可在其中的铁质材料内制造恒久的弱磁场,当这个磁场再被读出时就实现了数据恢复。动态随机存储器(DRAM)亦被发明出来。它是一个包含大量电容的集成电路,而这些电容器件正是负责存储数据电荷—电荷的强度则被定义为数据的值。
输入输出设备
输入输出设备(I/O)是对将外部世界信息发送给计算机的设备和将处理结果返回给外部世界的设备的总称。这些返回结果可能是作为使用者能够视觉上体验的,或是作为该计算机所控制的其他设备的输入:对于一台机器人,控制计算机的输出基本上就是这台机器人本身,如做出各种行为。
第一代计算机的输入输出设备种类非常有限。通常的输入用设备是打孔卡片的读卡机,用来将指令和数据导入内存;而用于存储结果的输出设备则一般是磁带。随着科技的进步,输入输出设备的丰富性得到提高。以个人计算机为例:键盘和鼠标是用户向计算机直接输入信息的主要工具,而显示器、打印机、扩音器、耳机则返回处理结果。此外还有许多输入设备可以接受其他不同种类的信息,如数码相机可以输入图像。在输入输出设备中,有两类很值得注意:第一类是二级存储设备,如硬盘,光碟或其他速度缓慢但拥有很高容量的设备。第二个是计算机网络访问设备,通过他们而实现的计算机间直接数据传送极大地提升了计算机的价值。今天,国际互联网成就了数以千万计的计算机彼此间传送各种类型的数据。
程序
简单说,计算机程序就是计算机执行指令的一个序列。它既可以只是几条执行某个简单任务的指令,也可能是可能要操作巨大数据量的复杂指令队列。许多计算机程序包含有百万计的指令,而其中很多指令可能被反复执行。在年,一台典型的个人电脑可以每秒执行大约亿条指令。计算机通常并不会执行一些很复杂的指令来获得额外的机能,更多地它们是在按照程序员的排列来运行那些较简单但为数众多的短指令。
一般情况下,程序员们是不会直接用机器语言来为计算机写入指令的。那么做的结果只能是费时费力、效率低下而且漏洞百出。所以,程序员一般通过“高级”一些的语言来写程序,然后再由某些特别的计算机程序,如解释器或编译器将之翻译成机器语言。一些编程语言看起来很接近机器语言,如汇编程序,被认为是低级语言。而另一些语言,如即如抽象原则的Prolog,则完全无视计算机实际运行的操作细节,可谓是高级语言。对于一项特定任务,应该根据其事务特点,程序员技能,可用工具和客户需求来选择相应的语言,其中又以客户需求最为重要(美国和中国军队的工程项目通常被要求使用Ada语言)。
计算机软件是与计算机程序并不相等的另一个词汇。计算机软件一个较为包容性较强的技术术语,它包含了用于完成任务的各种程序以及所有相关材料。举例说,一个视频游戏不但只包含程序本身,也包括、声音以及其他创造虚拟游戏环境的数据内容。在零售市场,在一台计算机上的某个应用程序只是一个面向大量用户的软件的一个副本。这里老生常谈的例子当然还是微软的office软件组,它包括一些列互相关联的、面向一般办公需求的程序。
利用那些极其简单的机器语言指令来实现无数功能强大的应用软件意味着其编程规模注定不小。Windows XP这个操作系统程序包含的C++高级语言源代码达到了万行。当然这还不是最大的。如此庞大的软件规模也显示了管理在开发过程中的重要性。实际编程时,程序会被细分到每一个程序员都可以在一个可接受的时长内完成的规模。
即便如此,软件开发的过程仍然进程缓慢,不可预见且遗漏多多。应运而生的软件工程学就重点面向如何加快作业进度和提高效率与质量。
库与操作系统
在计算机诞生后不久,人们发现某些特定作业在许多不同的程序中都要被实施,比如说计算某些标准数学函数。出于效率考量,这些程序的标准版本就被收集到一个“库”中以供各程序调用。许多任务经常要去额外处理种类繁多的输入输出接口,这时,用于连接的库就能派上用场。
世纪年代,随着计算机工业化普及,计算机越来越多地被用作一个组织内不同作业的处理。很快,能够自动安排作业时续和执行的特殊软件出现了。这些既控制硬件又负责作业时序安排的软件被称为“操作系统”。一个早期操作系统的例子是IBM的OS/。
在不断地完善中,操作系统又引入了时间共享机制——并发。这使得多个不同用户可以“同时”地使用机器执行他们自己的程序,看起来就像是每个人都有一台自己的计算机。为此,操作系统需要像每个用户提供一台“虚拟机”来分离各个不同的程序。由于需要操作系统控制的设备也在不断增加,其中之一便是硬盘。因之,操作系统又引入了文件管理和目录管理(文件夹),大大简化了这类永久储存性设备的应用。此外,操作系统也负责安全控制,确保用户只能访问那些已获得允许的文件。
当然,到目前为止操作系统发展历程中最后一个重要步骤就是为程序提供标准图形用户界面(GUI)。尽管没有什么技术原因表明操作系统必须得提供这些界面,但操作系统供应商们总是希望并鼓励那些运行在其系统上的软件能够在外观和行为特征上与操作系统保持一致或相似。
除了以上这些核心功能,操作系统还封装了一系列其他常用工具。其中一些虽然对计算机管理并无重大意义,但是于用户而言很是有用。比如,苹果公司的Mac OS X就包含视频剪辑应用程序。
一些用于更小规模的计算机的操作系统可能没用如此众多的功能。早期的微型计算机由于记忆体和处理能力有限而不会提供额外功能,而嵌入式计算机则使用特定化了的操作系统或者干脆没有,它们往往通过应用程序直接代理操作系统的某些功能。
应用
由电脑控制的机械在工业中十分常见。
很多现代大量生产的玩具,如Furby,是不能没有便宜的嵌入式处理器 。
起初,体积庞大而价格昂贵的数字计算机主要是用做执行科学计算,特别是军用课题。如ENIAC最早就是被用作火炮弹道计算和设计氢弹时计算断面中子密度的(如今许多超级计算机仍然在模拟核试验方面发挥着巨大作用)。澳大利亚设计的首台存储程序计算机CSIR Mk I型负责对水电工程中的集水地带的降雨情形进行评估。还有一些被用于解密,比如英国的“巨像”可编程计算机。除去这些早年的科学或军工应用,计算机在其他领域的推广亦十分迅速。
从一开始,存储程序计算机就与商业问题的解决息息相关。早在IBM的第一台商用计算机诞生之前,英国J. Lyons等就设计制造了LEO以进行资产管理或迎合其他商业用途。由于持续的体积与成本控制,计算机开始向更小型的组织内普及。加之世纪年代微处理器的发明,廉价计算机成为了现实。年代,个人计算机全面流行,电子文档写作与印刷,计算预算和其他重复性的报表作业越来越多地开始依赖计算机。
随着计算机便宜起来,创作性的艺术工作也开始使用它们。人们利用合成器,计算机图形和动画来创作和修改声音,图像,视频。视频游戏的产业化也说明了计算机在娱乐方面也开创了新的历史。
计算机小型化以来,机械设备的控制也开始仰仗计算机的支持。其实,正是当年为了建造足够小的嵌入式计算机来控制阿波罗宇宙飞船才刺激了集成电路技术的跃进。今天想要找一台不被计算机控制的有源机械设备要比找一台哪怕是部分计算机控制的设备要难得多。可能最著名的计算机控制设备要非机器人莫属,这些机器有着或多或少人类的外表和并具备人类行为的某一子集。在批量生产中,工业机器人已是寻常之物。不过,完全的拟人机器人还只是停留在科幻小说或实验室之中。
机器人技术实质上是人工智能领域中的物理表达环节。所谓人工智能是一个定义模糊的概念但是可以肯定的是这门学科试图令计算机拥有目前它们还没有但作为人类却固有的能力。数年以来,不断有许多新方法被开发出来以允许计算机做那些之前被认为只有人才能做的事情。比如读书、下棋。然而,到目前为止,在研制具有人类的一般“整体性”智能的计算机方面,进展仍十分缓慢。
网络、国际互联网
世纪年代以来计算机开始用作协调来自不同地方之信息的工具,美国军方的贤者系统(SAGE)就是这方面第一个大规模系统。之后“军刀”等一系列特殊用途的商业系统也不断涌现出来。
年代后,美国各大院校的计算机工程师开始使用电信技术把他们的计算机连接起来。由于这方面的工作得到了ARPA的赞助,其计算机网络也就被称为ARPANET。此后,用于ARPA网的技术快速扩散和进化,这个网络也冲破大学和军队的范围最终形成了今天的国际互联网(Internet)。网络的出现导致了对计算机属性和边界的再定义。太阳微系统公司的John Gage 和 Bill Joy就指出:“网络即是计算机”。计算机操作系统和应用程序纷纷向能访问诸如网内其它计算机等网络资源的方向发展。最初这些网络设备仅限于为高端科学工作者所使用,但年代后随着电子邮件和万维网(World Wide Web)技术的扩散,以及以太网和ADSL等网络连接技术的廉价化,互联网络已变得无所不在。今日入网的计算机总数,何以千万计;无线互联技术的普及,使得互联网在移动计算环境中亦如影随形。比如在笔记本计算机上广泛使用的Wi-Fi技术就是无线上网的代表性应用
Panda LLM介绍
熊猫模型项目旨在通过指令调整增强开源大型语言模型,并对其性能进行全面评估。研究考察了训练数据因素,如数量、质量和语言分布,如何影响在英语和中文的高质量指令数据集上训练的模型性能。通过定量分析,项目为开源聊天模型的持续改进提供了见解。模型、数据和代码公开,供他人使用和构建。
在当前指令跟随大型语言模型发展激增的背景下,如GPT-4、GPT3.5、ChatGPT、Claude和Bard等,虽广受欢迎,但在生成结果的可信度、模型的透明度和可定制性方面存在局限。Dandelion项目旨在通过开源访问高质量大型语言模型,促进全球范围内可信任、透明和可定制的模型开发,以解决当前问题,并使AI技术更加民主化。
熊猫模型是首个面向海外用户的开源中文指令跟随大型语言模型,也是Dandelion项目的首个发布模型。该模型在多个中文语料库上进行了训练,包括Chinese-Wiki-、Chinese-News、Chinese-Baike-、Chinese-Webtext-和Translation-及COIG数据集。预期未来版本包括更大的模型,如Panda-B和Panda-B。
熊猫模型采用两阶段训练方法,生成了超越其他开源中文大型语言模型的结果,在参数相同的情况下表现更佳。项目还提供了模型检查点和源代码,以促进人工智能的民主化。这些资源不仅对学术界有用,也适用于个人和小型企业。
训练熊猫模型需要稳定的基础模型和高质量的中文指令跟踪数据集。项目基于LLAMA模型,通过在六个中文语料库上进行微调,优化其在各种任务上的性能。训练数据包括来自不同领域的大约.3亿个机器理解样本。
为提高指令跟随性能,熊猫模型整合了来自COIG数据集的指令,以解决数据集中文指令跟踪样本数量不足的问题。在训练过程中,模型在AWS计算节点上使用个NVIDIA A-G GPU,优化器为标准的随机梯度下降,学习率设置为1e-5。
评估结果显示,通过COIG数据集的指令微调,熊猫模型在推理任务中的性能显著提升,尤其是在LogiQA-v2、C3-d和C3-m数据集上的表现。关键发现表明,多样化的数据集调整是实现高性能的关键因素。
未来工作涉及开发更大规模的模型,如Panda-B、Panda-B和Panda-B,并公开启用模型并行的代码。此外,项目将致力于获取额外的训练数据,以提高连续预训练和指令微调过程的性能,同时扩大评估基准中的任务和数据集范围。最终目标是将更多语言整合到系统中,增强模型的多功能性和适应性。
通过发布训练数据、模型检查点和代码,项目旨在为AI民主化做出贡献,提供对大型语言模型性能的深入理解,并推动开源语言模型的发展。
开发 Web App 的智能体 gptengineer.app
gptengineer.app
gptengineer.app是一个专注于为非技术人员生成Web应用程序的项目。提供直观的界面,连接到Git控制的代码库,支持开源社区。
项目提供多样化的技术栈选择,包括Chakra UI、Simple HTML、JS和CSS文件生成、Tailwind Daisy UI、以及Tailwind等,满足不同需求。
选择多种模型名,如claude-3-opus-、claude-3-haiku-、gpt-4--preview、gpt-3.5-turbo等,以适应不同的生成场景。
创建网站:只需稍等片刻,网站即可建立完成。用户可通过编辑器查看生成的页面。
优化需求:通过自然语言对话,用户可以轻松修改网页内容,如删除或增加特定段落。如:"关于我们"字样删除,并扩展介绍内容至字。
发布网站:完成修改后,用户可以直接发布网站。
设置功能:关联GitHub账号,管理项目,查看生成的初始化代码。点击“Code”链接直接跳转至GitHub仓库,查看源代码。
预览网站:使用“Live”选项预览最终效果。
付费计划:gptengineer.app提供付费服务,用户可根据需求选择相应计划。服务内容涵盖网站生成、优化、发布及管理。