Hi David, Thank you for your post. > Depends what you want to do, and how far you want to go. I want to program for myself, for clients, and contribute to FOSS projects, and take it all as far as I can. > For a first language, either Python or Ruby are fine. Python has stricter > syntax, but I suspect Ruby has stricter concepts (of OO, etc). I find Ruby > easier to read, but that's an opinion. Will keep this in mind. > If you want to get a good concept of programming in general, you should learn > (and develop at least some small apps in) a variety of languages -- and a > variety of very different languages. I agree . . . part of my research into the fundamentals has led me to decide to, as part of stage 2 - if you will - work my way through the (and I hope I don't sound like online bookstore spam with this) "Concepts, Techniques, and Models of Computer Programming" book . . . > So, at least one language low-level enough not to do garbage collection (C, > ASM, etc), at least one high-level "scripting" language (Ruby, Python, Perl, > JavaScript), at least one purely functional language (Haskell), and I'll > throw in LISP and either Erlang or Smalltalk. Ah, this resonates with some of my preliminary conclusions . . . > I'm not sure it matters what order you do this in -- pick whichever has the > best absolute beginner books. I think that for me personally, the best approach is to go from higher level to lower level, and yes, one of the reasons I have been torn between Python and Ruby was that Python has (from what I have read) great beginner books, yet Ruby does as well . . . > I would suggest a tight feedback loop for > learning, though -- look for interactive interpreter shells (Python, IRB), > and avoid compilers (C, C++, Java). Will do. > If you don't have that kind of attention span, or if you're looking to learn > what it takes to get stuff done now, that depends very much on what you want > to do. For example, if you're planning to do game development, you're > probably going to have to know C++, and definitely at least C. If you're just > looking to automate some high-level tasks on Unix, learn Bash. And so on. I hear you, I am mostly interested in web applications, yet also want to explore desktop applications for Mac OS X . . . and the more I read about Lisp, the more interesting it becomes . . . Cheers, Maurice