[Tutor] What language should I learn after Python?

Alan Gauld alan.gauld at btinternet.com
Wed Oct 7 02:52:33 CEST 2009

"Mark Young" <marky1991 at gmail.com> wrote

> I have no real need to learn anything for a job, it's just a hobby right
> now. I mostly just want "a programming language that has a different
> philosophy or approach

In that case consider Lisp (probably via Scheme) or SmallTalk.
Both are apparemtly different to Python but once you get under
the covers you wuill see where a lot of the thought behind Python
originated. And there are some very good free books for both.

Given a choice I'd  recommend Scheme (I'm actually going through
a Scheme course myself just now so maybe I'm biased!). One of
the best books from a widening horizons perspective is Hiow to
Design Programs (HTDP) and then try the slighlty more academic
Structure and Interpretation of Computer Programs(SICP). Both
are paper books that are also on the web.

If they prove too heavy then try and find a library copy of the Little
Lisper (or nowadays the Little Schemer). This short book takes a very
unusual approach to teaching program but has a lot in common
with HTDP in teaching a "formula" for writing well designed functons.

> When I tried to learn C++, I just got extremely confused, I didn't even
> understand the basic "Hello World" script. I may have given up too 
> quickly;
> maybe I should try again, or maybe I'll try C.

I'd definitely go for C before C++. For one thing you can do a lot in
Linux and Python without any C++ and for another most of the complexity
in C++ stems from the fact it is a very near superset of C and bolting OOP
onto C leads to some wierd things happening!

> supposedly make you a better programmer or something. I looked at Lisp, 
> but
> I wasn't sure which one to use, Scheme or Common Lisp. I think I heard 
> the
> same about Haskell, but I'm not sure if I'm remembering correctly.

Haskell is another interesting option but p[robably too far from mainstream
to be worthwhile just yet. THe principles of functional programming can be
learned just as well using Lisp. And Lisp crops up a lot more often in real 
(in Emacs for one thing!)

> things will be different in any language, and if I want to learn 
> different
> methods and gain new abilities, I'll just have suck it up and start 
> reading.

Finally somebody already suggested SQL and thats a must do at some stage.
Also if you want to do anything on the Web you will need a minimal 
knowledge and it too has some interesting concepts behind it once you get
past doing cut n paste mash ups. (eg protocol based OOP). You can get
the basics of JavaScript by comparing it with Python in my tutorial...

Pick one and have fun. If its not fun don't bust a gut, try another.


Alan Gauld
Author of the Learn to Program web site

More information about the Tutor mailing list