Hello all! I'm learning to program at home. I can't imagine a better language than Python for this. The ideal situation, for me, would be to study two languages at the same time. Probably sounds crazy, but it works out better for me. Being a newbie, I find almost all languages fascinating. C, D, Objective-C, Ocaml, C++, Lisp, how is a non-tech to choose? Does any single language do a better job in Python's weaker areas? Would anyone care to suggest one to supplement Python. That is, if you could only use Python and one other language, which would it be? Thank you for your time and help.
Depends on what you want to get out of the second language. (Disclosure: I only use Python, C, and FORTRAN on a regular basis. Any of my comments about other languages should be liberally salted.)
For use *with* Python, C could be helpful. I end up writing a little bit of C or C++ every once in a while to speed up my calculations or to use some library written in C or C++.
If you do numeric calculations, learning just enough FORTRAN to do loops and math can be quite useful. I find that F2PY makes writing FORTRAN subroutines for numerical calculations over Numeric arrays much easier than C.
If you develop on a Mac, some Objective-C could come in handy. I find that it's object model and dynamism are quite close to Python's. The lessons you learn in each should reinforce the other's. PyObjC makes mixing the two languages dead easy and more convenient than indoor plumbing. However, almost all Objective-C texts require knowledge of C (which makes sense, since Objective-C is a true superset of C, unlike C++).
For didactic purposes, I suggest picking something distinctly *less* like C/Java/Python. Learn something that's going to expand the way you think about programming. And when you learn a new paradigm, implement it in Python and share it with the rest of us. :-) For example, Phillip J. Eby took the idea of "generic functions" from the Common Lisp Object System and implemented it for us[1]. (BTW, thank you, Phillip.)
Common Lisp might be a good one to learn. It's even more "multi-paradigm" than Python. You could very easily learn more approaches to programming through Common Lisp than three other languages. This book[2] looks promising.
Summary recommendation: Learn Python and a language that complements it *pedagogically*. When you are fluent in Python and encounter a problem where you want to, for example, use a library written in C, then learn some C.
[1] http://dirtsimple.org/2004/11/generic-functions-have-landed.html
[2] http://www.gigamonkeys.com/book/
-- Robert Kern [EMAIL PROTECTED]
"In the fields of hell where the grass grows high Are the graves of dreams allowed to die." -- Richard Harter -- http://mail.python.org/mailman/listinfo/python-list