FAQ > Advice > I want to learn programming. Which language should I start with?

Search the FAQ for entries containing:

I'm about to give you some contrarian advice, but I really feel this would help you become a great programmer in the long term.  I think you should start with C.  Not Objective C.  Just C. 

Some may say that's a little too low level, but I say, you should really understand the nuances around memory management, architectural/platform variances, word sizes, structure alignment, type safety (or lack thereof), object orientation (or lack thereof), and modularization (or lack thereof).  Learning and working with C gives you the freedom to explore these issues and forces you into situations where you have to expend effort to deliberately design clean code.  There are no training wheels in C.  You will not be able to build a non-trivial, useful and maintainable program without becoming a careful programmer.

After C, move on to Java.  Spend a few years learning the ins and outs of Java. 

Then move onto Scala, Python, Clojure, or Ruby.

Last updated on May 28, 2012 by Vishal Rao