编程已经走了很长一段路。我还比较年轻(第一台计算机: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/