Programming Languages You Should Learn

Over at eWeek, there's an article titled 10 Programming Languages You Should Learn Right Now, which lists them as  PHP, C#, Ajax (not a language!), JavaScript, Perl, C, Ruby/Rails, Java, Python and VB.NET.

Thomas David Baker calls the eWeek article "the most ill-informed piece I’ve read in a while" and came up with his own list of languages, dividing them into "learn", "maybe" and "no".

Each of these articles was written with a completely different focus. eWeek's reeks of "I got assigned this piece by my editor and want to get it over as quickly as possible". Based on the languages in the list and the writing, I'd be willing to wager that the languages chosen were picked solely by number of job listings (5 minutes' worth of monster.com searches), with the "what it is" and "why you should learn it" bits quickly pasted on. Beyond the number of job search "hits", there's no rhyme nor reason to it. To borrow a line from Dorothy Parker, this isn't an article to be tossed aside lightly, but thrown away with great force.

Baker's article on the other hand, takes the long view, which I think is a better strategy career-wise. In my opinion, if programming is what you do and what you want to do, Baker's list is better, as it attempts to address future directions in programming. Judging from the comments both in Baker's blog and reddit, I'm not alone.

My own opinions are listed below:

  • Be pragmatic: do have a "now" language on your resume, and keep practicing it! Preparing for the future doesn't mean ignoring the present. Besides, you've got bills to pay. Pick the one that best suits your current employment needs, master it, and keep up with the news on it. Every now and again, try out some of its features that you've never used or use rarely, just to keep yourself sharp. In my case, this language is PHP, as it's the preferred programming language for developing client software for Tucows services and the preferred programming language of our customers. The speed with which I can crank out a PHP app and its extensive libraries are also major factors in this decision.

  • Learn a functional programming language; programming seems to be evolving in that direction. Those of you who were programming in the '90's should be getting a feeling of deja vu; once upon a time, the mantra was "learn an object-oriented programming language; programming seems to be evolving in that direction". OOP should now be second nature to any programmer, but at it became mainstream, the problems that we want to solve with computers have grown in both complexity and number as well. The functional approach is as old as Lisp, but after all this time, it's starting to catch on. For explanations of the merits of functional programming that won't put you to sleep, see Joel Spolsky's Can Your Programming Language Do This? and Steve Yegge's Execution in the Kingdom of Nouns. In my case, this language is Ruby, partly for Ruby on Rails but also because it's a language we use in-house here at Tucows.

  • Brush up on concurrent programming. Strictly speaking, Moore's Law is an observation that we've been able to double the number of transistors on a chip every 18 months. The everyday interpretation of this is that processors double in speed every 18 months. Although processors have been getting packed with more transistors -- hey, we've got dual-core chips on the market and quad-cores are around the corner -- if the trend in processor speeds had kept up with the way it was going in the 1990s, 10GHz Pentiums would've been commonplace by now. As the Dr. Dobbs' Journal article The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software suggests, relying on Moore's Law to keep up with our increasingly complex algorithms is no longer enough; we must get better at concurrent programming. In my case, my plan is to brush up on multithreaded programming (something which I generally avoid like the plague) and give Erlang, the current darling topic of the reddit set, a peek. For more on Erlang, see Why I Chose Erlang and The Best Erlang Propaganda You'll Ever See.
Comments
Post a comment
No comments found.
Post comment:
Format Type: 
  Convert newlines
  Receive comment notifications for this article
Subject: 
   
insert bold tagsinsert italic tagsinsert underline tagsinsert strikethough tagsinsert linkinsert blockquote tags
Comment: 
Comment verification:

Please enter the text you see inside the graphic to post your comment:
You are not currently logged in. If you would like your user information to be displayed with your comment, please enter your login information below.
Login information:
Username: 
Password: 
If you would like to post contact information on your comment, please enter your information into the optional fields below:
Contact information:
Name: 
URL:  example: http://yourdomain.com
Email: 
Please note: email will not be displayed on the site, only for the blog owner. If logged in, URL will only be used.