Complementary language?

Robert Kern rkern at ucsd.edu
Sat Dec 25 22:48:23 EST 2004


HackingYodel wrote:
> 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
rkern at ucsd.edu

"In the fields of hell where the grass grows high
  Are the graves of dreams allowed to die."
   -- Richard Harter



More information about the Python-list mailing list