2009-10-23 48 views
2

迄今为止,我一直在使用Java,Prolog,SQL和C#语言。我知道Java和C#是必不可少的,Prolog声明式和SQL有些声明式语言。 Java和C#是面向对象的,您可以使用它们开发面向方面的程序。对编程语言进行分类

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

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

回答

14

你可以在this Wikipedia article of the same name找到大量的编程范例。特别是右边的树很有帮助和全面。我担心,许多编程语言可能适用于多个类别,例如,C#是结构化,命令式,面向对象,事件驱动,功能性。

  • 结构性,因为它包括流控制语句。
  • 命令,因为你写什么电脑应该做的。
  • 面向对象因为你可以用类来模拟问题。
  • 事件驱动由于在语言语法中直接包含多播代表和事件,使一些设计模式过时。
  • 功能因为代表具有作为第一类对象的功能,并允许您以功能方式编写程序。

的Java,而另一方面,只有股结构,势在必行该名单的,使之更“纯”面向对象的语言,通过脱俗太多其他范式面向对象的。

注意:这些分类取自各自的维基百科页面。

这些分类中的每一个都是相互正交的,并且上面文章中提到的很多都是。他们描述如何处理语言,语法或执行的不同方面。

+5

可以downvoters至少发表评论为*为什么?* – Joey 2009-10-23 17:20:49

+0

+1来抵消downvotes,因为这确实是维基百科上更好的文章之一。 – Rook 2009-10-26 15:41:22

2

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

4

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

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

4

略有切线,但O'Reilly做了一个伟大的海报,基于Éric Lévénez's original,通过他们的历史追溯主要编程语言。

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

+0

加上一个很有趣。 – 2010-07-02 20:45:38