编程语言历史

✍ dations ◷ 2024-10-30 09:30:07 #软件史,计算机科学史

这篇文章在探讨编程语言在历史上的主要发展。更详细的事件发生年表,请参阅编程语言年表。

第一个编程语言比现代的计算机还早诞生。首先,这种语言是种编码(en:code)。

于1804年发明的提花织布机(或称甲卡提花织布机,英文:en:Jacquard loom),运用打孔卡上的坑洞来代表缝纫织布机的手臂动作,以便自动化产生装饰的图案。

爱达·勒芙蕾丝在1842年至1843年间花费了九个月,将意大利数学家Luigi Menabrea关于查尔斯·巴贝奇新发表机器分析机的回忆录翻译完成。她于那篇文章后面附加了一个用分析机计算伯努利数方法的细节,被部分历史学家认为是世界上第一个电脑程序。

Herman Hollerith在观察列车长对乘客票根在特定位置打洞的方式后,意识到他可以把信息编码记载到打孔卡上,随后根据这项发现使用打孔卡来编码并纪录1890年的人口统计数据。

第一个计算机代码是针对他们的应用面设计的。在20世纪的前十年主要是用十进制来算数,后来人们发现不只是用文字,也可以用数字来表现逻辑。举例来说,阿隆佐·邱奇曾以公式化(formulaic)的方式表达λ演算。图灵机是一种纸带标记(tape-marking)机器(就像电话公司用的那种)操作方法抽象化后的集合。图灵机这种透过有限数字(finite number)呈现机器的方式,奠定了程序如同冯·诺伊曼结构计算机中的数据一样地存储的基础。但不同于λ演算,图灵机的代码并没有办法成为高级编程语言的基石,这是是因为它主要的用途是分析算法的复杂度。

就像许多历史上的"第一次"一样,第一个现代编程语言也很难界定。最一开始是因为硬件限制而限定了语言,打孔卡允许80行(column)的长度,但某几行必须用来记录卡片的顺序。FORTRAN则纳入了一些与英文字词相同的关键字,像是"IF"、"GOTO"(原字词为go to),以及"CONTINUE"。之后采用磁鼓(magnetic drum)作为存储器使用,也代表计算机程序也必须插入(interleave)到磁鼓的转动(rotation)中。和现今比较起来,这也让编程语言必须更加依赖硬件(hardware-dependent)。

对部分的人认为必须在"编程语言"的状态确立之前,根据能力(power)以及可读性(human-readability)的程度来决定历史上第一个编程语言是什么语言。提花织布机和查尔斯·巴贝奇所制作的差分机(en:Difference Engine)都具备在大量限制下,简单描述机器应运行行为的语言。也有种并非设计给人类运用的受限特定领域语言(en:domain-specific language),是将打孔卡运用到自动演奏钢琴(en:player piano)上。

最早被确认的现代化、电力引导(electrically powered)的计算机约在1940年代被创造出来。程序员在有限的速度及存储器容量限制之下,撰写人工调整(hand tuned)过的汇编语言程序。而且很快就发现到使用汇编语言的这种撰写方式需要花费大量的脑力(intellectual effort)而且很容易出错(error-prone)。

康拉德·楚泽于1948年发表了他所设计的Plankalkül编程语言的论文。但是在他有生之年却未能将该语言实现,而他原本的贡献也被其他的发展所孤立。

在这段期间被开发出来的重要语言包括有:

有三个现代编程语言于1950年代被设计出来,这三者所派生的语言直到今日仍旧广泛地被采用:

另一个1950年代晚期的里程碑是由美国与欧洲计算机学者针对"算法的新语言"所组成的委员会出版的(名称取自"ALGOrithmic Language"(算法语言))。这份报告强化了当时许多关于计算的想法,并提出了两个语言上的创新功能:

另一个创新则是关于语言的描述方式:

Algol 60对之后语言的设计上带来了特殊的影响,部分的语言很快的就被广泛采用。后续为了开发Algol的扩展子集合,设计了一个名为Burroughs(en:Burroughs large systems)的大型系统。

延续Algol的关键构想所产生的成果就是ALGOL 68:

Algol 68一些较少被使用到的语言功能(如同步与并行区块)、语法快捷方式的复杂系统,以及类型自动强制转换(coercions),使得实现者兴趣缺缺,也让Algol 68获得了(diffcult)的名声。尼克劳斯·维尔特就干脆离开该设计委员会,另外再开发出更简单的Pascal语言。

在这段期间被开发出来的重要语言包括有:

1960年代晚期至1970年代晚期的期间中,编程语言的发展也有了重大的成果。大多数现在所使用的主要语言范式都是在这段期间中发明的:

这些语言都各自演展出自己的家族分支,现今多数现代编程语言的祖先都可以追溯他们其中至少一个以上。

在1960年代以及1970年代中结构化程序设计的优点也带来许多的争议,特别是在程序开发的过程中完全不使用GOTO。这项争议跟语言本身的设计非常有关系:某些语言并没有包含GOTO,这也强迫程序员必须结构化地编写程序。尽管这个争议在当时吵翻了天,但几乎所有的程序员都同意就算语言本身有提供GOTO的功能,在除了少数罕见的情况下去使用GOTO是种不良的程序风格。结果是之后世代的编程语言设计者发觉到结构化编程语言的争议实在既乏味又令人眼花缭乱。

在这段期间被开发出来的重要语言包括有:

