1. 百战程序员:编程语言到底有多少种
这个有很多种的,下面讲解写常遇到的。把编程语言比喻成车:
Ada 是辆丑到极点但是永远不会出故障的坦克。
C 是辆赛车,它能跑得超乎想象得快,不过每跑个 50 英里就会抛锚。
Cobol 号称是辆车,不过没有哪个有自尊心的驾驶员肯承认曾经开过。
C# 是辆竞争模式的家庭旅行车。一旦你开过它,你就不会再用其他竞品厂商的产品了。
C++ 是辆大马力版本的 C 型赛车,它额外提供了成打的特性,而且每跑 250 英里才会抛锚,不过当它真出问题的时候,没有人能找到究竟是哪儿坏了。
Eiffel 是辆内置了法国口音驾驶说明的汽车。他会帮你快速地找到错误并从中学到东西,不过你要是敢跟他争论的话,他会骂你然后把你从车里扔出去。[来自 Daniel Prager ,稍有修改]
Erlang 是一个车队,它们会互相协作把你送到任何你想去的地方。想要每只脚各自操纵一辆车还是需要一些练习的,不过一旦学会了之后你就可以驾驶着它们通往其他方式难以企及的地方了。还有,你用了那么多辆车,所以就算有几辆坏掉也没什么可担心的。
Forth 是你亲手用套件组装出来的车。你这辆车不论长相还是功能都没必要和别人的一样。不过,Forth 型号的车只能倒着走。
[Digg.com 网站上的评论,来自 256byteram(我忍不住要把它加上):]
FORTH LOVE IF HONK THEN !(译注:抱歉我实在不知道这句话是啥意思……)
Fortran 是辆非常原始的车。它能跑得很快,前提是你要始终在完全笔直的道路上开。据说学开 Fortran 型汽车会导致你再也没法学开其他型号的汽车了。
Java
Java 是辆家庭旅行车。它驾驶起来很容易,开起来速度也不会太快,不至于伤到你自己。
版本1:Haskell是辆设计极端优雅漂亮的车,传闻它能开到非常极端的地形中去。当你试图驾驶它的时候,它并不是真的沿着道路在前进的;实际上,它是不断把自己和道路进行复制,每次成功复制之后,车在路上都会比上一次更远一点。应该还是有可能按照传统的方式来驾驶它的,不过你的数学能力不足以找出这个办法来。
版本2:Haskell 并不是辆真的车,它是一个抽象的机器,能够详细地告诉你驾驶这个过程应该是什么样子的,如果你愿意的话。你必须把这个抽象的机器放到另一台实际的机器里面才能开动它,别问这个实际的机器是怎么运行的。还有一种方法,你可以用多台抽象的机器造出另一台抽象的机器,然后把它交给那台实际的机器,这样就能一个接一个地完成你的旅途了。[Monadic 的版本]
版本1:Lisp 看起来像一辆车,不过经过足够的改装,就能把它变成非常有效的一架飞机或一艘潜艇。
版本2:一开始它看起来一点儿都不像一辆车,不过时不时地你也能看到有人在开着它转悠。终于有一天你决定多了解一下它,然后你意识到它其实是一辆能造出更多汽车的汽车。你把这个发现告诉了朋友,不过他们都大笑着说这些车看起来太奇怪了。至今你仍在车库里留着一辆,期待着哪天能把它开上路去。[来自 Paul Tanimoto]
Mathematica是辆设计得很好的车,它从 Lisp 型汽车那里借鉴了大量的东西,却连一点儿应得的赞扬都不给它。它能通过方程计算出到达目的地最高效的路径,只不过这要花上一大笔钱。
是辆设计给新手用的短途旅行车,通常都是开往那些 Mathmatica 型汽车常去的地方。在那些地方这车开起来非常舒服,不过只要你偏离了路线,哪怕只有一点点,它就会变得非常难以驾驭,以致于很多势利的司机根本就不承认它是一辆车。
Ocaml 是辆非常性感的欧洲车。它不像 C 那么快,但它从不出故障,所以结果你反而会花更短的时间到达目的地。不过因为这是法国,所有的控制装置都不在它们平时该在的地方。
Perl 应该是辆挺酷的车,不过驾驶员手册却难以理解。另外,就算你能找到方法去驾驶一辆 Perl 型号的车,你也开不起来别人的 Perl 型汽车。
PHP 是辆热狗车(Oscar Mayer Wienermobile),它非常古怪、又难以驾驭,但是所有人却还是想开它。[来自 digg.com 网站的 CosmicJustice]
版本1:Prolog 是全自动的:你告诉它你的目的地是什么样子的,然后剩下的驾驶工作它就全搞定了。[Paul Graham附加的:]不过,大多数情况下,确认目的地所花的工夫,和你直接开过去也差不多了。
版本2:Prolog 这辆车上装了一个独特的试错型 GPS 系统。在通往目的地的路上,它会一直往前开,如果走到死胡同了,它就调头回来再试试别的路,如此不断往复,一直到目的地为止。[我忘了是谁建议的这一条]
Python 是辆非常棒的给初学者用的车,就算没有驾照也能开。除非你想开得超级快,或者想开去很危险的地方,否则你可能永远都用不到别的车。
Ruby 这辆车是因为一次 Perl、Python 和 Smalltalk 三车相撞事故产生的。一个日本的机师找到了这些车的碎片然后拼成了一辆车,很多司机都觉得这比那三辆车加在一起还要好。不过也有些司机会发牢骚说 Ruby 型汽车的好多控制器都是重复的、甚至有三份,而这些重复的控制器在某些特别的情况下又稍有不同,这会让这车开起来更麻烦。据传说重新设计的工作已经在进行中了。
Smalltalk 是辆小型汽车,原本是设计给那些打算学驾驶的人用的,不过因为它设计得太棒了,即使那些有经验的老司机都喜欢开它。它速度并没有很快,不过你可以把它的任何一个零部件拿下来改造改造,让它更符合你的期待。古怪的事情是,你其实并没有真正地驾驶它,你只是发了条消息让它去什么地方,然后它要么就开过去了,要么就告诉你它不懂你在说啥。
版本1:汇编就只是个发动机。你得自己把车子造出来,还得在它跑的时候手动给它加油。不过只要你足够小心,它就能像来自地狱的蝙蝠(a bat out of hell)一样飞速前进。
版本2:汇编:你自己就是那辆车。
如果编程语言是种武器:
C 语言是 M1 式加兰德步枪,很老但可靠。
C++是双截棍,挥舞起来很强悍,很吸引人,但需要你多年的磨练来掌握,很多人希望改用别的武器。
Java 是 M240 通用弹夹式自动机枪,有时它的弹夹是圆的,但有时候不是,如果不是,当你开火时,会遇到 NullPointerException 问题,枪就会爆炸,你被炸死。
Scala 是 M240 通用机枪的变种,但它的使用手册是用一种看不懂的方言写的,很多人怀疑那只是一些梦话。
JavaScript 是一把宝剑,但没有剑柄。
Go 语言是一种自制的“if err != nil”发令枪,每一次发射后,你都必须要检查它是否真的发射了。
Rust 语言是一种 3D 打印出的枪。将来也许真的能派上用场。
bash 是一个十分碍手的锤子,你抡起它时会发现所有东西看起来都像钉子,尤其是你的指头。
Ruby 是一把外嵌红宝石的宝刀,人们使用它通常是因为看起来很炫。
PHP 是水管子,你通常会把它的一段接到汽车的排气管,另一端插进车窗里,然后你坐进车里,开动引擎。
Mathematica 是一种地球低轨道粒子大炮,它也许能够干出很神奇的事情,但只有付得起费用的人才能使用它。
C#是一种强悍的激光大炮,架在一头驴子上,如果从驴子上卸下来,它好像就发不出激光。
Prolog 语言是一种人工智能武器,你告诉它要做什么,它会照做不误,但之后,它会弄几个终结者出来,烧掉你的房子。
Lisp 语言是一把剃须刀,有很多款式。只有寻求刺激和危险的人才会使用它。
希望可以帮到您,谢谢!
2. 什么叫磁芯大战
磁芯大战(core war or core wars)就是汇编程序间的大战,程序在虚拟机中运行,并试图破坏其他程序,生存到最后即为胜者。程序用一种特殊的汇编语言(RedCode)完成,运行于叫做MARS(Memory Array RedCode Simulator)的虚拟机中。
用于磁芯大战的游戏有多种,例如有个叫爬行者的程序(Creeper),每一次执行都会自动生成一个副本,很快电脑中原有资料就会被这些爬行者侵蚀掉;“侏儒”(Dwarf)程序在记忆系统中行进,每到第五个“地址”(address)便把那里所储存的东西变为零,这会使原本的程序严重破坏;最奇特的就是一个叫“印普”(Imp)的战争程序了,它只有一行指令,那就是“MOV 0,1”,其中MOV是“Move”的简写,即移动的意思。它把身处的地址中所载的“0”写(移)到下一个地址中,当“印普”展开行动之后,电脑中原有的每一行指令都被改为“MOV 0,1”,换句话说,荧光屏上留下一大堆“MOV 0,1”。
3. 计算机发展史
10日,计算机编程语言的先驱克里斯汀·尼盖德死于心脏病,享年75岁。尼盖德帮助因特网奠下了基础,为计算机业做出了巨大贡献。据挪威媒体报道,尼盖德11日在挪威首都奥斯陆逝世。
尼盖德是奥斯陆大学的教授,因为发展了Simula编程语言,为MS-DOS和因特网打下了基础而享誉国际。克里斯汀·尼盖德于1926年在奥斯陆出生,1956年毕业于奥斯陆大学并取得数学硕士学位,此后致力于计算机计算与编程研究。
1961年~1967年,尼盖德在挪威计算机中心工作,参与开发了面向对象的编程语言。因为表现出色,2001年,尼盖德和同事奥尔·约安·达尔获得了2001年A.M.图灵机奖及其它多个奖项。当时为尼盖德颁奖的计算机协会认为他们的工作为Java,C++等编程语言在个人电脑和家庭娱乐装置的广泛应用扫清了道路,“他们的工作使软件系统的设计和编程发生了基本改变,可循环使用的、可靠的、可升级的软件也因此得以面世
世纪发现·从图灵机到冯·诺依曼机
英国科学家艾伦·图灵1937年发表著名的《论应用于解决问题的可计算数字》一文。文中提出思考原理计算机——图灵机的概念,推进了计算机理论的发展。1945年图灵到英国国家物理研究所工作,并开始设计自动计算机。1950年,图灵发表题为《计算机能思考吗?》的论文,设计了著名的图灵测验,通过问答来测试计算机是否具有同人类相等的智力。
图灵提出了一种抽象计算模型,用来精确定义可计算函数。图灵机由一个控制器、一条可无限伸延的带子和一个在带子上左右移动的读写头组成。这个在概念上如此简单的机器,理论上却可以计算任何直观可计算的函数。图灵机作为计算机的理论模型,在有关计算机和计算复杂性的研究方面得到广泛应用。
计算机是人类制造出来的信息加工工具。如果说人类制造的其他工具是人类双手的延伸,那么计算机作为代替人脑进行信息加工的工具,则可以说是人类大脑的延伸。最初真正制造出来的计算机是用来解决数值计算问题的。二次大战后期,当时为军事目的进行的一系列破译密码和弹道计算工作,越来越复杂。大量的数据、复杂的计算公式,即使使用电动机械计算器也要耗费相当的人力和时间。在这种背景下,人们开始研制电子计算机。
世界上第一台计算机“科洛萨斯”诞生于英国,“科洛萨斯”计算机是1943年3月开始研制的,当时研制“科洛萨斯”计算机的主要目的是破译经德国“洛伦茨”加密机加密过的密码。使用其他手段破译这种密码需要6至8个星期,而使用‘科洛萨斯’计算机则仅需6至8小时。1944年1月10日,“科洛萨斯”计算机开始运行。自它投入使用后,德军大量高级军事机密很快被破译,盟军如虎添翼。“科洛萨斯”比美国的ENIAC计算机问世早两年多,在二战期间破译了大量德军机密,战争结束后,它被秘密销毁了,故不为人所了解。
尽管第一台电子计算机诞生于英国,但英国没有抓住由计算机引发的技术和产业革命的机遇。相比之下,美国抓住了这一历史机遇,鼓励发展计算机技术和产业,从而崛起了一大批计算机产业巨头,大大促进了美国综合国力的发展。1944年美国国防部门组织了有莫奇利和埃克脱领导的ENIAC计算机的研究小组,当时在普林斯顿大学工作的现代计算机的奠基者美籍匈牙利数学家冯·诺依曼也参加了者像研究工作。1946年研究工作获得成功,制成了世界上第一台电子数字计算机ENIAC。这台用18000只电子管组成的计算机,尽管体积庞大,耗电量惊人,功能有限,但是确实起了节约人力节省时间的作用,而且开辟了一个计算机科学技术的新纪元。这也许连制造它的科学家们也是始料不及的。
最早的计算机尽管功能有限,和现代计算机有很大的差别,但是它已具备了现代计算机的基本部分,那就是运算器、控制器和存储器。
运算器就象算盘,用来进行数值运算和逻辑运算,并获得计算结果。而控制器就象机算机的司令部,指挥着计算机各个部分的工作,它的指挥是靠发出一系列控制信号完成的。
计算机的程序、数据、以及在运算中产生的中间结果以及最后结果都要有个存储的地方,这就是计算机的第三个部件——存储器。
计算机是自动进行计算的,自动计算的根据就是存储于计算机中的程序。现代的计算机都是存储程序计算机,又叫冯·诺依曼机,这是因为存储程序的概念是冯·诺依曼提出的。人们按照要解决的问题的数学描述,用计算机能接受的“语言”编制成程序,输入并存储于计算机,计算机就能按人的意图,自动地高速地完成运算并输出结果。程序要为计算机提供要运算的数据、运算的顺序、进行何种运算等等。
微电子技术的产生使计算机的发展又有了新的机遇,它使计算机小型化成为可能。微电子技术的发展可以追溯到晶体管的出现。1947年美国电报电话公司的贝尔实验室的三位学家巴丁、不赖顿和肖克莱制成第一支晶体管,开始了以晶体管代替电子管的时代。
晶体管的出现可以说是集成电路出台的序幕。晶体管出现后,一些科学家发现,把电路元器件和连线像制造晶体管那样做在一块硅片上可实现电路的小型化。于是,晶体管制造工业经过10年的发展后,1958年出现了第一块集成电路。
微电子技术的发展,集成电路的出现,首先引起了计算机技术的巨大变革。现代计算机多把运算器和控制器做在一起,叫微处理器,由于计算机的心脏——微处理器(计算机芯片)的集成化,使微型计算机应运尔生,并在70-80年代间得到迅速发展,特别是IBM PC个人计算机出现以后,打开了计算机普及的大门,促进了计算机在各行各业的应用,五六十年代,价格昂贵、体积庞大、耗电量惊人的计算机,只能在少数大型军事或科研设施中应用,今天由于采用了大规模集成电路,计算机已经进入普通的办公室和家庭。
标志集成电路水平的指标之一是集成度,即在一定尺寸的芯片上能做出多少个晶体管,从集成电路出现到今天,仅40余年,发展的速度却是惊人的,芯片越做越小,这对生产、生活的影响也是深远的。ENIAC计算机占地150平方米,重达30吨,耗电量几百瓦,其所完成的计算,今天高级一点的袖珍计算器皆可完成。这就是微电子技术和集成电路所创造的奇迹。
现状与前景
美国科学家最近指出,经过30多年的发展,计算机芯片的微型化已接近极限。计算机技术的进一步发展只能寄希望于全新的技术,如新材料、新的晶体管设计方法和分子层次的计算技术。
过去30多年来,半导体工业的发展基本上遵循穆尔法则,即安装在硅芯片上的晶体管数目每隔18个月就翻一番。芯片体积越来越小,包含的晶体管数目越来越多,蚀刻线宽越来越小;计算机的性能也因而越来越高,同时价格越来越低。但有人提出,这种发展趋势最多只能再持续10到15年的时间。
美国最大的芯片生产厂商英特尔公司的科学家保罗·A·帕坎最近在美国《科学》杂志上撰文说,穆尔法则(1965年提出的预测半导体能力将以几何速度增长的法则)也许在未来10年里就会遇到不可逾越的障碍:芯片的微型化已接近极限。人们尚未找到超越该极限的方法,一些科学家将其称之为“半导体产业面临的最大挑战”。
目前最先进的超大规模集成电路芯片制造技术所能达到的最小线宽约为0.18微米,即一根头发的5%那样宽。晶体管里的绝缘层只有4到5个原子那样厚。日本将于2000年初开始批量生产线宽只有0. 13微米的芯片。预计这种芯片将在未来两年得到广泛应用。下一步是推出线宽0. 1微米的的芯片。帕坎说,在这样小的尺寸上,晶体管只能由不到100个原子构成。
芯片线宽小到一定程度后,线路与线路之间就会因靠得太近而容易互相干扰。而如果通过线路的电流微弱到只有几十个甚至几个电子,信号的背景噪声将大到不可忍受。尺寸进一步缩小,量子效应就会起作用,使传统的计算机理论完全失效。在这种情况下,科学家必须使用全新的材料、设计方法乃至运算理论,使半导体业和计算机业突破传统理论的极限,另辟蹊径寻求出路。
当前计算机发展的主流是什么呢?国内外比较一致的看法是
RISC
RISC是精简指令系统计算机(Reced Instruction Set Computer)的英文缩写。所谓指令系统计算机所能执行的操作命令的集合。程序最终要变成指令的序列,计算机能执行。计算机都有自己的指令系统,对于本机指令系统的指令,计算机能识别并执行,识别就是进行译码——把代表操作的二进制码变成操作所对应的控制信号,从而进行指令要求的操作。一般讲,计算机的指令系统约丰富,它的功能也约强。RISC系统将指令系统精简,使系统简单,目的在于减少指令的执行时间,提高计算机的处理速度。传统的计算机一般都是每次取一条指令,而RISC系统采用多发射结构,在同一时间发射多条指令,当然这必须增加芯片上的执行部件。
并行处理技术
并行处理技术也是提高计算机处理速度的重要方向,传统的计算机,一般只有一个中央处理器,中央处理器中执行的也只是一个程序,程序的执行是一条接一条地顺序进行,通过处理器反映程序的数据也是一个接一个的一串,所以叫串行执行指令。并行处理技术可在同一时间内多个处理器中执行多个相关的或独立的程序。目前并行处理系统分两种:一种具有4个、8个甚至32个处理器集合在一起的并行处理系统,或称多处理机系统;另一种是将100个以上的处理器集合在一起,组成大规模处理系统。这两种系统不仅是处理器数量多少之分,其内部互连方式、存储器连接方式、操作系统支持以及应用领域都有很大的不同。
曾经有一段时间,超级计算机是利用与普通计算机不同的材料制造的。最早的克雷1号计算机是利用安装在镀铜的液冷式电路板上的奇形怪状的芯片、通过手工方式制造的。而克雷2号计算机看起来更加奇怪,它在一个盛有液态碳氟化合物的浴器中翻腾着气泡———采用的是“人造血液”冷却。并行计算技术改变了所有这一切。现在,世界上速度最快的计算机是美国的“Asci Red”, 这台计算机的运算速度为每秒钟2·1万亿次,它就是利用与个人计算机和工作站相同的元件制造的,只不过超级计算机采用的元件较多而已,内部配置了9000块标准奔腾芯片。鉴于目前的技术潮流,有一点是千真万确的,那就是超级计算机与其它计算机的差别正在开始模糊。
至少在近期,这一趋势很明显将会继续下去。那么,哪些即将到来的技术有可能会扰乱计算技术的格局,从而引发下一次超级计算技术革命呢?
这样的技术至少有三种:光子计算机、生物计算机和量子计算机。它们能够成为现实的可能性都很小,但是由于它们具有引发革命的潜力,因此是值得进行研究的。
光子计算机
光子计算机可能是这三种新技术中最接近传统的一种。几十年来,这种技术已经得到了有限的应用,尤其是在军用信号处理方面。
在光子计算技术中,光能够像电一样传送信息,甚至传送效果更好,,光束在把信息从一地传送至另一地的效果要优于电,这也就是电话公司利用光缆进行远距离通信的缘故。光对通信十分有用的原因,在于它不会与周围环境发生相互影响,这是它与电不同的一点。两束光线可以神不知鬼不觉地互相穿透。光在长距离内传输要比电子信号快约100倍,光器件的能耗非常低。预计,光子计算机的运算速度可能比今天的超级计算机快1000到10000倍。
令人遗憾的是,正是这种极端的独立性使得人们难以制造出一种全光子计算机,因为计算处理需要利用相互之间的影响。要想制造真正的光子计算机,就必须开发出光学晶体管,这样就可以用一条光束来开关另一条光束了。这样的装置已经存在,但是要制造具有适合的性能特征的光学晶体管,还需要仰仗材料科学领域的重大突破。
生物计算机
与光子计算技术相比,大规模生物计算技术实现起来更为困难,不过其潜力也更大。不妨设想一种大小像柚子,能够进行实时图像处理、语音识别及逻辑推理的超级计算机。这样的计算机已经存在:它们就是人脑。自本世纪70年代以来,人们开始研究生物计算机(也叫分子计算机),随着生物技术的稳步发展,我们将开始了解并操纵制造大脑的基因学机制。
生物计算机将具有比电子计算机和光学计算机更优异的性能。如果技术进步继续保持目前的速度,可以想像在一二十年之后,超级计算机将大量涌现。这听起来也许像科幻小说,但是实际上已经出现了这方面的实验。例如,硅片上长出排列特殊的神经元的“生物芯片”已被生产出来。
在另外一些实验室里,研究人员已经利用有关的数据对DNA的单链进行了编码,从而使这些单链能够在烧瓶中实施运算。这些生物计算实验离实用还很遥远,然而1958年时我们对集成电路的看法也不过如此。
量子计算机
量子力学是第三种有潜力创造超级计算革命的技术。这一概念比光子计算或生物计算的概念出现得晚,但是却具有更大的革命潜力。由于量子计算机利用了量子力学违反直觉的法则,它们的潜在运算速度将大大快于电子计算机。事实上,它们速度的提高差不多是没有止境的。一台具有5000个左右量子位的量子计算机可以在大约3 0秒内解决传统超级计算机需要100亿年才能解决的素数问题。
眼下恰好有一项重要的用途适合这种貌似深奥的作业。通过对代表数据的代码进行加密,计算机数据得到保护。而解密的数学“钥匙”是以十分巨大的数字——一般长达250位——及其素数因子的形式出现的。这样的加密被认为是无法破译的,因为没有一台传统计算机能够在适当的时间里计算出如此巨大数字的素数因子。但是,至少在理论上,量子计算机可以轻易地处理这些素数加密方案。因此,量子计算机黑客将不仅能够轻而易举地获得常常出没于各种计算机网络(包括因特网)中的信用卡号码及其他个人信息,而且能够轻易获取政府及军方机密。这也正是某些奉行“宁为人先、莫落人后”这一原则的政府机构一直在投入巨资进行量子计算机研究的原因。
量子超级网络引擎
量子计算机将不大可能破坏因特网的完整性,不仅如此,它们到头来还可能给因特网带来巨大的好处。两年前,贝尔实验室的研究人员洛夫·格罗弗发现了用量子计算机处理我们许多人的一种日常事务的方法———搜寻隐藏在浩如烟海的庞大数据库内的某项信息。寻找数据库中的信息就像是在公文包里找东西一样。如果各不相同的量子位状态组合分别检索数据库不同的部分,那么其中的一种状态组合将会遭遇到所需查找的信息。
由于某些技术的限制,量子搜索所能带来的速度提高并没有预计的那么大,例如,如果要在1亿个地址中搜索某个地址,传统计算机需要进行大约5000万次尝试才能找到该地址;而量子计算机则需大约1万次尝试,不过这已经是很大的改善了,如果数据库增大的话,改善将会更大。此外,数据库搜索是一种十分基础的计算机任务,任何的改善都很可能对大批的应用产生影响。
迄今为止,很少有研究人员愿意预言量子计算机是否将会得到更为广泛的应用。尽管如此,总的趋势一直是喜人的。尽管许多物理学家————如果不是全部的话———一开始曾认为量子力学扑朔迷离的本性必定会消除实用量子计算技术面临的难以捉摸而又根深蒂固的障碍,但已经进行的深刻而广泛的理论研究却尚未能造就一台实实在在的机器。
那么,量子计算机的研究热潮到底意味着什么?计算技术的历史表明,总是先有硬件和软件的突破,然后才出现需要由它们解决的问题。或许,到我们需要检索那些用普通计算机耗时数月才能查完的庞大数据库时,量子计算机才将会真正开始投入运行。研究将能取代电子计算机的技术并非易事。毕竟,采用标准微处理器技术的并行计算机每隔几年都会有长足的进步。因此,任何要想取代它的技术必须极其出色。不过,计算技术领域的进步始终是十分迅速的,并且充满了意想不到的事情。对未来的预测从来都是靠不住的,事后看来,那些断言“此事不可行”的说法,才是最最愚蠢的。
除了超级计算机外,未来计算机还会在哪些方面进行发展呢?
多媒体技术
多媒体技术是进一步拓宽计算机应用领域的新兴技术。它是把文字、数据、图形、图像和声音等信息媒体作为一个集成体有计算机来处理,把计算机带入了一个声、文、图集成的应用领域。多媒体必须要有显示器、键盘、鼠标、操纵杆、视频录象带/盘、摄象机、输入/输出、电讯传送等多种外部设备。多媒体系统把计算机、家用电器、通信设备组成一个整体由计算机统一控制和管理。多媒体系统将对人类社会产生巨大的影响。
网络
当前的计算机系统多是连成网络的计算机系统。所谓网络,是指在地理上分散布置的多台独立计算机通过通信线路互连构成的系统。根据联网区域的大小,计算机网络可分成居域网和远程网。小至一个工厂的各个车间和办公室,大到跨洲隔洋都可构成计算机网。因特网将发展成为人类社会中一股看不见的强大力量--它悄无声息地向人们传递各种信息,以最快、最先进的手段方便人类的工作和生活。现在的因特网发展有将世界变成“地球村”的趋势。
专家认为PC机不会马上消失,而同时单功能或有限功能的终端设备(如手执电脑、智能电话)将挑战PC机作为计算机革新动力的地位。把因特网的接入和电子邮件的功能与有限的计算功能结合起来的“置顶式”计算机如网络电视将会很快流行开来。单功能的终端最终会变得更易应用
智能化计算机
我们对大脑的认识还很肤浅,但是使计算机智能化的工作绝不能等到人们对大脑有足够认识以后才开始。使计算机更聪明,从开始就是人们不断追求的目标。目前用计算机进行的辅助设计、翻译、检索、绘图、写作、下棋、机械作业等方面的发展,已经向计算机的智能化迈进了一步。随着计算机性能的不断提高,人工智能技术在徘徊了50年之后终于找到了露脸的机会,世界头号国际象棋大师卡斯帕罗夫向“深蓝”的俯首称臣,让人脑第一次尝到了在电脑面前失败的滋味。人类从来没有像今天这样深感忧惧,也从来没有像今天这样强烈地感受到认识自身的需要。
目前的计算机,多数是冯·诺依曼型计算机,它在认字、识图、听话及形象思维方面的功能特别差。为了使计算机更加人工智能化,科学家开始使计算机模拟人类大脑的功能,近年来,各先进国家注意开展人工神经网络的研究,向计算机的智能化迈出了重要的一步。
人工神经网络的特点和优越性,主要表现在三个方面:具有自学功能。六如实现图象识别时,只要线把许多不同的图象样板和对应的应识别的结果输入人工神经网络,网络就会通过自学功能,漫漫学会识别类似的图像。自学功能对于预测有特别重要的意义。预期未来的人工神经网络计算机将为人类提供同经济预测、市场预测、效益预测、其前途是很远大的。
具有联想储存功能。人的大脑是具有两厢功能的。如果有人和你提起你幼年的同学张某某。,你就会联想起张某某的许多事情。用人工神经网络的反馈网络就可以实现这种联想。
具有高速寻找优化解的能力。寻找一个复杂问题的优化解,往往需要很大的计算量,利用一个针对某问题而设计的反馈人工神经网络,发挥计算机的高速运算能力,可能很快找到优化解。
人工神经网络是未来为电子技术应用的新流域。智能计算机的构成,可能就是作为主机的冯·诺依曼机与作为智能外围的人工神经网络的结合。
人们普遍认为智能计算机将像穆尔定律(1965年提出的预测半导体能力将以几何速度增长的定律)的应验那样必然出现。提出这一定律的英特尔公司名誉董事长戈登·穆尔本人也同意这一看法,他认为:“硅智能将发展到很难将计算机和人区分开来的程度。”但是计算机智能不会到此为止。许多科学家断言,机器的智慧会迅速超过阿尔伯特·爱因斯坦和霍金的智慧之和。霍金认为,就像人类可以凭借其高超的捣弄数字的能力来设计计算机一样,智能机器将创造出性能更好的计算机。最迟到下个世纪中叶(而且很可能还要快得多),计算机的智能也许就会超出人类的理解能力。
世纪发现·从图灵机到冯·诺依曼机
英国科学家艾伦·图灵1937年发表著名的《论应用于解决问题的可计算数字》一文。文中提出思考原理计算机——图灵机的概念,推进了计算机理论的发展。1945年图灵到英国国家物理研究所工作,并开始设计自动计算机。1950年,图灵发表题为《计算机能思考吗?》的论文,设计了著名的图灵测验,通过问答来测试计算机是否具有同人类相等的智力。
图灵提出了一种抽象计算模型,用来精确定义可计算函数。图灵机由一个控制器、一条可无限伸延的带子和一个在带子上左右移动的读写头组成。这个在概念上如此简单的机器,理论上却可以计算任何直观可计算的函数。图灵机作为计算机的理论模型,在有关计算机和计算复杂性的研究方面得到广泛应用。
计算机是人类制造出来的信息加工工具。如果说人类制造的其他工具是人类双手的延伸,那么计算机作为代替人脑进行信息加工的工具,则可以说是人类大脑的延伸。最初真正制造出来的计算机是用来解决数值计算问题的。二次大战后期,当时为军事目的进行的一系列破译密码和弹道计算工作,越来越复杂。大量的数据、复杂的计算公式,即使使用电动机械计算器也要耗费相当的人力和时间。在这种背景下,人们开始研制电子计算机。
世界上第一台计算机“科洛萨斯”诞生于英国,“科洛萨斯”计算机是1943年3月开始研制的,当时研制“科洛萨斯”计算机的主要目的是破译经德国“洛伦茨”加密机加密过的密码。使用其他手段破译这种密码需要6至8个星期,而使用‘科洛萨斯’计算机则仅需6至8小时。1944年1月10日,“科洛萨斯”计算机开始运行。自它投入使用后,德军大量高级军事机密很快被破译,盟军如虎添翼。“科洛萨斯”比美国的ENIAC计算机问世早两年多,在二战期间破译了大量德军机密,战争结束后,它被秘密销毁了,故不为人所了解。
尽管第一台电子计算机诞生于英国,但英国没有抓住由计算机引发的技术和产业革命的机遇。相比之下,美国抓住了这一历史机遇,鼓励发展计算机技术和产业,从而崛起了一大批计算机产业巨头,大大促进了美国综合国力的发展。1944年美国国防部门组织了有莫奇利和埃克脱领导的ENIAC计算机的研究小组,当时在普林斯顿大学工作的现代计算机的奠基者美籍匈牙利数学家冯·诺依曼也参加了者像研究工作。1946年研究工作获得成功,制成了世界上第一台电子数字计算机ENIAC。这台用18000只电子管组成的计算机,尽管体积庞大,耗电量惊人,功能有限,但是确实起了节约人力节省时间的作用,而且开辟了一个计算机科学技术的新纪元。这也许连制造它的科学家们也是始料不及的。
最早的计算机尽管功能有限,和现代计算机有很大的差别,但是它已具备了现代计算机的基本部分,那就是运算器、控制器和存储器。
运算器就象算盘,用来进行数值运算和逻辑运算,并获得计算结果。而控制器就象机算机的司令部,指挥着计算机各个部分的工作,它的指挥是靠发出一系列控制信号完成的。
计算机的程序、数据、以及在运算中产生的中间结果以及最后结果都要有个存储的地方,这就是计算机的第三个部件——存储器。
计算机是自动进行计算的,自动计算的根据就是存储于计算机中的程序。现代的计算机都是存储程序计算机,又叫冯·诺依曼机,这是因为存储程序的概念是冯·诺依曼提出的。人们按照要解决的问题的数学描述,用计算机能接受的“语言”编制成程序,输入并存储于计算机,计算机就能按人的意图,自动地高速地完成运算并输出结果。程序要为计算机提供要运算的数据、运算的顺序、进行何种运算等等。
微电子技术的产生使计算机的发展又有了新的机遇,它使计算机小型化成为可能。微电子技术的发展可以追溯到晶体管的出现。1947年美国电报电话公司的贝尔实验室的三位学家巴丁、不赖顿和肖克莱制成第一支晶体管,开始了以晶体管代替电子管的时代。
晶体管的出现可以说是集成电路出台的序幕。晶体管出现后,一些科学家发现,把电路元器件和连线像制造晶体管那样做在一块硅片上可实现电路的小型化。于是,晶体管制造工业经过10年的发展后,1958年出现了第一块集成电路。
微电子技术的发展,集成电路的出现,首先引起了计算机技术的巨大变革。现代计算机多把运算器和控制器做在一起,叫微处理器,由于计算机的心脏——微处理器(计算机芯片)的集成化,使微型计算机应运尔生,并在70-80年代间得到迅速发展,特别是IBM PC个人计算机出现以后,打开了计算机普及的大门,促进了计算机在各行各业的应用,五六十年代,价格昂贵、体积庞大、耗电量惊人的计算机,只能在少数大型军事或科研设施中应用,今天由于采用了大规模集成电路,计算机已经进入普通的办公室和家庭。
标志集成电路水平的指标之一是集成度,即在一定尺寸的芯片上能做出多少个晶体管,从集成电路出现到今天,仅40余年,发展的速度却是惊人的,芯片越做越小,这对生产、生活的影响也是深远的。ENIAC计算机占地150平方米,重达30吨,耗电量几百瓦,其所完成的计算,今天高级一点的袖珍计算器皆可完成。这就是微电子技术和集成电路所创造的奇迹。