language-features - 某些编程功能何时以及以何种语言引入?

标签 language-features history language-design

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

下面是一个(绝不是完整的)功能列表,我很想知道这些功能是在哪种语言中以及何时引入的:

  • 功能介绍
  • 编译语言
  • 口译语言
  • 条件和循环结构
  • 数组
  • 字典(哈希表)
  • 允许多线程
  • 函数式编程(函数作为数据)
  • 面向对象(我们需要更具体一些吗?也许继承早于接口(interface)?)
  • 泛型
  • 面向方面的编程
  • 元编程

如果可以,请尝试用一些引用资料来支持您的陈述。如果您觉得我遗漏了一个重要的编程语言特性,其介绍也应该受到赞赏,请对此问题发表评论,以便将其添加到列表中。

更新: 我想编程语言不能引入任何在汇编程序中不可能实现的东西,我宁愿寻找使某些功能对“凡人”可用的语言。

最佳答案

口齿不清。 1958.

或者,

  • 函数介绍 - Alonzo Church 的 lambda 演算,1930 年

  • 编译语言 - Grace Hopper,1952 年

  • 解释型语言 - Lisp,1958 年,也许更早。

  • 条件和循环结构 - Bletchley Park Bombe 1940 年代(循环运行)。提花,1801

  • 数组 - 作为带有索引的连续内存块,Bletchley Park 或 Manchester Baby,1940 年代

  • 字典(哈希表)- ?

  • 允许多线程 - Jacquard,1801;多路复用 1965

  • 函数式编程(函数作为数据)- Godel,1930 年代

  • 面向对象

    • Simula(Dahl 和 Nygaard,1967 年),用于基于继承的面向对象的类
    • CLU ( Liskov 1975 ) 迭代器有一个公共(public)接口(interface),并允许抽象数据类型封装状态和行为
    • Smalltalk(Kay 1970 年代后期)“一切皆对象”
    • Eifell ( Meyer 1986 ) design by contract 影响了 Java 的 interface
  • 泛型 - 泛型方法(又是 Lisp)还是参数类型(modula???)?

  • 面向方面的编程 - 常见的 lisp 元对象协议(protocol),80 年代后期

  • 元编程 - lisp 宏,50 年代或 60 年代的某个时候

关于language-features - 某些编程功能何时以及以何种语言引入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085958/

相关文章:

ruby-on-rails - 特征区分: Rails/Django

programming-languages - 语言必须具备哪些功能?

macros - 宏(用户定义的代码转换)的想法是什么时候出现的?

c++ - 标准化之前多长时间 `string` 可用?

c++ - 为什么返回类型在函数名之前?

java - Serializable/Cloneable/... 的惯用设计在 Scala 中看起来如何?

tuples - C# 7.0 中的元组文字能否启用面向方面的编程

c++ - 为什么只允许一个隐式转换将参数解析为 C++ 中的函数?

firefox - 如何在 Firefox 的 Web 扩展中获取当前选项卡的历史记录?

language-agnostic - 你最喜欢的语言如何处理深度递归?