何时以何种语言引入某些编程功能?

时间:2009-07-06 08:21:04

标签: language-features history language-design

编程已经走过了漫长的道路。我还是比较年轻(第一台计算机:C64),因此我认为编程中的许多东西都是理所当然的,这些东西显然是在某些时候引入的,并且促进了现在常见的编程方式。

以下是一个(完全没有完整的)功能列表,我希望知道哪种语言以及何时介绍它们:

  • 功能介绍
  • 编译语言
  • 解释语言
  • 有条件的&循环结构
  • 数组
  • 字典(Hashtable)
  • 允许多线程
  • 功能编程(作为数据的功能)
  • 面向对象(我们需要更具体吗?可能继承比接口更早?)
  • 泛型
  • 面向方面的编程
  • 元编程

如果可以,请尝试使用一些参考备份您的声明。如果您觉得我错过了一个重要的编程语言功能,也应该感谢您的介绍,请对此问题发表评论,以便将其添加到列表中。

更新 我认为编程语言不能引入汇编程序中无法实现的任何东西,我宁愿寻找能使某些特性成为“凡人”的​​语言。

5 个答案:

答案 0 :(得分:8)

Lisp的。 1958。

可替换地,

  • 功能介绍 - Alonzo Church的lambda演算,1930

  • 编译语言 - Grace Hopper,1952

  • 解释语言--Lisp,1958,也许之前。

  • 有条件的&循环结构 - Bletchley Park Bombe 20世纪40年代(在一个循环中运行)。提花,1801

  • 阵列 - 作为一个连续的记忆块,有一个索引,Bletchley Park或Manchester Baby,20世纪40年代

  • 字典(Hashtable) - ?

  • 多线程余量 - 提花,1801; Multix 1965

  • 函数式编程(作为数据的功能) - Godel,20世纪30年代

  • 面向对象

    • Simula(Dahl and Nygaard 1967)基于类继承的OO
    • CLU(Liskov 1975)迭代器有一个通用接口,并允许具有封装状态和行为的抽象数据类型
    • Smalltalk(20世纪70年代末凯)'一切都是对象'
    • Eifell(Meyer 1986)合同设计影响了Java的interface s
  • 泛型 - 泛型方法(再次使用Lisp)或参数类型(modula ???)?

  • 面向方面的编程 - 常见的lisp元对象协议,20世纪80年代后期

  • 元编程 - lisp宏,有时在50或60年代

答案 1 :(得分:4)

据我所知(并在维基百科的帮助下),我会陈述以下内容:

  • 功能 - 早期Assembly,使用“跳转到子程序”等说明。
  • 已编译的语言 - 可以说是1952年的A-0或1957年的[FORTRAN](http://en.wikipedia.org/wiki/FORTRAN
  • 20世纪70年代
  • 口译语言 - Smalltalk(?)。
  • 有条件的&循环结构 - 早期Assembly,使用分支/跳转。
  • 阵列 - 用于最早的计算机(20世纪40年代)。在FORTRAN中作为语言功能出现。见this text
  • Hashtable - 与数组大致相同,因为它只在数组数据结构之上使用基本算法。作为一个班级,可能Smalltalk中的Dictionary
  • 多线程 - 这是操作系统/库的一个功能,虽然语言功能当然可以促进多线程编码。它可能追溯到20世纪60年代/​​ 70年代,我想它可以在Assemby中完成。
  • 功能编程 - LISP在20世纪50年代,灵感来自Alan Turing的lambda calculus
  • 面向对象(OOP) - - Simula在20世纪60年代。
  • 泛型 - {20}中的CLU
  • 面向方面的编程 - 2001年可能是AspectJ。(有人可能需要纠正我。)
  • 元编程 - 早期Assembly,包含自我修改代码。

请随时使用任何其他信息修改/更新此信息。

答案 2 :(得分:1)

您可以在此处使用语言图:http://www.levenez.com/lang/和维基百科来查找答案。对于初学者:自Fortran以来,函数,循环和条件都与我们同在。然后,在1958年,Lisp到了,我想有些人会争辩其余部分来了:)

答案 3 :(得分:1)

寻找第一个总会导致头发分裂。我打赌你提到的任何事情都会在他们遇到重要时间之前完成几次。尽管如此,这是一次尝试:

  • functions - FORTRAN,但不是递归的。 LISP或Algol用于递归。
  • 编译语言 - FORTRAN
  • 解释语言 - LISP
  • 条件和循环结构 - FORTRAN,但Algol给了我们结构编程
  • 数组 - FORTRAN
  • 字典 - Snobol,我想
  • 允许多线程 - PL / I
  • 函数式编程 - LISP但可能没有强烈的意义。
  • 面向对象 - Simula但Smalltalk是真正的普及者
  • generics - dunno
  • 面向方面 - dunno
  • 元编程 - 也许是C ++,但代码生成代码并不是一个新想法

答案 4 :(得分:0)

我认为我们可以安全地说“汇编”。大多数(如果不是全部)这些概念已经存在了很长时间。

相关问题