分类编程语言

时间:2009-10-23 15:21:00

标签: programming-languages categorization

到目前为止,我和其他人一起使用过Java,Prolog,SQL和C#语言。我知道Java和C#是必不可少的,Prolog声明性和SQL有些声明性语言。 Java和C#是面向对象的,你可以用它们开发面向方面的程序。

这已经有四种不同的特征,某些语言可能适合或实现:命令式,声明式,面向对象,面向方面,我遇到过各种其他类别:函数式语言,汇编语言,可能还有更多我没有的东西听到了。

是否存在某种同意的和/或逻辑分类或多维分类,其中编程语言可以以一种一致的方式进行分类?

5 个答案:

答案 0 :(得分:14)

您可以在this Wikipedia article of the same name中找到大量编程范例。特别是右边的树非常有用而且非常全面。

我担心,许多编程语言可能适用于多个类别,例如,C#是结构化,命令式,面向对象,事件驱动,功能性。

  • 结构化,因为它包含流量控制语句。
  • 势在必行,因为你写了计算机应该做的事情。
  • 面向对象,因为您可以使用类来模拟问题。
  • 事件驱动,因为直接在语言语法中包含多播委托和事件,使得一些设计模式过时。
  • 功能因为委托作为第一类对象,并允许您以功能方式编写程序。
另一方面,Java只共享该列表的结构化,命令式面向对象的,使其更像是一种“纯粹的”OO语言,没有被太多其他范例。

注意: 这些分类来自相应的维基百科页面。

这些分类中的每一个是彼此正交的,并且上面提到的许多分类是。它们描述了如何处理语言,语法或执行的不同方面。

答案 1 :(得分:4)

this seminal CS paper (which predates OO, btw) by Peter Landin的末尾有一个有趣的讨论,在那里我们可以看到,最基本的区别在于命令式和声明式语言。从根本上讲,类型系统类别提供了高级语言分组。语法的可扩展性是另一个相当高的级别和基本分类。

我认为多维矩阵比层次结构更适合您的目的,我认为上面列出的3个维度绝对是基本的。

答案 2 :(得分:4)

略有切向,但O'Reilly做了一张基于Éric Lévénez's original的精彩海报,通过他们的历史记录了主要的编程语言。

http://cdn.oreillystatic.com/news/graphics/history-poster20.gif

答案 3 :(得分:2)

这些特征(范例)得到了很好的理解和接受。但他们不一定定义语言。 C#具有命令性和功能性以及面向对象的特点,而且F#也具有势在必行的特性。

答案 4 :(得分:1)

很难击败维基百科的List of Programming Languages by Category。它使用了四十个类别。