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