Programming languages 对编程语言进行分类

Programming languages 对编程语言进行分类,programming-languages,categorization,Programming Languages,Categorization,到目前为止,我与其他人一起使用过Java、Prolog、SQL和C语言。我知道Java和C#是命令式、Prolog声明式和SQL声明式语言。Java和C#是面向对象的,您可以使用它们开发面向方面的程序 这已经是某些语言可能适合或实现的四种不同特征:命令式、声明式、面向对象、面向方面,我还遇到过其他各种类别:函数式语言、汇编语言,可能还有很多我没有听说过的 是否存在某种一致的和/或逻辑分类或多维分类,其中编程语言可以以某种一致的方式进行分类?您可以在中找到大量的编程范例。特别是右边的那棵树非常有用

到目前为止,我与其他人一起使用过Java、Prolog、SQL和C语言。我知道Java和C#是命令式、Prolog声明式和SQL声明式语言。Java和C#是面向对象的,您可以使用它们开发面向方面的程序

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


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

您可以在中找到大量的编程范例。特别是右边的那棵树非常有用而且很全面

我担心,许多编程语言可能不止一种,例如,C#是结构化的、命令式的、面向对象的、事件驱动的、功能性的

  • 结构化,因为它包含流控制语句
  • 命令,因为你写了计算机应该做什么
  • 面向对象,因为您可以使用类对问题进行建模
  • 事件驱动,因为在语言语法中直接包含多播委托和事件,使得一些设计模式过时
  • 功能性,因为委托是作为一级对象的函数,允许您以功能性的方式编写程序
另一方面,Java只共享该列表中的结构化、命令式和面向对象的部分,这使得它更像是一种“纯”的OO语言,不受太多其他范例的影响

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


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

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

最后有一个有趣的讨论,我们可以看到,最根本的区别是命令式语言和声明式语言。仍然在基础级别上,类型系统类别提供了高级语言分组。语法的可扩展性是另一个相当高级别和基本的分类


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

有点相切,但O'Reilly根据这一点制作了一张很棒的海报,追溯了主要编程语言的历史


很难打败维基百科。它使用了40个类别。

+1来抵消反对票,因为这确实是维基百科上更好的文章之一。加上一篇非常有趣的文章。