Ask Lifehacker: Which Programming Language Should I Learn?

Dear Lifehacker,

I am a high school student currently in Year 9 who is wishing to learn a computer language. I've long had a fascination with computers and wish to increase my skills. I have tried AutoHotKey as suggested by Lifehacker and have found that very helpful, but I wish to learn a proper language. Could you please suggest a good language to learn?

Yours, Hacker In Training

Dear Hacker In Training,

There are lots of potential answers to this question. When a reader asked something similar back in 2008, we got votes for Visual Basic, C and Python. Our Programmer 101 guide to teaching yourself how to code makes the important point that which language you choose doesn't matter that much: the skills you acquire with one language can easily be transferred to another, and different languages suit different kinds of tasks.

If you're keen to develop code that can run on a wide variety of platforms, Python is a well-regarded choice. If you want a really straightforward way to get started, you could try out Microsoft's Small Basic. Working on an open source project will help you learn to interact with other coders -- a skill that's just as important as writing good code in the first place -- and TeachingOpenSource.org is a great resource to get you started in that direction.

If readers have any recommendations for programming languages or tools for beginners, share them in the comments.

Cheers Lifehacker


Comments

    How about Objective C or Cocoa? I learnt a little bit of that when I was helping someone put together a Mac application, and it was pretty easy to pick up, even for someone like me who totally sucks at maths.

    Having said that, programming languages, like any other language, requires constant usage. Once you've been out of practice for a bit, it's really hard to get back into it.

    Every language you learn makes the rest easier, what you really need is to jump in to anything and work your way up.

    I'll tell you what I did anyway as I found each step quite easy to take.

    I started with Flash Actionscript. Making simple games and slowly learning about Objects and Object Oriented code. Mostly just learning to make the computer do what I want it to.

    I then moved on to Java. U used a nice little (free) IDE called BlueJ designed to help with the learning process.
    Here I learned to make standalone programs for small tasks and spent some time learning about different data structures.

    After doing a few things in that I found the transition to C++ fairly straight forward - just learning to manage my own memory and really build everything from scratch.

    No part of the process was exceptionally head-screwing (apart from learning to understand C compiler error output) and I'm now a professional programmer working on multiplatform games :)

    Depends what your after.

    Do you want to learn modern programming techniques? The kind of skills that are transferable to most any application development? If so, C# is probably the way to go. Clean, easy, best IDE out there and free. You can focus on high level programming concepts without all the syntactical and platform baggage that comes along with something like Objective-C.

    I recommend finding a language where you can focus on high level programming concepts (eg. Object Orientated programming, and various design patterns) rather than something that will get you bogged down in low level technicalities. Those skills will be transferable to any language you end up in.

      I whole heartedly agree here.

      Once you learn any language the basic principles are the same across the board. Once you have learnt one thing well, anything can be learnt.

      Personally I think C# is a great place to start as it gives you all the niceties of working in a modern language with the same structures and requirements for working in things like C++.

      If you are confident enough to try it, the perfect place to start would be C++ because it is the BOMB. You can do incredibly complex things with it that you can't even approach in other languages, but on the flipside, it's hard to fix things if you break them and are a first timer.

      In all learn C# or C++ and if you want to specialize in Windows programs, try and learn WPF at the same time :) It's a cool thing to learn and you can do things people working with Windows Forms can only dream about :)

      +1 votes for C#. It's a great language to start with because it's relatively simple and yet syntactically extremely close to C++ and Java. You can also start at the foundations and build up, first using just the basic language features like loops and method calls, then graduating to use lambda expressions and LINQ.

    Learn Python and write a game!

    PyWeek number 11 starts in a week's time. A great excuse to have some fun learning something new :-)

    http://pyweek.org/11/

    Java is good for programming 101

    I found starting with a scripting language the easiest first step. No need for compiling or memory management and debugging is usually pretty painless. You can play around with most of the basic elements of programming such as variables, arrays, hashes, loops etc.

    I started with BASH in Linux and then moved to Perl. I've heard Python is also a pretty good one to get into.

    Python. Hands down. You can run the shell interactively to try things out. And it's clean, and gets things done quickly and easily. Which is why we teach it to our year 10 students.

    Whichever starting point you choose (I personally started with C and appreciate the intricacies of pointers and memory management that it taught me), always make sure you write code as if someone else is going to read it.
    The habits of writing clear and understandable code (good variable names, good commenting, logical separation of functions etc) are much more invaluable than if you chose Python or C or VB for your first language.
    You might not appreciate it when you are only year 9, but you will appreciate it on your first day in the job, and whether or not a team mate rages at your obfuscated code (or if you become that jaded rager in 2 years time ranting on the next intern writing spaghetti code)

    If you have any interest in hobby electronics, learning C will give you an extremely solid foundation that will allow you to quickly transition to any other language.

    Plus, messing around with microcontrollers results in much more impressive, and most importantly, physical creations. Your friends will think you're a genius rather than that weird dude at school who made a dodgy version of snake on his computer.

    PIC RISC Assembler!

    Or seriously: Python, C#/Java, or if you're going to do web applications Ruby/Rails.

    Considered JavaScript? The browser you're reading this page in is a programming environment (cue Firebug), and with Node.js you can take the same front-end skills to the server, run command-line scripts, inject dependencies etc etc, just like those grown-up languages already mentioned.

Join the discussion!