到目前为止,我和其他人一起使用过Java,Prolog,SQL和C#语言。我知道Java和C#是必不可少的,Prolog声明性和SQL有些声明性语言。 Java和C#是面向对象的,你可以用它们开发面向方面的程序。
这已经有四种不同的特征,某些语言可能适合或实现:命令式,声明式,面向对象,面向方面,我遇到过各种其他类别:函数式语言,汇编语言,可能还有更多我没有的东西听到了。
是否存在某种同意的和/或逻辑分类或多维分类,其中编程语言可以以一种一致的方式进行分类?
答案 0 :(得分:14)
您可以在this Wikipedia article of the same name中找到大量编程范例。特别是右边的树非常有用而且非常全面。
我担心,许多编程语言可能适用于多个类别,例如,C#是结构化,命令式,面向对象,事件驱动,功能性。
注意: 这些分类来自相应的维基百科页面。
这些分类中的每一个是彼此正交的,并且上面提到的许多分类是。它们描述了如何处理语言,语法或执行的不同方面。
答案 1 :(得分:4)
在this seminal CS paper (which predates OO, btw) by Peter Landin的末尾有一个有趣的讨论,在那里我们可以看到,最基本的区别在于命令式和声明式语言。从根本上讲,类型系统类别提供了高级语言分组。语法的可扩展性是另一个相当高的级别和基本分类。
我认为多维矩阵比层次结构更适合您的目的,我认为上面列出的3个维度绝对是基本的。
答案 2 :(得分:4)
略有切向,但O'Reilly做了一张基于Éric Lévénez's original的精彩海报,通过他们的历史记录了主要的编程语言。
答案 3 :(得分:2)
这些特征(范例)得到了很好的理解和接受。但他们不一定定义语言。 C#具有命令性和功能性以及面向对象的特点,而且F#也具有势在必行的特性。
答案 4 :(得分:1)
很难击败维基百科的List of Programming Languages by Category。它使用了四十个类别。