<div><meta charset="utf-8"><div>Start with C (NOT C++) or Python (or Ruby). When you can comfortably program book exercises in one, start the other.</div></div><div><br></div><div>While you're learning the second language, start practicing refactoring and TDD. Both are skills to help keep programs small and nimble.</div>
<div><br></div><div>Learn functional programming next! You can do this while your programs are still small, and it will have a huge impact on how you think.</div><div><br></div><div>Finally, learn object oriented programming. This is really just a way to organize your programs. Learn it when your programs start to grow in size.</div>
<div><br></div><div>Why Python? It is more readable to novices than just about any other language. It supports syntactic niceties like generators and list comprehensions. It has native support for associative arrays.</div>
<div><br></div><div>Why C? It is a very simple language. It will make you understand pointers, and pointers are important. It is the lingua-franca of programming, and will remain so for many years to come. (Actually, it will never be supplanted, but it will be joined by Javascript for web programming.)</div>
<div><br></div><div>By the way, you can do functional and object-oriented programming in both C and Python, though another language might be nicer. Since C doesn't have closures or function literals, it is a bit clumsy for learning functional programming.</div>
<div><br></div><div><br></div><div>Chris</div><div><div><br></div></div>