What Programming Language to Learn (Next)

what_programming_language_to_learn_header

So you’re ready to learn a new programming language? You might be entirely new to the world of application development, in that case, welcome! Or you’ve might have been creating applications for years, but now you feel you’re ready for something new. Picking a programming language can be a daunting task. There are an enormous amount of options, hence this short and handy guide.

Note: This article is also available in Serbo-Croatian.

I created this flowchart after reading Seven Languages in Seven Weeks. I realized that the wealth of programming language choices might be the reason why few developers venture out of their familiar turf and try on a new language. So here’s your chance, pick your choice and work it!

Be Sociable, Share!
This entry was posted in Java and JavaScript. Bookmark the permalink. Both comments and trackbacks are currently closed.

75 Comments

  1. Dirkvandepoel
    Posted February 8, 2011 at 7:38 pm | Permalink

    Peter,

    Obviously there are plenty of choices, possible additions to the chart:
    - embedded devices: C
    - mobile development: plenty of frameworks, e.g. http://www.appcelerator.com/
    - web: php ref. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

  2. Posted February 9, 2011 at 7:59 am | Permalink

    Hey Dirk,
    I totally forgot about embedded devices. C is definitely a good choice in that case, although I’ve seen C++ too (for instance the Arduino) It’s been a while since I worked with anything embedded though, so I’m sure I’m not a good reference :)

    I’m a bit hesitant to advice any one to learn JavaScript. It’s an important language for sure, but is it something that will help you grow as a dev? I’m not sure. I have similar feelings towards PHP (it’s probably a good idea to add those two to the “job security” part of the chart).

  3. Posted February 9, 2011 at 3:37 pm | Permalink

    JavaScript can definitely help you grow as a developer, in essence every programming language can. You can’t skip out on JavaScript and PHP because of that reason, simply because, although they have a high scriptkiddy level at some sort, they both embrace the most complex technical concepts, development methodologies and testing environments available to us as developers.

  4. Nicolas
    Posted February 9, 2011 at 5:34 pm | Permalink

    You miss crytical system (ADA…), processor design (VHDL…), IA (prolog / lisp…), sys admin (shell / powershell / perl), maths (MathLab…), legacy systems (Cobol / Fortran …), drivers and microcontrolers (asm…)

  5. Bokiyis
    Posted February 9, 2011 at 8:46 pm | Permalink

    JS totally can help you grow as developer because of its cool OOP-like features and ability to easily use functional style

  6. Aa
    Posted February 9, 2011 at 9:21 pm | Permalink

    interesting.. php is not mentioned which is very popular on web env.

  7. Posted February 9, 2011 at 9:31 pm | Permalink

    I probably should’ve expressed my comment a bit better. You’re quite right that JavaScript has a number of significant advantage over more “traditional” languages (e.g. Java). I have more than a few previous posts on JavaScript and I believe we haven’t seen the best of JavaScript yet.

    Judging by much of the code that is available on the Internet (including my own, I’m afraid), there’s also a downside to JavaScript: it’s terribly easy to write very cluttered code with enough side effects to cause a Haskell programmer to go into cardiac arrest.

  8. Posted February 9, 2011 at 10:58 pm | Permalink

    yep but RoR vs PHP…

  9. steven
    Posted February 10, 2011 at 12:55 am | Permalink

    no grails? should go hand in hand with familiarity and web.

  10. Posted February 10, 2011 at 3:35 am | Permalink

    Grails is a framework, the language is groovy.

  11. steven
    Posted February 10, 2011 at 4:01 am | Permalink

    i realise that, but writing Ruby for web is pretty weak…

  12. Posted February 10, 2011 at 4:01 am | Permalink

    Funny — by day I spend most of my time in JavaScript, digging my own grave with side effects. By night, I detox for a couple hours with Haskell. I’m not dead yet, though.

  13. jy
    Posted February 10, 2011 at 4:44 am | Permalink

    great post! i do think javascript is an important language to know for html5-style development, and also event-based programming on the web (a la node.js)

  14. Posted February 10, 2011 at 5:00 am | Permalink

    Really cool. Keep posting charts like this.

  15. Posted February 10, 2011 at 9:55 am | Permalink

    while RoR might be a nicer programming language, failing to mention PHP with regards to web is a massive omission, given the sheer number of sites built with PHP…

  16. Posted February 10, 2011 at 3:58 pm | Permalink

    yeah but it isn’t actually a very good language. Hence the recommendation of Ruby ;)

    Also RoR isn’t a programming language. It’s a web framework for Ruby.

  17. 123
    Posted February 10, 2011 at 5:48 pm | Permalink

    VB

  18. Anonymous
    Posted February 10, 2011 at 6:11 pm | Permalink

    Ruby is not that better.
    If you want job security, PHP is pretty much the only safe bet in the web.

  19. john
    Posted February 10, 2011 at 6:38 pm | Permalink

    cool post but you missed “Scientific Programming” for which Fortran (77, 90, 2003,….) is mostly used

  20. Asdf
    Posted February 10, 2011 at 7:01 pm | Permalink

    What kind of flow chart is this?

  21. J24
    Posted February 10, 2011 at 7:30 pm | Permalink

    You guys are taking this chart too seriously.

  22. Posted February 10, 2011 at 8:37 pm | Permalink

    sure – I know RoR isn’t a language, but when folks talk about Ruby, it’s generally in the context of Rails

  23. edlich
    Posted February 10, 2011 at 9:01 pm | Permalink

    No it’s not. Ruby enables Rails and Groovy enables Grails.

  24. Posted February 10, 2011 at 9:18 pm | Permalink

    No F#? I am disappoint.

  25. Anonymous
    Posted February 10, 2011 at 10:56 pm | Permalink

    Haha. So much is wrong. Lua isnt a programming language. JS xD :D haha I learn c++ after objective c and cocoa.

  26. Bakersemail
    Posted February 10, 2011 at 11:00 pm | Permalink

    obviously ruby was written for web just because of rails… 1+1=2?

  27. Bakersemail
    Posted February 10, 2011 at 11:01 pm | Permalink

    i would argue ruby isnt a good language. it’s all opinion.

  28. 842
    Posted February 11, 2011 at 12:16 am | Permalink

    where is prolog o-o

  29. Fuck
    Posted February 11, 2011 at 12:20 am | Permalink

    You’re a fucking idiot and don’t know what programming is.

  30. Guy
    Posted February 11, 2011 at 12:21 am | Permalink

    You’re a fail troll and a fucking tool.

  31. Dude
    Posted February 11, 2011 at 12:22 am | Permalink

    Job Security, not a better language. Herp derp you tool.

  32. Bakersemail
    Posted February 11, 2011 at 12:44 am | Permalink

    chill. this post has obviously brought out a lot of strong opinions but there is no need for that

  33. Posted February 11, 2011 at 5:46 am | Permalink

    Many many thanks… I wanna learn “RUBY”

  34. Posted February 11, 2011 at 6:49 am | Permalink

    You miss Desktop development. using languages like Delphi and C++

  35. Posted February 11, 2011 at 7:08 am | Permalink

    Everyone, lets try and keep the discussion civilized. I’ve had to remove a few comments that weren’t appropriate.
    It could be interesting if you try to explain why you prefer a language. I know it isn’t always easy and a lot comes down to personal choice.

    For example, are there other reasons besides job security to choose PHP over Ruby? I have to admit I only have limited experience with PHP. I’ve written a basic CRUD application, created small WordPress plugins, tried to create Drupal plugins and have also seen code based on the Zend framework (never written any). I thought the Zend code was very clear, but a little lengthy (something that really bothers me in Java).
    Does PHP have certain language features that set it apart from Ruby?

  36. LotusLand
    Posted February 11, 2011 at 8:14 am | Permalink

    >I realized that the wealth of programming language choices
    >might be the reason why few developers venture out of their
    >familiar turf and try on a new language.

    I’m a software developer and have been programming for fun since my teens.

    However, I didn’t program because I loved any language but because of what I was programming, such as learning 3D graphics in QBASIC in my teens, writing physics simulations, games, utilities etc.

    I’d try a new language if there was a market for it but I definitely won’t be wasting my time learning programming language as a hobby, there’s just so many better things to do, such learning to play a piano or learn a foreign language. Or becoming involved in a sport, etc.

  37. Posted February 11, 2011 at 8:22 am | Permalink

    There’s no best computer language, the power is relative to its developer. :)

  38. Posted February 11, 2011 at 8:22 am | Permalink

    Works on every platform but not well known…. haXe.
    It compiles to Flash/JS/PHP/C++/Neko, and C#/Java coming soon :)

  39. Bryan
    Posted February 11, 2011 at 11:12 am | Permalink

    No Visual FoxPro?! ;)

  40. Becca
    Posted February 11, 2011 at 11:57 am | Permalink

    It’s good =)
    But now you need to add “Did you learn Qt?” => “any .NET”

  41. Posted February 11, 2011 at 2:35 pm | Permalink

    I often see this question asked from an academic context. This is a VHS vs Betamax question (or Xbox 360 vs PS3). PHP is an ugly language (object notation = ->? yuk).
    The technical merits of a language are of little consequence if you can’t find a job writing it (which will ultimately result in the language becoming irrelevant – beautiful but irrelevant). English isn’t the most elegant language in the world, but accidents of fate have led to it’s supremacy as the global lingua franca.
    So when asked “what language should I learn next re: web dev” – to exclude PHP, arguably the “english|VHS|X360″ of the web is a major oversight from a commercial perspective. From an academic perspective, Ruby and Python are undoubtedly far more elegant (although personally I think Python has a broader scope)

  42. Pconn
    Posted February 11, 2011 at 2:37 pm | Permalink

    Power Builder still kicks a$$

  43. Buzzby
    Posted February 11, 2011 at 3:17 pm | Permalink

    Ruby written just for web? No. Written just to be a pure OO scripting language. Rails came after. Hey that reminds me, any place for Smalltalk and (ugh) Perl?

  44. Swensens
    Posted February 11, 2011 at 3:18 pm | Permalink

    I second Richard Minerich disappointed! Where is F#?!

  45. Buzzby
    Posted February 11, 2011 at 3:22 pm | Permalink

    By the way, it’s a fun chart. I say grow it until it is all encompassing and takes over the world.

  46. Visitor
    Posted February 11, 2011 at 3:23 pm | Permalink

    Well, I love this flowchart as, after answering No to everything else, I got to the bottom and found, to my delight, the very languages I’ve already focused my radar on: Haskell and Python. :)

  47. Posted February 11, 2011 at 3:24 pm | Permalink

    I prefer VBA…especially for calculation intensive apps

  48. Posted February 11, 2011 at 4:53 pm | Permalink

    Please update your chart (yes, that means 8 weeks) to include C / C++ for Embedded (very cool robotics stuff!) and PHP/JavaScript for Job Security = Web. Then we can slashdot your site…

  49. Paul Barrett
    Posted February 11, 2011 at 6:45 pm | Permalink

    I don’t think PHP has anything that Ruby doesn’t, though I know very little Ruby so far. I do know you can do a lot with PHP that people think you can’t; for instance I’ve worked on an intelligent distributed system which uses long running cli processes which are capable of shutting down gracefully and even recovering gracefully from fatal errors and getting themselves back up and running when appropriate (yes, without manual intervention,) and letting us know what happened if exiting is appropriate. PHP might not have been my first choice for this – I’d prefer C++ or Python – but we’re a primarily PHP based company, and there’s nothing we’ve wanted to do that we couldn’t do in PHP. The language is very capable as long as the programmer is very capable.

    Most of what people say is bad about PHP is actually them not understanding the language and what it can do or judging it on the worst code they can find (as though bad English authors means James Joyce’s prose is also ugly,) or on what a standard website needs to do, which is such a tiny portion of its capabilities. Java’s syntax is uglier (it’s the ugliest language I’ve used, in my opinion,) and yet people agree it can be used to create good programs, so beauty is pretty much irrelevant to people who care about functionality first.

    My PHP code is as well structured and readable as anyone’s C++ or Java or Python or what have you.

  50. Paul Barrett
    Posted February 11, 2011 at 6:51 pm | Permalink

    I’ve been learning how to write javascript properly, and even without jQuery etc it is amazing how good it actually is. It’s definitely helping me grow as a programmer, because of the use of closures, but I know you get those in other languages also so I wouldn’t say you have to learn it to learn anything particular.

    Yes, it is easy to write crap javascript, and it is also easy to write crap PHP. Then again some of the crappiest code I have ever seen was in C, C++ and Java. There was a C++ program that had memory leaks, but was so badly written we couldn’t fix it and we just rewrote from scratch and had no memory leaks and beautiful easily maintainable code.

    If nothing else, doing Javascript or PHP as a first language is actually a great way to teach someone to write good code, because the languages don’t force you to, you have to *want* to.

  51. Tingleylake
    Posted February 11, 2011 at 7:23 pm | Permalink

    How about APL? Do a whole web site in one indecipherable line. Even better than Perl.

  52. Posted February 11, 2011 at 9:48 pm | Permalink

    I don’t see JavaScript at all there, should I say that with it, you can develop very easy and fast web applications, extensions for FireFox and Chrome ?

  53. Shimshai
    Posted February 12, 2011 at 12:28 am | Permalink

    DB Programming = OpenEdge from Progress.

  54. guest
    Posted February 12, 2011 at 11:22 am | Permalink

    My pick for this year :
    More Java stuff(Android for Mobile, Scala (and Lift) for the web),
    More ActionScript and JavaScript (just cause they both rock)

  55. MS
    Posted February 12, 2011 at 9:28 pm | Permalink

    Hello friends, I am new to programing. I have learnt C language and learning C++ & java now.
    Please suggest me which language will be best for me to learn and are reqired to make a career.

    PHP,JAVA,python,ruby or asp.net/c#.net?
    I am not able to decide.
    Please help me.

  56. Source Compiler
    Posted February 13, 2011 at 11:38 am | Permalink

    thats right ;)

  57. Arraymac
    Posted February 13, 2011 at 6:32 pm | Permalink

    Perl is the write only language. APL does everything above board.

  58. Asdasd
    Posted February 14, 2011 at 4:27 am | Permalink

    nice option will be there

  59. Alex Finn
    Posted February 14, 2011 at 8:13 am | Permalink

    Not sure why Ruby is considered to be a better language to learn for web developer then python. Just take a look at trends and you’ll see the reality: http://www.google.com/trends?q=django,+ruby+on+rails&ctab=0&geo=all&date=all&sort=0

  60. mehar
    Posted February 14, 2011 at 9:06 am | Permalink

    People always under estimate the power of C#. Have you look into C# 4.0?

  61. Jeffery
    Posted February 15, 2011 at 1:49 am | Permalink

    Try some of the old languages as 4TRAN is still used and is increasing same with cobolt, Progess, 4glp (mainframe), they have been turned into dotnet app (easy to download to learn). Learn technique, not a language. As for PHP, ASP, RoR they all have good and bad points and I prefer PHP.

  62. Sripathipai85
    Posted February 15, 2011 at 3:56 am | Permalink

    It’s sad that there is no mention of javascript. as more n more things are going to web js will play a dominant role

  63. Anonymous
    Posted February 15, 2011 at 8:17 am | Permalink

    Want to work on Linux and need a language to make chores easier -> perl?

  64. Zvika Dror
    Posted February 15, 2011 at 8:56 am | Permalink

    Wonderful post.
    It engaged conversation and probably triggered developers and enthusiasts to check what others are using for any sake – not just commercial.

    PHP is indeed missing from this chart for being practical, extendable, useful and community oriented.
    I do not know any other scripting language with so many frameworks (big and small), forums, blogs, online reference comments and examples, and most important developers from all levels and server deployments.

  65. Zvika
    Posted February 15, 2011 at 9:00 am | Permalink

    PHP for business (and lots of it), Python when possible.
    The English analogy is hilarious (and true).
    Thanks Marcus

  66. Posted February 15, 2011 at 6:20 pm | Permalink

    Amusing to see how wrong one could be… Lua is a programming language, for sure, and one of the bests in its category.

  67. MII
    Posted February 28, 2011 at 5:31 pm | Permalink

    am in interested in software development ans web applications please can you give me a tip or steps i need to develop the skills. am currently studying computer engineering please i will glad to receive your advice.

  68. SteveDBS
    Posted March 8, 2011 at 5:55 pm | Permalink

    C-Net 0.5 Codename : “WinChester”

  69. SteveDBS Twitter
    Posted March 8, 2011 at 6:03 pm | Permalink
  70. Steve
    Posted March 24, 2011 at 4:43 pm | Permalink

    Languages are like guns – everyone likes the one that kills what they are hunting. PHP is widely used, but not a good entry option. Javascript is similar to Java which is similar to C# which is similar to C-whatever. Everyone needs a solid compiled language and a solid interpreted language. after that , use whatever language solves the problem.

  71. Posted March 24, 2011 at 5:22 pm | Permalink

    Thanks for the great post, Peter!

    For mobile development, I would add C# since it can be used for iOS (monotouch), Android (monodroid), and also for windows phone 7. It is one programming language supported in three different mobile platforms.

    Although Microsoft supports only its own platform, the open source project Mono supports C# development in iOS, Android, Linux and MacOS.

  72. Posted March 25, 2011 at 9:25 am | Permalink

    Good tip, Rocha. I didn’t know C# can also be used on Android and iOS. Do you have any idea how feasible it is to use the same code across all devices?

  73. Posted April 30, 2011 at 10:22 am | Permalink

    Could you please post the joke version of this (funni-fied?)

  74. Jens
    Posted May 1, 2011 at 12:53 am | Permalink

    It’s in a proof-of-concept stage. Unusable for anything.

  75. Anonymous
    Posted May 2, 2011 at 5:43 pm | Permalink

    As for PHP, ASP, RoR they all accept acceptable and bad credibility and I adopt C,C++.

    toshiba coupon codes

10 Trackbacks

  • Feedback or questions?

    Due to excessive (and I do mean excessive!) spam, comments and the feedback forms have been disabled. I'm very sorry for the inconvenience, but you can still contact me through Facebook and Twitter.