1946年以前软件还没有作为一个词汇正式出现。指令、程序等词汇一直是软件的代名词。这一阶段信息技术的发展是以人们不断试图构造更好的计算机为主要驱动力的。这一阶段,对于计算机硬件而言,是一个蓬勃发展、日新月异的阶段;对软件而言,仅仅是萌芽。软件,乃至软件产业,都是计算机硬件发展到一定阶段自然而然产生的。了解这一阶段发展历史,对于认识软件的重要性,对于认识软件知识产权保护的重要性,具有重要的参考意义。
人类社会早期生产和交换的出现,自然地出现了对计数和计算的需求。从古代的结绳计数到至今仍在使用的算盘,都是人们为了计数和计算而创造的灵巧方法。14世纪到17世纪的文艺复兴运动,极大地促进了科学和文艺的发展,数学在这一阶段也得到了空前的进步,人们为解决计算问题的发明不断出现。16世纪,画家达·芬奇就设计了一个包含13个齿轮的机械计算器,并画出了原理图。17世纪上半叶,英国数学家发明了计算尺,可以完成平方根、对数、三角函数计算,德国科学家施卡德发明了“计算钟”,被认为是人类历史上第一个机械式计算器,另一位德国数学家帕斯卡(Pascal)发明了“加法器”并实现了商业销售。17世纪中后期,欧洲科学家发明了各种类型的机械式计算器,但也有一部分发明限于当时的制造水平,并未能够实现其全部的设计功能。值得一提的是,德国数学家莱布尼兹不仅发明了一个复杂的机械式计算器,还发明了作为现代计算机基础的二进制数字体系。
18世纪工业革命兴起,以机器取代人力,以大规模工厂化生产取代个体手工生产,数学、物理、化学、天文学、地理学等领域的学科蓬勃发展,掀起了人类历史上第一次科技革命。数学计算成为这些学科发展的基础需要。人们更加渴望用机器把人们从复杂的、烦琐的数字计算中解放出来。这个时代机器制造水平大幅提升,在17世纪科学家工作的基础上,机械式计算器的发明和制造不断改进完善,到19世纪后半期,实用的机械式计算器已经逐渐普及。其中具有代表性的机器是瑞典工程师奥德纳发明的微型机械式计算器(手摇式计算器),一直延续使用到20世纪70年代。
英国作为工业革命的发源地,诞生了影响现代计算机和信息化发展的一些重要发明和重要思想。英国数学家和发明家查尔斯·班贝奇(1791—1871)一生致力于计算设备的研究和发明,并期望将蒸汽机作为计算机的动力。班贝奇最重要的思想是设计一台“可编程”的机械式计算机,1833年他设计并制造的“差分机”原型证明了其原理和概念的正确性。之后,他又设计了“分析机”,其中蕴含着“通用计算机”的重要思想。这台分析机能够储存程序,根据程序自动完成计算,输出计算结果,并通过铃声提示任务完成。此外,还有一项对早期计算机软件具有重要参考意义的发明——雅卡尔织布机是值得一提的。法国人雅卡尔(Joseph Marie Jacquard,1752—1834)发明了提花织布机,它通过打孔卡预先设定花样模式,并通过一系列串联的打孔卡实现自动提花。班贝奇在他设计的分析机上使用打孔卡编制程序,而打孔卡也成为早期现代计算机最主要的编程方式,一直延续使用到20世纪中叶。在班贝奇时代,有一位女性艾达(Ada Byron Lovelace),她在那个时代作为一名罕见的热爱数学和科学的女性,对班贝奇的发明十分着迷并与班贝奇开展了共同研究。在1842年翻译一篇关于分析机的文章中,她以翻译者的身份附上了一份30多页的备注,这篇备注使艾达本人成为计算机史上著名的人物。这篇备注中,艾达精确地预言了未来计算机的模式,包括软件相关的程序、子程序、模块化等概念,并预言计算机将在普通家庭中得以普及。
19世纪末期,美国统计局职员霍尔瑞斯(Herman Hollerith)参考雅卡尔织布机的工作原理,利用打孔卡开发了卡片制表机。在1890年美国的人口普查中,霍尔瑞斯发明的制表机大放异彩。1890年的人口普查在制表机的辅助下只用了一年就完成了,而1880年那一次人口普查整整用了八年。霍尔瑞斯1896年成立了制表机器公司,1921年霍尔瑞斯退休,1924年公司更名为国际商业机器公司(即IBM)。霍尔瑞斯的制表机使用了数字电路,被认为是现代计算机的雏形。
1928~1932年,麻省理工学院(MIT)教授布什(Vannevar Bush)建造了一个“微分分析机”,尽管这只是一台模拟电子计算机,但仍然是开创性的工作,布什的机器在军队、学校被广泛采用,促进了下一代计算机的产生和发展。布什本人后来还组织和领导了制造第一颗原子弹的“曼哈顿计划”,参与了氢弹、登月计划、星球大战计划等重大工程。依据布什的建议和构想,美国成立了国家科学基金会(NSF)和高级研究规划署(ARPA)等科研机构,保证了美国在尖端科技领域的长期领先地位。1945年,布什在《大西洋月刊》发表了题为“As we may think”的文章,预言了未来计算机的功能和作用,其中提到的许多构想都一一实现了,包括超文本和互联网。
1937年是信息技术发展史上重要的一年。这一年,很多突破性的思想和实践相继出现,信息技术发展进程突然加速。这一年,英国数学家图灵(Alan Turing)发表了题为“论可计算数字在决断难题中的应用”,这篇文章提出了逻辑计算机的完整概念,后来被广泛地称为“图灵机”。图灵机是一个通用计算机的概念模型,相比之前只能够实现特定功能的计算机(专用计算机),图灵机在理论上前进了一大步,图灵的理论也奠定了现代计算机科学的基础。1937年,麻省理工学院的香农(Claude Shannon)发表了其硕士论文“中继和交换电路的符号分析”,证实了由电子电路实现布尔代数运算的可行性,也指出了采用二进制布尔运算,计算机不只是可以解决数学问题,还可以解决逻辑问题,香农的理论也成为现代计算机的基础理论之一。香农更大的贡献是在贝尔实验室工作期间,发表了《通信的数学原理》和《噪声下的通信》两篇论文,这两篇论文阐明了通信的基本问题,给出了通信系统的模型,提出了信息量的数学表达式,并解决了信道容量、信源统计特性、信源编码、信道编码等一系列基本技术问题,奠定了信息论的理论基础。
1937年,计算机硬件的创造发明层出不穷。哈佛大学数学教授艾肯(Howard H Aiken)参考18世纪班贝奇的设计,提出了一个用于解决微分方程的数字计算机设计方案,该方案后来得到IBM的支持,到1941年,这台名为IBM Harvard Mark Ⅰ的机器诞生了。Mark Ⅰ采用了数字电路,但仍然采用了十进制,尽管很慢,但这台机器有一个特点,它是完全自动的,它的程序和数据都由纸带输入,在没有人工干预的情况下可以运行数天。也是在1937年,贝尔实验室的斯德比兹(George Stibitz)受香农的启发,出于兴趣设计了一个用电磁继电器实现布尔运算的电路,在贝尔实验室的支持下,斯德比兹在1939完成了一个“复数计算器”,这台机器不能编程,但从实践上证实了中继电路可以实现二进制运算、处理信息并且处理逻辑过程。1937年,德国工程师祖斯(Konrad Zuse)设计了一台能够进行二进制运算,并能够从打孔带输入输出指令和数据的计算机,这台计算机在1939年完成,命名为Z1,期间祖斯不断改进Z1的设计,到1941年Z3完成的时候,Z3已经是一台全功能可编程的计算机了,除了条件跳转和分支等逻辑还不能由程序直接实现外,Z3基本上实现了图灵机的概念构想。祖斯和斯德比兹身处不同的国家,但相互独立地都采用了中继开关设计电路处理二进制,他们的机器实现之后,采用数字电路构造计算机的理念迅速得到普及。也是在1937年,美国衣阿华州立大学的阿塔纳索夫(John Vincent Atanasoff)也产生了采用数字电路构造计算机的想法,与以上几位的设想不同,他在计算模块使用了真空管(电子管),极大地提高了运算速度。但是,阿塔纳索夫基本上是一个人在研究,也缺乏经费支持,他的计算机其他部分采用了机械设计,包括内存模块,由于缺乏经费和其他技术支援,阿塔纳索夫的机器始终没有完全完工,但毕竟从实践上证明了真空管构造高速电子计算机的可行性。
1943年,在美国军方的支持下,莫奇莱(John Mauchly)和埃克特(J.Presper Eckert)开始了ENIAC的研制工作。这台计算机于1945年底研制完成,1946年初在宾夕法尼亚州对外公布。ENIAC被称作是世界上第一台电子计算机,它全部采用电子电路制造,它的存储和计算全部采用了真空管,在当时实现了最快的运算速度。它也是一台真正意义上的“通用计算机”,能够通过编程解决不同类型的问题。
回顾这一阶段,计算机等硬件的发明创造成为信息技术发展的主线,软件在其中的作用似乎乏善可陈。尽管如此,程序、编程、指令等词汇和与之相关的工作,已经显露出朴素的软件思想和实践萌芽。ENIAC作为第一台可编程的全电子计算机,运算速度很快,但是它的编程方式和编程速度在今天看来是不可想象的。在ENIAC的设计当中,编程是通过插拔电缆和重新连接线路实现的。ENIAC最初的8位“程序员”全部是女性,她们的职位名称是“计算者”,英文名称是computer,与后来计算机的英文拼写是一样的。这在今天看来多少有些滑稽。而ENIAC程序完全是靠线缆的重新配置来完成的(图1-1),程序就是重新配置后的电路,固化在硬件当中。
(www.xing528.com)
图1-1 ENIAC的“程序员”在编程
再回到霍尔瑞斯制表机的时代。霍尔瑞斯借鉴了雅卡尔织布机的思路,使用打孔卡输入指令和数据,实现自动化的计算。打孔卡也是早期程序最主要的载体。霍尔瑞斯还为打孔卡注册了专利,早期的打孔卡也称为霍尔瑞斯卡。霍尔瑞斯1914年还注册了另外一个专利,“制表机自动控制”(美国专利编号:1830699),这个专利当中描述了自动化组控制,一个控制“小计”和“总计”功能的设施,这可能是最早描述条件编程的例子,尽管采用了打孔卡设备,但也体现了未来存储程序计算机的一些基本理念。
霍尔瑞斯的制表机公司在1924年更名为国际商业机器公司(IBM),由托马斯·沃森执掌,从1928年起,IBM改良了打孔卡,并以IBM打孔卡(见图1-2b)命名。今天已经绝迹的打孔卡,在19世纪末到20世纪70年代流行了近80年,是当时存储程序和数据最主要的载体。20世纪50年代中期,IBM打孔卡的销售收入占IBM公司总收入的20%,到50年代末期曾达到令人惊讶的30%。
图1-2 打孔卡
a)霍尔瑞斯打孔卡(用于1900年人口普查) b)IBM打孔卡
IBM Harvard Mark Ⅰ计算机没有采用打孔卡作为程序载体。它采用了打孔纸带(见图1-3)作为程序的载体。打孔纸带能够连续地输入指令和数据。由于Harvard Mark Ⅰ的架构设计,它的指令由纸带输入,数据靠电子机械计数装置存取。贝尔实验室斯德比兹的复数计算机也采用了打孔纸带,但是它的指令和数据都由打孔纸带输入。与打孔卡相似,打孔纸带在20世纪是主要的程序和数据载体。
图1-3 Harvard Mark Ⅰ采用的打孔纸带
这一阶段,计算机械已经可以被编程,通过机械设计或者打孔卡输入指令和数据并进行自动化运算,人们对机械计算机的序列化指令就是后来计算机软件的萌芽。这一阶段并没有真正的现代软件概念,但是与软件有关的思想萌芽和实践开始出现。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。