Programming Languages

What programming language should I learn, a link I found on Twitter (like most of the other things I seem to find, nowadays) is a nice list and a good map for some one who is learning languages and looking for experimenting more.

I think for each language we can add a set of additional reasons – for example:

php – any work on mediawiki, drupal, joomla etc.
c# – any work on web parts, dotnet components, silverlight RIA
python – any work on django, nltk, machine learning, Plone, zope

In addition, I would add these languages. They are on my list to play around with and build a few prototypes (not sure when I get to them, though)

Boo – A python inspired language for writing DSLs (domain specific languages)
L Sharp or Lisp or Scheme – A list based language for learning programming
Squeak – A small talk based language for building delightful interactive applications
Berkeley Logo – For simulations, nothing beats this lisp inspired language
Prolog – for building logic programs and expert systems (though expert systems are fading away with machine learning based languages)
Haskell – Seems to be catching fire and may be one of the preferred languages for building multi-core apps
Erlang – Another language for building highly robust, scalable, multi-core apps
AIML – Artificial Intelligence Markup Language for buidling chat bots (even has a python AIML engine). Currently working with a student to build a chatbot for SugarCRM
SPARQL – A semantic web query language (easy if you already know SQL)
RDF and OWL – Not really languages in the conventional sense but I consider them as data languages

After writing all this, I decided to put this in my blog since it is worth remembering and updating them.

When I watch some videos on Lisp/Scheme, I understand why Lispers are so religious about their language. I have not seen more efficient/concise ways of solving problems or clarity of concepts.

Programming Language Popularity

Thanks to a link from programming.reddit.com, I found this fascinating study today. It is different from TIOBE Programming Community Index.

This study looks at programming language popularity from the following angles:

  1. Search results
  2. Job listings from Craig’s list
  3. Book counts from Amazon
  4. Open source projects from Freshmeat
  5. Bookmarks on del.icio.us

Finally the data is normalized, and here are the top 5 languages based on this effort.

  1. C
  2. Java
  3. PHP
  4. C++
  5. JavaScript

Note the popularity of C based languages! Please take a look at the original study since it lists over 10 languages (yes my favorite Python figures in there too). In addition, it also tracks the number of bookmarks in several social networks and discussion groups.

If you are looking at Programming Languages, normally your first instinct is to go for the well known ones. If you are a developer, it increases your chance of getting a good job. But most of us know more than one language. It may be worth adding a scripting language (Python, Ruby, PHP) to your list. If you tend to look a bit towards future, you may want to add a functional language too.

Different languages are useful for different applications.

Python, for example is great for system administration, quick prototyping as a glue language to tie different application, for system configuration.

PHP seems to be popular for rapid building a dynamic web sites.

So there are some other angles from which you can look at these programming languages, if you are a beginner.

  1. How easy is it to read small programs and understand them,  even when you do not know it.
  2. How well is it supported on your preferred platform?
  3. Is there an active discussion group for the beginners and advanced users? Is there a local group where you can go and meet people and brainstorm ideas?
  4. Availability of free learning material, tutorials, wikis, blogs?
  5. Can you quickly learn to write some simple programs in a day?
  6. How many job listings are there in your city for the language?
  7. How is the tool support – IDEs, editors (or editor extensions), profilers, debuggers
  8. Can you think comfortably in the language?
  9. Are there cookbooks where you can simply take the code and modify it for your use?

If you are a seasoned developer, many of these questions still apply, but you may want to add other questions to the list (like performance, scalability, availability of frameworks etc.)