Monday, July 1, 2013

Five places you need a Programming Language

This morning while flipping through my "newspaper" (an eReader), I ran across this short video by Bjarne Stroustrup talking about The Five Programming Languages You Need to Know.  Bjarne is acknowledged to be the father of C++, and so clearly C++ was going to be on his list.  But what I found disappointing was that the rest of his list mostly included the C family of programming languages.  You know, C, C#, Java, JavaScript, et cetera, with maybe one exception.  Did he never access a database?  Larry Wall (inventor of Perl), had a slightly better take, but I still think it was pretty limited.  Even expanding the list to 10 languages gives what I think is a very weak picture.

I know far more than 10 programming languages.  The last time I updated that section of my resume (in 2006), I cut it back to 10 from the original long list I had.  Nobody cares these days if you know Pascal (or if they do, you don't want to work there).

One thing that eWeek had right in its list of 10 languages was that they have different purposes, and their list only addressed application development.

  1. Application Development
    This is the basic stuff, of which the eWeek article, Bjarne and Larry are talking about.  Included here is C, C++, C#, Java, PHP, Perl, Ruby and a lot of others, including old stuff like Fortran, Cobol and some newer stuff like Erlang, and various esoterica like Haskel, Scheme and Lisp.
  2. Data Management and Query
    For the most part, SQL, although these days thinks like XQuery and Sparql are much more interesting, but also esoteric.  With SQL, dialect variations between Oracle, MySQL and Microsoft SQL are almost as important as the various C family variations under application development above.
  3. Web Applications
    HTML, CSS and JavaScript are the bare minimum here.  Then there's ASP, JSP,  (PHP really belongs here as well), ColdFusion and the whole host of other scripting frameworks.  And then there's also XSLT that almost deserves a section of its own.
  4. Scripting Interfaces
    JavaScript, VBScript, CoffeeScript, Drools, Caml, and a ton of other languages.  These are principally used inside applications to do INTERNAL application automation and to build interfaces.
  5. Application Automation
    External application automation is mostly an exercise in various shell scripting languages, back in the days the major interpreter was COMMAND.COM (DOS), now CMD.EXE (Windows).  Those learned some of their syntax from various Unix shell scripting languages, including sh (the Bourne shell), but there's also the C-shell and bash and many others.  My Unix days are quite dated. There are some other scripting languages (awk was an old favorite of mine).  Application build tools have a language all their own, and can also be used to automate application behaviors from the outside.
Any software engineer who's worth their salt can claim not just 5 programming languages, but probably five from each of the above categories with the possible exception of Data Management and Query.

0 comments:

Post a Comment