Skip to content
11 April 32010 / Robin Wellner

A new language to learn

My father asked the other day: “What programming languages do you know?” I replied: “Well BASIC, but that barely counts, Python, Lua and that’s about it.”

Then I realized, I need to learn more programming languages. So, I’m listing some. If you happen to be thinking about learning a new language, this one might help you decide. If you happen to have other suggestions, I’d love to hear from you.

C/C++

Why would I?
C and C++ are everywhere. Learning C or C++ (or both) will be pretty useful for diving in existing projects written in one of those languages. Note I actually do know some C/C++, but was a short encounter, and it has been a while. I can recognize C/C++ and perhaps spot some of the more obvious bugs, but that’s it.
Why wouldn’t I?
Low-level, complicated, static. I have already learned some C and C++, and that was enough to determine that it is nothing for me. I just can’t go through with it. Maybe I should give it another shot, though.
Random comment:
Why? A random comment? I don’t have one right now.

Ruby

Why would I?
It’s high-level, compact, powerful, beautiful, and the favourite language of GitHub’s team. After Python and Lua, Ruby might be the next logical step.
Why wouldn’t I?
The community of Ruby hackers is too sect-like for my taste. Even its home page reads like a fan site.
Random comment:
The syntax is rather odd: it looks like Perl made pretty.

Lisp/Scheme/Erlang/Haskell

Why would I?
While I know the four languages are not interchangeable, they are all functional languages, which is something I have only had limited (though pleasant) experience with. The thought of learning a purely functional language appeals to me. Both Python and Lua have some functional aspects, but there is no focus on it in those two languages.
Functional languages are strongly connected to Artificial Intelligence, which I hope to study after this summer.
Why wouldn’t I?
It might not be very practical to learn a language like those for at this point.
Random comment:
Car. Cdr.

Perl

Why would I?
The duct tape of the internet. Need I say more?
Why wouldn’t I?
In Perl it is easy to write ugly, complex, hairy, unreadable code. Writing a small script is not a problem, but writing a decent application in Perl is pretty much suicide.
Random comment:
The use of sigils in Perl seems like a throwback to BASIC.

Forth

Why would I?
A stack-based language like Forth is certainly interesting, especially for programming puzzles.
Why wouldn’t I?
Again, what have I learned after learning Forth? A puzzle. How will that be useful in the Real World of Programming?
Random comment:
DUP *

BrainFuck

Why would I?
BrainFuck’s minimalism combined with its power (it is still Turing-complete, despite featuring only 8 commands) makes it very interesting to study. I know how BF works, and have programmed in it before, but never anything more than ±50 characters long.
Why wouldn’t I?
The reason why my longest BF program is less than 50 characters: it’s hell to program in. Just an “if-then-else” construct is large and complex, just imagine coding something non-trivial in it!
Random comment:
>+++++++++[<++++++++>-]<.>+++++++<++++>-]<+.+++
++++..+++.>>>++++++++[<++++>-]<.>>>++++++++++<+
++++++++>-]<---.<<<<.+++.------.--------.>>+.

PHP

Why would I?
Often used for Web development. I can’t think of another reason.
Why wouldn’t I?
Too many too list here.
Random comment:
Where do I start? PHP is one large “random comment”.

Java

No. Just… no.

Advertisements

5 Comments

Leave a Comment
  1. bunzen / Apr 11 2010 18:45

    Then perhaps Ocaml? The pragmatic Haskell, with at least one foot in the real world 🙂

    Functional, but not pure like Haskell, more like LISP/Scheme/Erlang. Staticly typed, but with powerfull type inference. High performance and one of the main influences to F# makes it worth while.

    • Robin Wellner / Apr 11 2010 19:59

      Ocaml looks indeed rather similar to Haskell, and probably deserves as much attention as the other functional languages.

      Performance is not an important consideration to me. 😉

  2. John C / Apr 11 2010 20:39

    C exposes a lot of low-level functionality like pointers and memory management which are important concepts to understand if you want to be a better programmer. Too many programmers coming into the work place these days that don’t have a clue about them.

    Erlang is pretty cool. It helps if you’ve tried Prolog before, but it’s not essential. It has a very elegant handling of concurrency and fault tolerance, and it’ll encourage a different way of thinking about problems compared to Python and Lua.

  3. jneira / Apr 12 2010 14:39

    My option’d be Clojure, a lisp build on top of jvm and functional but not too much pure. But maybe’d be the next step after ruby (many rubyist meets Clojure)

  4. Adam Kennedy / Apr 13 2010 8:17

    Without a doubt Erlang.

    Of course, you’ll probably never ever actually USE it for anything. But that’s not the point.

    The philosophies on fault-tolerance at all costs and parallelism are the really interesting bits. The functional stuff is almost an afterthought.

    I’ve done a couple of Erlang conference tutorials and done some trivial things with it, but ever since then I find myself applying bastardised versions of it’s more nifty fault-tolerance principles in the code I write in my “main” languages.

    Well worth the effort to explore.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: