Re: What would be the best language to choose after programming Python for several years?



loxs wrote:
1. Something that will change my way of thinking in a better way.
2. I still want it to be "high level". For sure I'm not into C etc.
3. For sure I don't want something that overlaps with Python to a
great degree. I don't want Java and PHP as they mostly don't offer
anything not present in Python.
4. The language must be opensource and with good reputation in the
FOSS world.
5. The language must be practical in a sense that later I could find a
job with it. Though I'm not going to learn it with only this in mind.
Years ago I picked Python over Perl though the latter was still the
"de facto standard" and as far as I can see I have made a really wise
choice.

I guess most suitable for this are the "functional languages" - Lisp,
Erlang, Haskell. Or maybe not?
Even if they are, this is still too big pool to choose from. Of the
three I have come close to only Erlang, as I am an active CouchDB
user. Of course I never used it myself, but guessing from couchdb,
erlang has to be a great language.

So, what would you suggest? I would be most happy if some other Python
programmers who have been in a similar situation share their thoughts
on the topic.

I'll speak from my experience: Python was my favorite language for
several years until I picked up OCaml a couple years ago. Strong typing
with a flexible and expressive type system, functional at its core,
"practical" in the sense that it integrates well with the outside world
(it is not difficult to write well-behaved Unix citizens in it). It
provides two good thought-changers: functional programming (although my
FP looked a lot like Python functional-ish programming early on) and the
type system. Statically-typed functional programming practitioners
often operate under the maxim that illegal state should be
unrepresentable, and a type system of the form present in OCaml (or
others, such as Standard ML or Haskell) provides you with powerful tools
for describing data structures such that this goal can frequently be
achieved. And when it is, a entire class of errors frequently occurring
in Python code are eliminated as soon as the code passes the type checker.

Common Lisp is also a fun brain trip, expanding greatly on how you think
of abstractions. Its macros add to the data and functional/procedural
abstractions present in many languages the capacity to abstract code
structure. I haven't used Erlang, but its concurrent emphasis looks
quite interesting.

There are a few jobs here and there in OCaml and Common Lisp. Probably
also on Erlang, but I'm not sure where.

- Michael
.



Relevant Pages


Loading