Categorizing programming languages

I have worked among others with Java, Prolog, SQL and C # languages. I know Java and C # are both mandatory, declarative and simple declarative Prolog languages. Java and C # are object oriented and you can develop aspect oriented programs with them.

These are already four different characteristics that can be set or implemented by certain languages: imperative, declarative, object-oriented, aspect-oriented, and I came across different categories: functional languages, assemblers, and maybe Not Heard.

Is there some kind of consistent and / or logical categorization or multidimensional categorization among which programming languages ​​can be classified in a somewhat sequential manner?

+2


source to share


5 answers


You can find a variety of programming paradigms in this Wikipedia article of the same name . Especially the tree on the right is very useful and comprehensive.

And I'm afraid that many programming languages ​​can fall into more than one category, for example C # is structured, necessary, object-oriented, event-driven, functional.

  • Structured as it includes flow control statements.
  • Imperative, since you write what the computer is supposed to do.
  • Object oriented as you can model class problems.
  • Event-driven due to the inclusion of delegates and multi-sheet events directly in the language syntax, making some design patterns obsolete.
  • Functional because delegates are functions like first-class objects and allow you to write programs in a functional way.


Java, on the other hand, only separates the structured, imperative, and object-oriented from this list, making it a cleaner OO language, unoccupied by too many other paradigms.

Note. ... These categories were taken from their respective Wikipedia pages.

Each of these classifications are orthogonal to each other, and many of the articles mentioned above. They describe how various aspects of language, syntax, or execution are handled.

+14


source


At the end there is an interesting discussion on this original CS paper (which predates OO by the way) by Peter Landin where we can that the most fundamental difference is when it comes to imperative or declarative languages. However, at a fundamental level, type type categories provide a high degree of grouping of languages. Syntax extensibility is another fairly high level and fundamental categorization.



I think that a multidimensional matrix is ​​much better suited to your purpose than a hierarchy, and I think the 3 dimensions described above are absolutely fundamental.

+4


source


A bit tangential, but O'Reilly made a great poster based on the original by Éric Lévénez , which traces the major programming languages ​​through their history.

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

+4


source


These characteristics (paradigms) are well understood and accepted. But they don't necessarily define the language. C # has both imperative and functional characteristics as well as object oriented, and F # also has imperative characteristics.

+2


source


It would be difficult to beat the Wikipedia List of Programming Languages ​​by Category . It uses forty categories.

+1


source







All Articles