What to do after Python?

D-Man dsh8290 at rit.edu
Tue Feb 20 23:05:06 EST 2001


On Sun, Feb 18, 2001 at 08:00:11AM +0000, Jim Eaton wrote:
| I am learning Python as a first language, and I have been wondering what
| is a good language to learn after Python?  I'm thinking of either going
| into C or Java but I'm not sure which one because I've heard many
| arguments either way.  Will going into Java first be any detriment to
| learning C later?  Any suggestions would be greatly appreciated.

How do you use python?  As an OO language (class) or a procedural
language (def without class)?  C is not naturally OO, Java forces
everything to be inside a class.  Java will ease you into curly
braces, semicolons, and static type-checking while still maintaining
automatic memory management.  It is possible to write OO code in C
(see GTK+/GNOME for an example), but it takes a lot more work.  C is
also less forgiving allowing you to stomp on memory (and leak it)
however it pleases you.  Another thing to consider, Java will print a
traceback if an exception goes uncaught.  C will simply dump a core
file if you do something _utterly_ bad (SEGV, Bus Error,
Divide-by-zero).  If you simply overrun your array bounds, C will
SEGV/Bus Error only if you happen to be lucky.  More likely than not,
it will happily overwrite whatever happened to be there.

C will be more useful to you if you are interested in systems level
programming.  Both C and Java can be used to extend python (CPython
and Jython respectively).  Java is rather similar to C++ except it has
garbage collection, array bounds checking, automatic pointer
dereferencing, and no standalone functions (like C).  If you want to
learn C++, I would recommend learning Java first since it is more
forgiving, and informative when you do something bad (at runtime).

Other people have mentioned other languages that are interesting and
useful to better understand language design, etc, but I haven't seen
used in industry much.

If you want a pure OO language with a different approach to access
modifiers and generics, try Eiffel.  I think those are 2 things Eiffel
did very well (and C++/Java do very poorly, it is irrelevant in
Python).

HTH,
-D





More information about the Python-list mailing list