2

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

以下是(绝不是完整的)功能列表,我很想知道它们是用哪种语言以及何时引入的:

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

如果可以的话,试着用一些参考来支持你的陈述。如果你觉得我错过了一个重要的编程语言特性,也应该感谢它的介绍,请评论这个问题,以便可以将它添加到列表中。

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

4

5 回答 5

8

口齿不清。1958 年。

或者,

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

  • 编译语言 - Grace Hopper,1952

  • 解释语言 - Lisp,1958,也许是以前的东西。

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

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

  • 字典(哈希表) - ?

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

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

  • 面向对象

    • Simula (Dahl and Nygaard 1967) 用于具有继承的基于类的 OO
    • CLU (Liskov 1975) 迭代器有一个通用接口,并允许抽象数据类型具有封装的状态和行为
    • Smalltalk(Kay 1970 年代后期)“一切都是对象”
    • Eifell (Meyer 1986) 契约式设计影响了 Javainterface
  • 泛型 - 泛型方法(又是 Lisp)或参数类型(模数???)?

  • 面向方面的编程 - 通用 lisp 元对象协议,1980 年代后期

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

于 2009-07-06T09:22:35.720 回答
4

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

  • 功能- 早期汇编,使用诸如“跳转到子程序”之类的指令。
  • 编译语言- 可以说是 1952 年的 A-0或 [FORTRAN](1957 年的http://en.wikipedia.org/wiki/FORTRAN
  • 解释语言- 1970 年代的Smalltalk (?)。
  • 条件和循环结构- 早期组装,使用分支/跳转。
  • 阵列- 用于最早的计算机(1940 年代)。在FORTRAN中作为语言功能出现。见此文
  • Hashtable - 大约与数组同时出现,因为它只在数组数据结构之上真正使用基本算法。作为一个班级,也许DictionarySmalltalk中。
  • 多线程——这也是操作系统/库的一个特性,尽管语言特性当然可以促进多线程编码。不过,它可能可以追溯到 1960 年代/1970 年代,我想它可以在 Assemby 中完成。
  • 函数式编程- 1950 年代的LISP,受 Alan Turing 的lambda 演算的启发。
  • 面向对象 (OOP) - 1960年代的模拟。
  • 泛型- 1970 年代的CLU
  • 面向方面的编程——也许是 2001 年的AspectJ。(有人可能需要在这方面纠正我。)
  • 元编程- 早期组装,带有自修改代码。

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

于 2009-07-06T09:48:38.570 回答
1

您可以在此处使用语言图表:http: //www.levenez.com/lang/和 Wikipedia 来查找答案。对于初学者:函数、循环和条件从 Fortran 开始就在我们身边。然后,在 1958 年 Lisp 出现了,我想有些人会争辩说其余的都在那时出现了 :)

于 2009-07-06T08:55:29.130 回答
1

寻找第一总是导致头发分裂。我敢打赌,你提到的任何事情在它们大获成功之前都已经完成了好几次。尽管如此,这是一个尝试:

  • 函数 -- FORTRAN,但不是递归的。LISP 或 Algol 用于递归。
  • 编译语言——FORTRAN
  • 解释语言——LISP
  • 条件和循环结构——FORTRAN,但 Algol 给了我们结构编程
  • 数组——FORTRAN
  • 字典——Snobol,我想
  • 允许多线程——PL/I
  • 函数式编程——LISP,但可能不是很强烈。
  • 面向对象——Simula 但 Smalltalk 是真正的普及者
  • 泛型——不知道
  • 面向方面——不知道
  • 元编程——也许是 C++,但代码生成代码并不是一个新想法
于 2009-07-06T09:25:46.697 回答
0

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

于 2009-07-06T08:57:50.887 回答