views:

264

answers:

5

I've worked among others with Java, Prolog, SQL and C# languages so far. I know that Java and C# are imperative, Prolog declarative and SQL somewhat declarative languages. Java and C# are object-oriented and you can develop aspect-oriented programs with them.

That's already four different characteristics that certain languages might fit in or implement: imperative, declarative, object-oriented, aspect-oriented and I've come across various other categories: functional languages, assembly languages and probably lots more I haven't heard.

Is there some kind of agreed and/or logical categorization or multi-dimensional categorization among which programming languages can be classified in a somewhat consistent way?

+11  A: 
Joey
Could downvoters at least leave a comment as for the *why?*
Joey
+1 to counter the downvotes, because that really is one of the better articles on wikipedia.
ldigas
It was only one downvoter; I was just confused since I can't see anything actually wrong with my statements here.
Joey
+2  A: 

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

Robert Harvey
+3  A: 

There is an interesting discussion at the end of this seminal CS paper (which predates OO, btw) by Peter Landin, where we can see that the most fundamental distinction being made is that of imperative vs. declarative languages. Still at the fundamental level, the type system categories afford high level grouping of languages. The extensibility of the syntax is yet another fairly high level and fundamental categorization.

I think a multi dimensional matrix is far better suited for your purpose than a hierarchy, and I think the 3 dimensions outlined above are absolutely fundamental.

+4  A: 
Bob Aman
Plus one for being pretty interesting.
Caleb Thompson
+1  A: 

It would be hard to beat Wikipedia's List of Programming Languages by Category. It uses forty categories.

DonnyD