图灵宇宙:原初纪元——计算机科学发展简史 *
[中] 张立波、武延军、赵琛
ACM = Association for Computing Machinery 美国计算机协会
图灵奖,全称ACM A.M Turing Award,计算机界的诺贝尔奖
蓝色紫罗兰的花语:忠诚,薄命。
1956年达特茅斯会议,计算机领域大事件:自动计算机,神经网络,计算规模理论,自我改造,随机性与创造性,编程语言,抽象。
早期的计算机:
- 水银延迟线存储器—最早的计算机内存,通过装有水银的管子延迟传递脉冲,达到临时储存数据的效果。
- 打孔纸带——一种早期的数据存储形式,通过纸带上的有孔和无孔来表示1和0。
- 指令集——内存中预设好的子程序集合。
早期计算机的发展历史:
- 1945年,冯·诺依曼撰写了《EDVAC报告书的第一份草案》。这份长达101页的报告,即计算机史上著名的“101页报告”,这是现代计算机科学发展里程碑式的文献。它明确规定用二进制替代十进制运算,并将计算机分成5大组件,这一卓越的思想为电子计算机的逻辑结构设计奠定了基础,成为计算机设计的基本原则。
- ENIAC(Electronic Numerical Integrator And Computer,电子数字积分计算机)是世界上第一台通用(十进制)计算机,由宾夕法尼亚大学的莫奇利和埃克特设计,占地面积相当于半个篮球场的大小。占地面积:167㎡,重量:27吨,运算速度:每秒运算约5000次。
- EDVAC(Electronic Discrete Variable Automatic Computer,离散变量自动电子计算机)是美国早期的一台电子计算机,由莫奇利和埃克特设计。与它的前任ENIAC不同——EDVAC采用二进制,而且是一台冯·诺依曼结构的计算机。占地面积:40㎡,重量:7.8吨,运算速度:每秒运算约1160次,生产年份:1949年。
- EDSAC(Electronic Delay Storage Auto-matic Calculator,电子延迟存储自动计算机)占地面积:20㎡,重量:3吨,运算速度:每秒运算约667次,生产年份:1949年。
水银延迟线是最早的内存。输入电路将电流传递到输入端的石英晶体,石英晶体会产生震动,震动通过水银传导到输出端,输出端的石英晶体受到震动产生电流,电流经信号放大器放大后,再次传入输入端。如此往复,实现了数据的存储。之所以用剧毒且昂贵的水银,是因为只有水银和石英晶体配合时,信号衰减最小。 - LEO(Lyons Electronic Office,里昂电子办公室)基于EDSAC打造的一台商用计算机,在LEO上运行的第一个业务应用程序是为了计算面包和蛋糕所用原料的成本。玛丽·库姆斯于1952年被聘为LEO计算机的程序员,她因此被公认为是世界上第一位女性商业程序员。生产年份:1951年。
- UNIVAC(Universal Automatic Computer,通用自动计算机)由莫奇利和埃克特设计,1951年由雷明顿-兰德公司(现Unisys)发售。占地面积:32.7㎡,重量:7.57吨,运算速度:每秒运算约1000次,生产年份:1951年。
贝尔实验室的成就:图灵奖X5,诺贝尔奖X9
- 1947年,贝尔实验室提出了移动“蜂窝”网络的技术设想,打开了移动通信的大门。
- 1948年,克劳德·香农提出了信息熵的概念,奠定了信息论的基础。信息论是构建数字通信世界的重要基础理论之一。
- 1954年,贝尔实验室开发出转化率为6%的单晶硅太阳能电池,这是世界上第一个被实际使用的太阳能电池。
- 1956年,威廉·萧克利(William Shockley)、约翰·巴丁(John Bardeen)和沃尔特·布拉顿(Walter Brattain)因发明了晶体管获得了诺贝尔物理学奖,这是一个足以改变世界的小型半导体器件。
- 1962年,贝尔实验室和美国国家航空航天局合作,发射了人类首颗有源轨道通信卫星。
- 1969年,威拉德·博伊尔(Willard Boyle)和乔治·史密斯(George Smith)发明了电荷耦合器件(CCD = Charge Coupled Device)传感器。这项发明是当今数码相机的重要成像元件。两人因此在2009年获得诺贝尔物理学奖。
- 在贝尔实验室,还诞生了UNIX操作系统、C语言、C++语言。
贝尔实验室的发展史:
- 1925年,AT&T成立了贝尔电话实验室公司(1925-1984),后改称为AT&T贝尔实验室(1984-1996)。
- 1996年,因为AT&T被拆分为多个部分,旗下贝尔实验室被纳入朗讯科技,改名为贝尔创新实验室(1996-2006)。
- 2006年,朗讯与阿尔卡特合并,成立了阿尔卡特-朗讯公司。
- 2016年,阿尔卡特-朗讯公司被诺基亚收购,改名为诺基亚贝尔实验室。
编程语言发展历史:
年份 | 编程语言 | 发明者 | 说明 |
---|---|---|---|
1843 | - | Ada Lovelace 爱达·洛芙莱斯 | (被认为是世界上第一位程序员)发表了对差分机注释的论文,提出重复指令的概念,这就是时至今日仍在使用的“迭代” |
1949 | - | David Wheeler 大卫·惠勤 | 伴随EDSAC的诞生,子程序及子程序跳转被发明出来 |
1952 | Autocode | Alick Glennie 阿利克·格伦尼 | 一些人认为这是第一种编译式计算机编程语言 |
1957 | FORTRAN | John Backus 约翰·巴科斯 | FORTRAN是一种通用的编译命令式编程语言,特别适用于数值计算和科学计算 |
1958 | IAL (ALGOL 58) | Alan Perlis 艾伦·佩利, John Backus 约翰·巴科斯, etc. | ALGOL58被创建为一种算法语言,也是Java和C等编程语言的前身 |
1958 | LISP | John McCarthy 约翰·麦卡锡 | 为人工智能研究设计的,今天,它可以与Python和Ruby一起使用 |
1959 | COBOL | Grace Hopper 格蕾丝·霍波 | COBOL是一种可以在所有类型的计算机上运行的语言 |
1960 | ALGOL 60 | Peter Naur 彼得·诺尔, Alan Perlis 艾伦·佩利, John Backus 约翰·巴科斯, John McCarth 约翰·麦卡锡, etc. | ALGOL60虽然没有被广泛地商用,但是其对后来的语言发展产生了深远的影响 |
1964 | BASIC | John Kemeny 约翰·凯梅尼, Thomas Kurtz 托马斯·库尔茨 | BASIC为没有强大技术和数学背景的学生开发,使他们能够继续使用计算机 |
1970 | Pascal | Niklaus Wirth 尼克劳斯·沃斯 | 这种语言以十七世纪法国著名数学家布莱斯·帕斯卡(Blaise Pascal)的名字命名。它易于学习,是苹果电脑早期软件开发的主要语言 |
1972 | Smalltalk | Alan Kay 艾伦·凯, Adele GlodBerg 阿黛尔·戈德伯格, Dan Ingalls 丹·英格尔斯, Ted Kaehler 泰德·凯勒, etc. | Smalltalk使计算机程序员能够快速更改代码 |
1972 | C | Dannis Ritchie 丹尼斯·里奇 | C语言是一种高级编程语言。被认为更接近人类语言,而不像机器代码 |
1972 | SQL | Donald Chamberlin 唐纳德·钱博林, Raymond Boyce 雷蒙德·博伊斯 | 此语言用于查看和更改存储在数据库中的数据,是目前最流行的关系型数据库操作语言 |
1978 | MATLAB | Cleve Moler 克莱夫·莫勒 | MATLAB用于编写数学程序,目前仍广泛应用于教育和研究领域 |
1983 | Objective-C | Brad Cox 布莱德·考克斯, Tom Love 汤姆·洛夫 | 作为苹果电脑的主要开发语言沿用至今 |
1983 | C++ | Bjarne Stroustrup 本贾尼·斯特劳斯特卢普 | 这是C编程语言的扩展,是世界上常用的语言之一 |
1988 | Perl | Larry Wall 拉里·沃尔 | 一种脚本语言,最初被设计用于简化报告处理 |
1990 | Haskell | Lennart Augustsson 伦纳特·奥古斯特森 | 一种函数式计算机编程语言,专为教学、研究和工业应用而设计,开创了许多编程语言功能 |
1990 | R | Roll Ihaka 罗斯·伊哈卡, Robert Gentleman 罗伯特·杰德曼 | 为需要进行数据分析的统计学家开发 |
1991 | Visual Basic | Microsoft 微软公司 | 提供图形操作界面,易学易用。程序员通过少量代码即可完成简单程序的开发 |
1991 | Python | Guido Van Rossum 吉多·范罗苏姆 | 种易于阅读的简化计算机语言 |
1993 | Ruby | Yukihiro Matsumoto 松本行弘 | 被广泛用于Web应用 |
1995 | PHP | Rasmus Lerdorf 拉斯姆斯·勒多夫 | 主要用于Web开发,时至今日,仍被广泛使用 |
1995 | Java | Sun Microsystems 太阳计算机系统公司 | (现已被甲骨文公司收购)是目前非常流行的编程语言之一 |
1995 | JavaScript | Brendan Eich 布兰登·艾奇 | 是目前常用的Web开发语言之一,用来增强Web浏览器的交互。与Java虽然名字相近,但是没有任何关系 |
2000 | C# | Microsoft 微软公司 | 作为C++和Visual Basic的结合,C#在某些方面与Java相似 |
2003 | Scala | Martin Odersky 马丁·奥德斯基 | 是一种将面向对象与函数式编程结合在一起的高级编程语言 |
2003 | Groovy | James Strachan 詹姆斯·斯特拉坎, Bob Mcwhirter 鲍勃·麦克沃特 | 是Java语言的一个分支 |
2009 | Go | Google 谷歌公司 | 用于解决大型软件系统中的常见问题 |
2014 | Swift | Apple 苹果公司 | 是苹果公司操作系统和软件的主要开发语言 |
约翰·冯·诺依曼(John von Neumann)“博弈论之父” ,克劳德·香农(Claude Shannon)“信息论之父”。
艾伦·麦席森·图灵(Alan Mathison Turing)“计算机科学与人工智能之父”:
- 尽管目光所及之处,只是不远的前方,但我们可以看到,那里有许多值得去完成的工作。
- (我们才会碰撞出这么多新火花)前提是你有足够的智慧。
- 为什么要在意别人的看法呢?你认可自己才是最重要的。(詹姆斯·威尔金森:那不一样!你在我心中可是超越时代的天才。)天才吗……或许我只是不想那么愚蠢。
艾伦·佩利(Alan Perlis):
1966年图灵奖获得者。首位图灵奖获得者,使计算机科学成为一门独立学科。
- 任何名词都可以变为动词。
- 所有的选择都不存在对错,不要患得患失。
威廉·图兰斯基:花也不总是无忧无虑的。
莫里斯·威尔克斯(Maurice Wilkes):
1967年图灵奖获得者。存储程序式计算机设计者,发明了第一台采用冯·诺依曼架构的计算机EDSAC。
- 我意识到从那时起,我生命中的大部分时间都将花在寻找自己程序中的错误上。
理查德·汉明(Richard Hamming):
1968年图灵奖获得者。纠错码发明者,提出了汉明码、汉明距离和汉明重量。
- 计算的目的不在于得到数据,而是润察事物。
- 传统,不就是用来打破的吗?
- 想到了就果断去做,只要坚持努力,未来就是你的。
马文·明斯基(Marvin Minsky):
1969年图灵奖获得者。框架理论创立者,开发出最早能够模拟人活动的机器人。
- 如果只用一种方式了解某样事物,你将很难真正了解它,了解事物真正含义的秘密取决于如何把它与你所了解的其他事物相联系。
Steps Toward Artificial Intelligence,《迈向人工智能》阐述了让计算机解决复杂问题的步骤。
Computation: Finite and Infinite Machines,《计算:有限和无限机器》解释了计算机能做什么,不能做什么。
Perceptrons,《感知器》论述了人工智能领域红极一时的神经网络存在的局限性。
詹姆斯·威尔金森(James Wilkinson):
1970年图灵奖获得者。向后误差分析的创造者,创造出当时运行最快的计算机-ACE(Automatic Calculation Engine)
- 计算机学中的一切都是新的,这既是它的吸引力,也是它的弱点。
约翰·麦卡锡(John McCarthy):
1971年图灵奖获得者。LISP之父,“人工智能”概念的首位提出者。
- 为了让计算机通过编程从人和其他机器那里获得信息和合作,我们必须让它将知识、信念、欲望与其相关联.
- 下棋是典型的人类高级和复杂的智能活动。
- 袜子上破个洞好补,可要在洞上补个袜子,那还不如重做一双。