1980年代的编程语言与之前相较显得更为强大。C++合并了面向对象以及系统程序设计。美国政府标准化一种名为Ada的系统编程语言并提供给国防承包商使用。日本以及其他地方运用了大量的资金对采用逻辑编程语言结构的第五代语言进行研究。函数编程语言社群则把焦点转移到标准化ML及Lisp身上。这些活动都不是在开发新的范式,而是在将上个世代发明的构想进一步发扬光大。

然而,在语言设计上有个重大的新趋势,就是研究运用或大型组织化的程序单元来进行大型系统的开发。Modula、Ada,以及ML都在1980年代发展出值得注意的模块化系统。模块化系统常拘泥于采用泛型程序设计结构:泛型存在(generics being)、本质(essence),参数化模块(parameterized modules)。(参阅多态)

尽管没有出现新的主要编程语言范式,许多研究人员仍就扩展之前语言的构想并将它们运用到新的内容上。举例来说,Argus以及Emerald系统的语言配合面向对象语言运用到分布式系统上。

1980年代的编程语言实现情况也有所进展。计算机系统结构中RISC的进展假定硬件应当为编译器设计,而非身为人类的汇编语言程序员。借由中央处理器速度增快的帮助,编译技术也越来越积极,RISC的进展对高级语言编译技术带来不小的关注。

语言技术持续这些发展并迈入了1990年代。

在这段期间被开发出来的重要语言包括有:

1990年代未见到有什么重大的创新,大多都是以前构想的重组或变化。这段期间主要在推动的哲学是提升程序员的生产力。许多"快速应用程序开发" (RAD) 语言也应运而生,这些语言大多都有相应的集成开发环境、垃圾回收等机制,且大多是先前语言的派生语言。这类型的语言也大多是面向对象的编程语言,包含有Object Pascal、Visual Basic,以及C#。Java则是更加保守的语言,也具备垃圾回收机制。与其他类似语言相比,也受到更多的观注。新的脚本语言则比RAD语言更新更好。这种语言并非直接从其他语言派生,而且新的语法更加开放地(liberal)与功能契合。虽然脚本语言比RAD语言来的更有生产力,但大多会有因为小程序较为简单,但是大型程序则难以使用脚本语言撰写并维护的顾虑。尽管如此,脚本语言还是网络层面的应用上大放异彩。

在这段期间被开发出来的重要语言包括有:

编程语言持续在学术及企业两个层面中发展进化,目前的一些趋势包含有:

在这段期间被开发出来的重要语言包括有:

相关

  • 解毒剂解毒剂指可以解除毒性的物质。常见的毒物和对应的解毒剂有:抗高血压药 · 利尿剂 · 血管舒张剂 · β受体阻断剂 · 钙离子通道阻滞剂 · 肾素-血管紧张素系统(ACE
  • 贺拉斯昆图斯·贺拉斯·弗拉库斯(拉丁语:Quintus Horatius Flaccus、希腊语:Οράτιος,前65年12月8日意大利韦诺萨 - 前8年11月27日意大利罗马),奥古斯都时期的著名诗人、批评家、
  • 遗传性假性低醛固酮症2型假性醛固酮减少症(pseudohypoaldosteronism,PHA),是一种症状类似醛固酮减少症的病症,系肇因于机体对醛固酮无法作出反应,负反馈调节抑制机制缺陷,导致醛固酮含量异常。1958年,Cheek
  • 泰陵泰陵(满语:ᡝᠯᡥᡝᠮᡠᠩᡤᠠᠨ,转写:elhe munggan)位于中国河北易县的清西陵,是清世宗雍正帝的陵墓,建于雍正七年(1730年)。内葬世宗雍正皇帝、孝敬宪皇后和敦肃皇贵妃,附设的泰陵妃
  • 紧缺人才征兵计划攸关国家利益之入伍(英语:Military Accessions Vital to the National Interest, MAVNI),俗称紧缺人才征兵计划,是美国国防部的一种征兵方式。该计划招收具有特殊关键技能的合法
  • 孤挺花属孤挺花属() 是石蒜科孤挺花族孤挺花亚族(Amaryllidinae)的唯一一个属,是一类小型开花植物,下共二种,其中比较出名的是原产于南非西开普的南非孤挺花(),这一一种较常见的观赏植物。其分
  • 09I型核潜艇09I型核潜艇(北约代号:“汉级”,英文:)是中华人民共和国研制的第一种核潜艇,1970年起陆续建成服役,共建造5艘,部署在中国人民解放军海军北海舰队。目前该型艇仍有三艘在役。中国核
  • 斯特拉克男爵减缓老化 刀枪不入 自愈强化 死亡孢子释放 优秀军事家 斯特拉克男爵(英语:Baron Strucker)是一位出现在漫威漫画中的超级恶棍,前纳粹党党员,九头蛇的领导者之一,曾策划多起恐怖攻
  • 球栅阵列封装球栅阵列封装(英语:Ball Grid Array,简称BGA)技术为应用在集成电路上的一种表面黏着封装技术,此技术常用来永久性固定如微处理器之类的的装置。BGA封装能提供比其他如双列直插封
  • 外科学历史外科( 希腊语:χειρουργική,cheirourgikē,源自χεῖρ“手” 和ἔργον“工作”)是现代医学的一个科目,主要研究如何利用外科手术方法去解除病人的病原,从而使病人