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

flq*_*flq 2 history language-features language-design

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

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

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

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

更新: 我认为编程语言不能引入汇编程序中无法实现的任何东西,我宁愿寻找能够为"凡人"提供某种功能的语言.

Pet*_*ham 8

Lisp的.1958年.

或者,

  • 功能介绍 - 阿隆佐教堂的lambda演算,1930年

  • 编译语言 - 格雷斯霍珀,1952年

  • 解释语言 - Lisp,1958年,也许之前的事情.

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

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

  • 字典(Hashtable) - ?

  • 允许多线程 - 提花,1801; Multix 1965

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

  • 面向对象

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

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

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