What Programming Language to Learn (Next)

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!

85 thoughts on “What Programming Language to Learn (Next)”

  1. 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).

  2. 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.

  3. 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…)

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

  5. 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.

  6. 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.

  7. 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)

  8. 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…

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

  10. 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?

  11. >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.

  12. 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)

  13. 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?

  14. 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. :)

  15. 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…

  16. 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.

  17. 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.

  18. 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)

  19. 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.

  20. 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.

  21. 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

  22. 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.

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

  24. 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.

  25. 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.

  26. 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.

  27. 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?

  28. Pingback: ???????? | ???

Comments are closed.