① 世界上第一个计算机程序是怎样开发出来的
世界上第一个程序是1842年写的,恰好在第一个能被称为计算机的真正机器。这段代码的作者是AdaAugusta,被封为Lovelace女伯爵,就是大家所知道的AdaLovelace。作为世界上第一个计算机程序的作者,她被广泛地认为是有史以来第一位程序员。
当把Ada称为一位程序员的时候,很容易忘记世界上第一段代码产生的年代就是塞缪尔·莫尔斯首次展示电话、阿姆斯达号上的黑奴在反抗和美国正处于三十年代、奥斯曼帝国和波斯帝国时期、穆斯林国家的奴隶正和埃及争夺中东地区的年代。计算机这个词在那时候仍然表示一个人做了100多年的计算工作的意思。那都是很久以前的事情了。
世界上第一段代码是为查尔斯·巴贝奇的分析机写的,这个机器从来没有真正建成过,虽然有这个可能。AdaLovelace看到了巴贝奇机器的潜力,产生了可编程的计算机的念头。她为泰勒的科学回忆录翻译了一位意大利数学家LuigiMenabrea的名为“分析机的概念图”的论文,并通过“翻译者的附注(她自己注释的)”把这篇论文弄懂了,那个注释里主要写了查尔斯·巴贝奇分析机都能干些什么。在附注G的开篇,就提到了世界上第一个计算机程序,举例说明了Lovelace意识到巴贝奇的设计是多么的意义深远,但还保持着她做科学的平静。
“防止夸大源于分析机的能量的想法是有必要的。”
Lovelace在她根本没有办法夸大一个包含现代计算机的主要部分的设计的本质。巴贝奇拒绝公布这台分析机的很多内容,使得Lovelace的注释对未来的发展起到了重要影响,最显着的影响便是促使阿兰·图灵产生通用程序存储计算机的想法。这一点Ada并没有看到,她36岁去世,前面提到的注释成了她唯一的出版物。如果她再能多活几年多工作几年,计算机会不会又是另一个样子呢?
让大家回到这个问题上来:如果巴贝奇有足够的资源建好分析机并能让Lovelace在上面跑程序的话,世界上第一个计算机程序是干嘛用的呢?这个程序让巴贝奇分析机计算了伯努利数字序列。接着她描述了怎么把大量的巴贝奇分析机的穿孔卡片作为输入实现这个程序。在她的实现方法中Lovelace设定了伯努利数序列的第一个数字(B0=1,B1=-),然后开始从B2(第一个非正规伯努利数)开始计算整个序列,她把这里的B2标记为B1。
现代重写的Javascript版本的Ada的大量穿孔卡片上的堆栈看起来可能是这个样子。这个重写的版本不是Ada的代码在巴贝奇分析机上的模拟,只是Ada曾经使用过的算法的另一种实现。
顺便提一下,到目前为止从没有人能从Ada的伯努利数计算代码里发现任何bug。尽管她发明了编程,但她显然并没有发明bug。
注:AdaLovelaceDay是一个国际性的庆祝妇女在科学,科技,工程和数学领域取得成就的节日。
最早的程序直接写的是二进制机器代码,没有编译器
将编好的代码通过读卡机读如机器,直接执行。
然后出现的是哗者汇编语言,通过二进制的机器代码来实现汇编的编译连接工作,
然后在用汇编语言完善优化汇编语言;
接着才是高级语言,使用汇编语言编译
逐渐实现高级语言编译高级语言
19世纪之前
一、机械计算机时代的拓荒者
在灶埋西欧,由中世纪进入文艺复兴时期的社会大变革,大大促进了自然科学技术的发展,人们长期被神权压抑的创造力得到空前释放。其中制造一台能帮助人进行计算的机器,就是最耀眼的思想火花之一。从那时起,一个又一个科学家为把这一思想火花变成引导人类进入自由王乱辩薯国的火炬而不懈努力。但限于当时的科技总体水平,大都失败了,这就是拓荒者的共同命运:往往见不到丰硕的果实。后人在享用这甜美的时候,应该能从中品出一些汗水与泪水的滋味
1614:苏格兰人JohnNapier(1550-1617)发表了一篇论文,其中提到他发明了一种可以计算四则运算和方根运算的精巧装置。
1623:WilhelmSchickard(1592-1635)制作了一个能进行六位以内数加减法,并能通过铃声输出答案的'计算钟'。通过转动齿轮来进行操作。
1625:WilliamOughtred(1575-1660)发明计算尺
1642:法国数学家Pascal在WILLIAMOughtred计算尺的基础上将计算尺加以改进,能进行八位计算。并且还卖出了许多,成为一种时髦的商品。
1668:英国人SamuelMorl和(1625-1695)制作了一个非十进制的加法装置,适宜计算钱币。
1671:德国数学家GottfriedLeibniz设计了一架可以进行乘法,最终答案可以最大达到16位。
1775:英国Charles制作成功了一台与Leibniz's的计算机类似的机器。但更先进一些。
1776:德国人MathieusHahn成功的制作了一台乘法器。
1801:Joseph-MaireJacuard开发了一台能用穿孔卡片控制的自动织布机。
1820:法国人CharlesXavierThomasdeColmar(1785-1870),制作成功第一台成品计算机,非常的可靠,可以放在桌面上,在后来的90多年间一直在市场上出售。
1822:英国人CharlesBabbage(1792-1871)设计了差分机和分析机,其中设计的理论非常的超前,类似于百年后的电子计算机,特别是利用卡片输入程序和数据的设计被后人所采用。
1832:Babbage和JosephClement制成了一个差分机的成品,开始可以进行6位数的运算。后来发展到20位、30位,尺寸将近一个房子那么大。结果以穿孔的形式输出。但限于当时的制造技术,他们的设计难以制成。
1834:斯德哥尔摩的GeorgeScheutz用木头做了一台差分机。
1834:Babbage设想制造一台通用的分析机,在只读存储器(穿孔卡片)中存储程序和数据,Babbage在以后的时间继续他的研究工作,并于1840年将操作数提高到了40位,并基本实现了控制中心(CPU)和存储程序的设想,而且程序可以根据条件进行跳转,能在几秒内作出一般的加法,几分钟内作出乘除法。
1842:Babbage的差分机项目因为研制费用昂贵,被政府取消。但他自己仍花费大量的时间和精力于他的分析机研究。
1843:Scheutz和他的儿子EdvardScheutz制造了一台差分机,瑞典政府同意继续支持他们的研究工作。
1847:Babbage花两年时间设计了一台较简易的、31位的差分机,但没有人感兴趣并支持他造出这台机器。但后来伦敦科学博物馆用现代技术复制出这台机器后发现,它确实能准确的工作。
1848:英国数学家GeorgeBoole创立二进制代数学。提前差不多一个世纪为现代二进制计算机铺平了道路。
1853:令Babbage感到高兴的是,Scheutzes制造成功了真正意义上的比例差分机,能进行15位数的运算。象Babbage所设想的那样输出结果。后来伦敦的BrianDonkin又造出了更可靠的第二台。
1858:第一台制表机被Albany的Dudley天文台买走。第二台被英国政府买走。但天文台并没有将其充分利用,后来被送进了博物馆。而第二台却被幸运的使用了很长时间。
1871:Babbage制造了分析机的部分部件和印表机。
1878:纽约的西班牙人RamonVerea,制造成功桌面计算器。比前面提到的都要快。但他对将其推向市场不感兴趣,只是想表明,西班牙人可以比美国人做的更好。
1879:一个调查委员会开始研究分析机是否可行,最后他们的结论是:分析机根本不可能工作。此时Babbage已经去世了。调查之后,人们将他的分析机彻底遗忘了。但HowardAiken例外。
1885:这时期更多的计算机涌现出来。如美国、俄国、瑞典等。他们开始用有槽的圆柱代替易出故障的齿轮。
1886:芝加哥的DorrE.Felt(1862-1930),制造了第一台用按键操作的计算器,而且速度非常快,按键抬起,结果也就出来了。
1889:Felt推出桌面印表计算器。
1890:1890美国人口普查。1880年的普查人工用了7年的时间进行统计。这意味着1890年的统计将会超过10年。美国人口普查部门希望能得到一台机器帮助提高普查的效率。HermanHollerith,建立制表机公司的那个人,后来他的公司发展成了IBM公司。借鉴了Babbage的发明,用穿孔卡片存储数据,并设计了机器。结果仅仅用了6个周就得出了准确的数据(62622250人)。HermanHollerith大发其财。
1892:圣多美和普林西比的WilliamS.Burroughs(1857-1898),制作成功了一台比Felt的功能更强的机器,真正开创了办公自动化工业。
1896:HermanHollerith创办了IBM公司的前身。1900~1910
1906:HenryBabbage,CharlesBabbage的儿子,在R.W.Munro的支持下,完成了父亲设计的分析机,但也仅能证明它能工作,而没有将其作为产品推出。
二、电子计算机最初的日子里
在这之前的计算机,都是基于机械运行方式,尽管有个别产品开始引入一些电学内容,却都是从属与机械的,还没有进入计算机的灵活:逻辑运算领域。而在这之后,随着电子技术的飞速发展,计算机就开始了由机械向电子时代的过渡,电子越来越成为计算机的主体,机械越来越成为从属,二者的地位发生了变化,计算机也开始了质的转变。下面就是这一过渡时期的主要事件:
1906:美国的LeeDeForest发明了电子管。在这之前造出数字电子计算机是不可能的。这为电子计算机的发展奠定了基础。
1920~1930
1924年2月:IBM,一个具有划时代意义的公司成立
1930~1940
1935:IBM推出IBM601机。这是一台能在一秒钟算出乘法的穿孔卡片计算机。这台机器无论在自然科学还是在商业意义上都具有重要的地位。大约造了1500台。
1937:英国剑桥大学的AlanM.Turing(1912-1954)出版了他的论文,并提出了被后人称之为'图灵机'的数学模型。
1937:BELL试验室的GeorgeStibitz展示了用继电器表示二进制的装置。尽管仅仅是个展示品,但却是第一台二进制电子计算机。
1938:ClaudeE.Shannon发表了用继电器进行逻辑表示的论文。
1938:柏林的KonradZuse和他的助手们完成了一个机械可编程二进制形式的计算机,其理论基础是Boolean代数。后来命名为Z1。它的功能比较强大,用类似电影胶片的东西作为存储介质。可以运算七位指数和16位小数。可以用一个键盘输入数字,用灯泡显示结果。
19391月1日:加利福尼亚的DavidHewlet和WilliamPackard在他们的车库里造出了Hewlett-Packard计算机。名字是两人用投硬币的方式决定的。包括两人名字的一部分。
1939年11月:美国JohnV.Atanasoff和他的学生CliffordBerry完成了一台16位的加法器,这是第一台真空管计算机。
1939:二次世界大战的开始,军事需要大大促进了计算机技术的发展。
1939:Zuse和Schreyer开始在他们的Z1计算机的基础上发展Z2计算机。并用继电器改进它的存储和计算单元。但这个项目因为Zuse服兵役被中断了一年。
1939/1940:Schreyer利用真空管完成了一个10位的加法器,并使用了氖灯做存储装置。
1940~1950
1940年1月:Bell实验室的SamuelWilliams和Stibitz制造成功了一个能进行复杂运算的计算机。大量使用了继电器,并借鉴了一些电话技术,采用了先进的编码技术。
1941夏季:Atanasoff和学生Berry完成了能解线性代数方程的计算机,取名叫'ABC'(Atanasoff-BerryComputer),用电容作存储器,用穿孔卡片作辅助存储器,那些孔实际上是'烧'上的。时钟频率是60HZ,完成一次加法运算用时一秒。
1941年12月:德国Zuse制作完成了Z3计算机的研制。这是第一台可编程的电子计算机。可处理7位指数、14位小数。使用了大量的真空管。每秒种能作3到4次加法运算。一次乘法需要3到5秒。
1943:1943年到1959年时期的计算机通常被称作第一代计算机。使用真空管,所有的程序都是用机器码编写,使用穿孔卡片。典型的机器就是:UNIVAC。
1943年1月:MarkI,自动顺序控制计算机在美国研制成功。整个机器有51英尺长,重5吨,75万个零部件,使用了3304个继电器,60个开关作为机械只读存储器。程序存储在纸带上,数据可以来自纸带或卡片阅读器。被用来为美国海军计算弹道火力表。
1943年4月:MaxNewman、Wynn-Williams和他们的研究小组研制成功'HeathRobinson',这是一台密码破译机,严格说不是一台计算机。但是其使用了一些逻辑部件和真空管,其光学装置每秒钟能读入2000个字符。同样具有划时代的意义。
1943年9月:Williams和Stibitz完成了'RelayInterpolator',后来命名为'ModelIIRelayCalculator'。这是一台可编程计算机。同样使用纸带输入程序和数据。其运行更可靠,每个数用7个继电器表示,可进行浮点运算。
1943年12月:最早的可编程计算机在英国推出,包括2400个真空管,目的是为了破译德国的密码,每秒能翻译大约5000个字符,但使用完后不久就遭到了毁坏。据说是因为在翻译俄语的时候出现了错误。
1946:ENIAC(ElectronicNumericalIntegrator和Computer):第一台真正意义上的数字电子计算机。开始研制于1943年,完成于1946年。负责人是JohnW.Mauchly和J.PresperEckert。重30吨,18000个电子管,功率25千瓦。主要用于计算弹道和氢弹的研制。
三、晶体管计算机的发展
真空管时代的计算机尽管已经步入了现代计算机的范畴,但其体积之大、能耗之高、故障之多、价格之贵大大制约了它的普及应用。直到晶体管被发明出来,电子计算机才找到了腾飞的起点,一发而不可收
1947:Bell实验室的WilliamB.Shockley、JohnBardeen和WalterH.Brattain.发明了晶体管,开辟了电子时代新纪元。
1949:EDSAC:剑桥大学的Wilkes和他的小组建成了一台存储程序的计算机。输入输出设备仍是纸带。
1949:EDVAC():第一台使用磁带的计算机。这是一个突破,可以多次在其上存储程序。这台机器是JohnvonNeumann提议建造的。
1949:'未来的计算机不会超过1.5吨。'这是当时科学杂志的大胆预测。
1950~1960
1950:软磁盘由东京帝国大学的YoshiroNakamats发明。其销售权由IBM公司获得。开创存储时代新纪元。
1950:英国数学家和计算机先驱AlanTuring说:计算机将会具有人的智慧,如果一个人和一台机器对话,对于提出和回答的问题,这个人不能区别到底对话的是机器还是人,那么这台机器就具有了人的智能。
1951:GraceMurrayHopper完成了高级语言编译器。
1951:Whirlwind:美国空军的第一个计算机控制实时防御系统研制完成。
1951:UNIVAC-1:第一台商用计算机系统。设计者:J.PresperEckert和JohnMauchly。被美国人口普查部门用于人口普查,标志着计算机的应用进入了一个新的、商业应用的时代。
1952:EDVAC():由VonNeumann领导设计并完成。取名:电子离散变量计算机。
1953:此时世界上大约有100台计算机在运转。
1953:磁芯存储器被开发出来。
1954:IBM的JohnBackus和他的研究小组开始开发FORTRAN(FORmulaTRANslation),1957年完成。是一种适合科学研究使用的计算机高级语言。
1956:第一次有关人工智能的会议在Dartmouth学院召开。
1957:IBM开发成功第一台点阵打印机。
1957:FORTRAN高级语言开发成功。
四、集成电路,现代计算机插上腾飞的翅膀
尽管晶体管的采用大大缩小了计算机的体积、降低了其价格,减少了故障。但离人们的要求仍差很远,而且各行业对计算机也产生了较大的需求,生产更能更强、更轻便、更便宜的机器成了当务之急,而集成电路的发明正如"及时雨",当春乃发生。其高度的集成性,不仅仅使体积得以减小,更使速度加快,故障减少。人们开始制造革命性的微处理器。计算机技术经过多年的积累,终于驶上了用硅铺就的高速公路。
1958年9月12日:在RobertNoyce(INTEL公司的创始人)的领导下,发明了集成电路。不久又推出了微处理器。但因为在发明微处理器时借鉴了日本公司的技术,所以日本对其专利不承认,因为日本没有得到应有的利益。过了30年,日本才承认,这样日本公司可以从中得到一部分利润了。但到2001年,这个专利也就失效了。
1959:1959年到1964年间设计的计算机一般被称为第二代计算机。大量采用了晶体管和印刷电路。计算机体积不断缩小,功能不断增强,可以运行FORTRAN和COBOL,接收英文字符命令。出现大量应用软件。
1959:GraceMurrayHopper开始开发COBOL(COmmonBusiness-OrientatedLanguage)语言,完成于1961年。
1960~1970
1960:ALGOL:第一个结构化程序设计语言推出。
1961:IBM的KennthIverson推出APL编程语言。
1963:PDP-8:DEC公司推出第一台小型计算机。
1964:1964年到1972年的计算机一般被称为第三代计算机。大量使用集成电路,典型的机型是IBM360系列。
1964:IBM发布PL/1编程语言。
1964:发布IBM360首套系列兼容机。
1964:DEC发布PDB-8小型计算机。
1965:摩尔定律发表,处理器的性能每年提高一倍。后来其内容又发生了改变。
1965:LoftiZadeh创立模糊逻辑,用来处理近似值问题。
1965:ThomasE.Kurtz和JohnKemeny完成BASIC()语言的开发。特别适合计算机教育和初学者使用,得到了广泛的推广。
1965:DouglasEnglebart提出鼠标器的设想,但没有进一步的研究。直到1983年被苹果电脑公司大量采用。
1965:第一台超级计算机CD6600开发成功。
1967:NiklausWirth开始开发PASCAL语言,1971年完成。
1968:RobertNoyce和他的几个朋友创办了INTEL公司。
1968:SeymourPaper和他的研究小组在MIT开发了LOGO语言。
1969:ARPANET计划开始启动,这是现代INTERNET的雏形。
1969年4月7日:第一个网络协议标准RFC推出。
1969:EIA(ElectronicInstriesAssocia
1970~1980
1970:第一块RAM芯片由INTEL推出,容量1K。
1970:KenThomson和DennisRitchie开始开发UNIX操作系统。
1970:Forth编程语言开发完成。
1970:Internet的雏形ARPAnet()基本完成。开始向非军用部门开放,许多大学和商业部门开始接入。
1971年11月15日:MarcianE.Hoff在INTEL公司开发成功第一块微处理器4004,含2300个晶体管,是个4位系统,时钟频率108KHz,每秒执行6万条指令。
在后来的日子里,处理器发展主要指标一览:
处理器主频每秒百万条指令
4004108KHz0.06
80802MHz0.5
680008MHz0.7
80868MHz0.8
6800016MHz1.3
6802016MHz2.6
8028612MHz2.7
6803016MHz3.9
386SX20MHz6
6803025MHz6.3
6803040MHz10
386DX33MHz10
486DX25MHz20
486DX2-5050MHz35
486DX4/100100MHz60
Pentium66MHz100
Pentium133MHz240
Pentium233MHzMMX435
PentiumPro200MHz440
PentiumII233MHz560
PentiumII333MHz770
1971:PASCAL语言开发完成。
1972:1972年以后的计算机习惯上被称为第四代计算机。基于大规模集成电路,及后来的超大规模集成电路。计算机功能更强,体积更小。人们开始怀疑计算机能否继续缩小,特别是发热量问题能否解决?人们开始探讨第五代计算机的开发。
1972:C语言的开发完成。其主要设计者是UNIX系统的开发者之一DennisRitche。这是一个非常强大的语言,开发系统软件,特别受人喜爱。
1972:Hewlett-Packard发明了第一个手持计算器。
1972年4月1日:INTEL推出8008微处理器。
1972:ARPANET开始走向世界,INTERNET革命拉开序幕。
1973:街机游戏Pong发布,得到广泛的欢迎。发明者NolanBushnell,后来Atari的创立者。
1974:第一个具有并行计算机体系结构的CLIP-4推出。
五、计算机技术渐入辉煌
在这之前,计算机技术主要集中在大型机和小型机领域发展,但随着超大规模集
② 楚门的世界中导演扮演者
艾德·哈里斯饰演克里斯托弗/导演,他导演了整个楚门秀,是一个老于世故的剧组头领,让人不寒而栗,作为肥皂剧《楚门的世界》的导演,克里斯托弗将一切都设计得近乎完美,把楚门控制在海景镇的超现实世界之中;
个人简历:
艾德·哈里斯;
外文名:Ed Harris
别名:埃德·哈里斯、艾迪·夏里斯
国籍:美国
身高:1.75米
出生地:美国新泽西州
出生日期:1950年11月28日
职业:演员、导演
毕业院校:加州艺术学院(戏剧学士)
代表作品:阿波罗13号、勇闯夺命岛、楚门的世界、画家波拉克、兵临城下、美丽心灵、时时刻刻、阿帕鲁萨镇
演艺经历:
艾德·哈里斯1971年开始舞台表演;1977年走上电影之路;1983年因出演电影《太空英雄》而成名;1984年凭戏剧《爱情傻子》荣获奥比奖;1986年以戏剧《珍贵的孩子》提名托尼奖最佳男演员奖;1989年参演詹姆斯·卡梅隆执导的科幻片《深渊》;1996年凭电影《阿波罗13号》第一次提名奥斯卡最佳男配角奖,同年出演《勇闯夺命岛》;1999年凭电影《楚门的世界》第二次提名奥斯卡最佳男配角;2001年凭自导自演的处女作《画家波拉克》提名奥斯卡最佳男主角奖,同年出演《兵临城下》和《美丽心灵》;2003年凭借电影《时时刻刻》第三次提名奥斯卡最佳男配角;2005年凭迷你剧《帝国的崩塌》提名艾美奖最佳男主角;2008年自编自导自演西部片《阿帕鲁萨镇》;2012年凭电视电影《规则改变》提名艾美奖最佳男配角;2014年首次主演电视连续剧《西部世界》饰演大反派黑衣人;2015年与连姆·尼森合作的《暗夜逐仇》在美国上映,并和詹姆斯·弗兰科连续合作两部电影《阿德拉尔日记》《胜负未决的战斗》。