以下文章来源于悦智网,作者JoannaGoodrich
从穿孔卡到Python 。
计算机的主要语言是二进制代码,因此早期的程序员会使用穿孔卡来指示机器完成哪些任务。每个孔代表一个二进制数字。
1952年,随着A-0编译器的出现,这种情况发生了变化。A-0编译器是一系列规范,可以自动将英语等高级语言翻译成机器可读的二进制代码。
这款被授予“IEEE里程碑”的编译器由格蕾丝·赫柏(Grace Hopper)开发,她曾是费城埃克特-莫奇利计算机公司(现属Unisys公司)的资深数学家。
借助这位IEEE会士的创新成果,程序员能够用英语命令更快、更轻松地编写代码。然而,《今日宾夕法尼亚工程》(Penn Engineering Today)的一篇文章表明,对她来说,最重要的成果是它对现代编程语言发展的影响,它让每个人都能更容易地编写代码了。
淘汰穿孔卡
要给计算机编程,技术人员需要用汇编语言编写任务,这是一种人类可读的编写机器代码的方式,由二进制数字组成。Medium网站上一篇关于该方法的文章介绍,接下来,他们会手动将汇编语言翻译成机器代码,并在卡片上打孔以代表二进制数字。然后,将这些卡片送入一台可以读取这些孔的机器,再将数据输入电脑。
采用这种方法完成一项任务可能需要几天时间,而且发生人为错误的风险很高。即使有一点点缺陷,比如一个角被弯折,这些卡片也不能使用。
在宾夕法尼亚大学领导电子数字积分计算机(ENIAC)的开发之后,计算机科学家J.普雷斯伯·埃克特(J. Presper Eckert)和约翰·W.莫奇利(John W. Mauchly)开始着手打造穿孔卡的替代品。宾夕法尼亚图书中心(Pennsylvania Center for the Book)的一篇文章介绍,ENIAC是为了提高二战期间美国大炮的精确度而制造的,但二人想开发商用计算机。
他们设计的机器是第一台已知的大型电子计算机——通用自动计算机(UNIVAC I),赫柏是该开发小组的成员。
UNIVAC I有一个存储单元。该计算机用磁带输入数据,而不是用穿孔卡片。这些磁带可以存储音频、视频和书面数据,长达457米。宾夕法尼亚图书中心的文章表明,UNIVAC I与以前的计算机不同,它有一个键盘,所以操作员可以输入命令。
不过,技术人员仍然必须手动向计算机输入指令才能运行新程序。
这个耗时的过程容易发生错误,因为“程序员是糟糕的抄写员”,赫柏在美国计算机协会的一次演讲中说,“你会惊讶地发现4经常会变成空格符号δ,或者变成A,甚至B也会变成13。”
Hidden Heroes上的一篇文章介绍,赫柏有一个简化编程过程的想法:让计算机将英语翻译成机器代码。
她的灵感来自计算机科学家贝蒂·霍尔伯顿(Betty Holberton)的分类归并生成程序和莫奇利的短代码。霍尔伯顿是为ENIAC编写程序、使其在几秒钟内计算炮弹轨迹的6名女性之一,她也与赫柏一起从事UNIVAC I的开发工作。她的分类归并生成程序是1951年为UNIVAC I发明的,用于处理存储在磁带上的大量数据文件。斯坦福大学关于编程语言的介绍表明,赫柏将分类归并生成程序定义为第一个虚拟内存版本,因为它无需程序员的指导即可自动使用覆盖。20世纪40年代开发的短代码可以让技术人员使用与机器代码指令直接对应的简短英语单词序列来编写程序。它弥合了人类可读代码和机器可执行指令之间的鸿沟。
“我认为,分类归并生成程序是告诉我们实际可以使用计算机编写程序的第一步。”赫柏在演讲中说,“而短代码则是让程序员能够用一种与原始机器码毫无相似之处的语言来编写程序的第一步。”
改进编程
IT Professional杂志的一份资料表明,赫柏认为计算机应该使用类似人类的语言,而不是要求人类使用计算机语言,她开始思考如何让程序员用英语来调用特定代码。
不过她需要一个常用指令库供计算机参考,还需要一个将英语翻译成机器代码的系统。这样,计算机就能理解要完成什么任务了。
当时没有这样的库,所以赫柏自己建了一个。它包括存储着广泛使用的任务指令的磁带,她称之为“子程序”。每盘磁带存储一个子程序,同时给这个子程序分配了一个三位数的呼号,这样UNIVAC I就可以找到正确的磁带。根据斯坦福大学的介绍,这些数字代表3个内存地址的集合:一个代表子程序的位置、一个代表数据的位置、一个代表输出位置。
“我所要做的就是写下一组呼号,让计算机在磁带上找到它们,然后做加法。”赫柏在计算历史中心(Centre for Computing History)的一篇文章中说,“这是第一款编译器。”
该系统被称为A-0编译器,因为代码是用一种语言编写的,然后被“编译”成了一种机器语言。
Cockroach Labs公司的一篇文章表明,以前需要1个月手动编码完成的任务,现在只需5分钟。
赫柏向埃克特-莫奇利计算机公司的高管们展示了A-0编译器。然而,文章中表示,他们并没有很激动,而是表示他们不相信一台计算机能够自己编写程序。
该公司的领导层花了两年时间才接受了A-0编译器,2024年A-0编译器被授予“IEEE里程碑”。由IEEE历史中心管理并得到捐助者支持的里程碑计划旨在表彰全球范围内的卓越技术发展成果。
文章来源于悦智网,作者Joanna Goodrich
AMD自适应及嵌入式计算技术日开启报名
(席位有限)
6.26上海,诚邀参加