My Stuff

2010 Conferences

OSGi DevCon @ JAX London

February 23 - Keynote titled OSGi in the Enterprise: Agility, Modularity, and Architecture’s Paradox

EclipseCon

March 22 - 25 - Tutorial on Modular Architecture

Über Conf

June 14 - 17 - Sessions titled Turtles and Architecture and Patterns of Modular Architecture

Catalyst

July 26 - 30 - Two sessions on rich mobile applications and one on agile development. Half day tutorial on software process improvement.

Tweets @ Twitter

re: #apple event "We sold more iPads than any PC manufacturer sold of their entire PC line." 2012-09-12

re: #Apple Event ""Our notebooks now rank #1 in the US in Market share in the last three months." 2012-09-12

Right on. I just won a Best Buy drawing worth $1000. Either that or I won a shiny new virus by clicking the link. Hmm...what to do. 2012-08-29

The #osgi alliance response (http://t.co/KrN8XNWg) to the @mreinhold #jigsaw announcement (http://t.co/9YvcDdqC). 2012-08-29

Good Q&A with @mreinhold on project #jigsaw. http://t.co/9YvcDdqC. Modularity will change the way we design and run apps! 2012-08-28

LinkedIn Profile

The opinions expressed on this site are my own, and not necessarily those of my employer.

Programming Language Classification

Filed Under Development, Platforms, Technology |  

Below is a table that shows some popular and emerging programming languages classified according to the following:

  • Type system - Dynamic or Static type system
  • Problem space - A General Purpose language versus a Domain Specific Language
  • Runtime environment - A Managed environment (ie. garbage collection, etc.) or an Unmanaged environment.
  • Paradigm - Object-Oriented, Procedural, Functional, Imperative, or Declarative

Is this a relevant classification scheme? Are languages classified correctly? Are certain qualified languages missing from the list? How would you modify this list?

Comments

10 Responses to “Programming Language Classification”

  1. Eric Jablow on March 30th, 2009 7:18 pm

    Apple’s Objective-C 2.0 ads memory management. I believe Smalltalk has always managed its own memory space.

  2. Adam Gent on April 3rd, 2009 12:38 pm

    For the type system I think you should have a 3rd option of “optional/both”. Groovy, Dylan, Objective C (iirc), VB.NET and ActionScript (ala latest javascript) have optional typing.

    I kind of like optional typing. In my top level api methods I provide typing but my private and methods I use dynamic typing.

  3. Chuck Norris on September 13th, 2009 1:37 am

    I kind of like optional typing.

  4. thom on October 1st, 2009 9:17 am

    Why is Smalltalk marked as unmanaged?

  5. Loup Vaillant on October 1st, 2009 10:04 am

    It misses some languages: Haskell (purely functionnal, non-strict), Forth and Joy and Factor (concatenative languages based on stacks). You also may want to add ML (or Ocaml), the language F# is based on.

    Your categorization of type systems is too crude. For instance, static types systems can easily be divided between explicit ones (Java, C#, C, C++…) and infered ones, (F#, Ocaml, Haskell). This is important because current type inference as found in these languages gives you genericity for free.

    What do you mean by “imperative”? As I understand it, every OO language is imperative, and every procedural language is imperative. On the other hand, I’d hardly call any functionnal language “imperative”. Many _can_ do imperative programming, but this isn’t the main paradigm. (In this respect F# and Closure are just functionnal).

  6. Jonas Elfström on October 1st, 2009 10:28 am

    You could argue that JavaScript also is Functional.
    http://stackoverflow.com/questions/145053/javascript-as-a-functional-language

    Some like to call Ruby a dynamic strongly typed language and C a static weakly typed language.

  7. okkiefun on October 1st, 2009 10:29 am

    I agree with Loup Vaillant. Let’s not forget a series of languages that have other peculiarities as well. For example C++ has another “language” in it with the templates system. C++ Template metaprogramming can be classified as pure, non strict, untyped functional programming. Notice the word untyped. With the advent of C++1x (whenever that comes) you will be having lambdas within the language as well instead of using a third party library for them. I would also like to add that C++ is not exactly “OOP” but “OOP - friendly”, which is kind of far reaching.

    I can apply the argument to other languages as well. Perhaps your classification should be based initially on a multiparadigm / monoparadigm bisection, because without that, it is kind of incomplete.

    Finally, another thing to think about is whether side effects are allowed or not, depending on the multiparadigm allowance of the language (you can program without side - effects but also with side - effects in Scala”.

    Just my opinion of course.

  8. Edward on October 1st, 2009 11:33 am

    PHP is object oriented! As of PHP5 it supports abstract classes, interfaces, visibility modifiers (public, private, protected) and inheritance. In PHP4 a simplified object model was available.

    See, for example: http://us2.php.net/manual/en/language.oop5.abstract.php

  9. Levi on October 1st, 2009 1:56 pm

    Sort the list by alpha

  10. Sarah Jean E. Munda on July 7th, 2010 11:30 am

    hirap nman ng topic natin guys sana pumasa tau khit hindi natin masagutan ng
    maayos..Peo Infairness mabait c mam khit nagpaparecap..

Leave a Reply