What to do after Python?

Johann Hibschman johann at physics.berkeley.edu
Sun Feb 18 15:03:48 EST 2001


Jim Eaton writes:

> Thank you very much for your advice.  I was also wondering if learning Perl
> sometime later would be needed.  I've heard people talk of Python as the
> natural successor to Perl and I'd like to know what people feel about this.

Heh.  I didn't even get a chance to get started.

Clearly, this depends on what you want to do with your new-found
programming power.  If you're interested in web-related work, then
Perl would be a good thing to know, simply because it's very common.
I don't do web-stuff, I do numerics, so I've never been able to make
myself learn it.  (Well, I know enough to use it as a "better awk",
but that's about it.)

If you want to become a better general programmer, Perl will not help
you at all, IMHO.  I don't really think that Java would help, either,
since I'm not sure what it would teach you.

C or C++ would at least help you understand how to manage your own
memory and perhaps give you a better sense of what goes on in the guts
of the machine.  Out of those, I'd recommend learning the basics of C
first, because I find C++ very confusing.  Now, that being said, my
main production code is a Python/SWIG/C++ system, so I like some parts
of C++, but it's an awful mess to learn.

This may be heresy in a c.l.python, but I really wish I'd written the
whole thing in Common Lisp to start with.  Too late now, but my next
project will be entirely CL.  I'm tired of the wall between the
scripting language and the speed language; CL can be both (I get
numeric performance as good as Fortran in Common Lisp using the free
CMUCL compiler), so I'd just use that.

(Python is great for things that I think I will never need that
to-the-metal performance in.  If I can stay in pure Python, I use
that.  I'll just never try to maintain a dual Python/C++ project
again.  Arg.)

One warning about this lisps; you might want to be careful with them.
I never like advocating them.  I absolutely *hated* Scheme when I
first had to deal with it in an AI class, but I've grown fonder of it
with time.  I had to do far too many things in a completely backwards
way; if you're just trying to learn new ways to do things, it's great,
but if you're trying to implement alpha-beta pruning in your checkers
game for the assignment due the next day, you'll come to hate it.
Common Lisp is a lot more practical.

Other languages.  Hm.  I've heard prolog is cool, but I've done all of
my constraint-based programming in lisp.  I looked at Haskel, but it
seemed over-pure.  OCaML is nice, but I never really got into it.
Sather is a great language, but it's dying.  It's like Eiffel, in that
it teaches good OO design, but it has really cool Icon-like iterators
(I would so love it if python got those some how), and it's
contravariant rather than covariant, so it doesn't have to do nearly
as many type-checks and is thereby much faster.

That's about it for my experience.  Sorry for the brain dump.  I just
started out by saying that learning Perl won't teach you anything that
you can't get from Python, so don't bother with it, unless you just
want to make yourself more marketable.  And I stand by that statement.

--Johann

-- 
Johann Hibschman                           johann at physics.berkeley.edu



More information about the Python-list mailing list