Skip navigation

I have been, for about the past month, exploring some different languages, looking for one that I may want to invest time into learning. I thought that I’d do a comparison of the different languages I’ve looked at and what I think of them so far.

Haskell

I’ve messed with Haskell before, and I do enjoy it quite a bit. It’s a really cutting edge language, and there are so many neat things that you can do with it, that it would take too long to mention them all here. It’s main features are its functional purity, and its laziness. Combined, these can do some really amazing things, in very little code.

The problem with it is, of course, its abstractness. Wrapping your head around its higher order types takes lots of work and lots of time. I don’t have a particularly good understanding of it myself, but I do plan on messing with it some more in the future.

Lisp/Scheme

I really want to learn lisp. It is the quintessential meta-programming language, and it can more or less do anything. The trouble I’m having with it is getting started. I like the looks of Scheme more than  Common Lisp, and I plan to pick up The Little Schemer when I find it in a book store. I’d also probably want to use Clojure, because the Java libraries are great.

Ocaml

Ocaml is neat for a couple of reasons. It’s absurdly fast, faster than C++ in lots of cases, and it’s functional. It doesn’t force you into Haskell’s level of purity which is good, because you can get lots of stuff done without resorting to Monads. I’ve not invested a lot of time with it yet.

Scala

Scala is kind of neat. It runs on the JVM and attempts to blend both functional and object oriented programming. Overall it seems to achieve its goals, but the syntax just seems extremely complicated to me. It has everything, and the syntax reflects that.

Smalltalk

This one is a bit different than all of my previous explorations, because it’s OO rather than functional. Smalltalk is probably the best object oriented language out there. Everything is an object, there is no other syntax in the language besides that of a message send, and everything is accomplished like that. Even if-statements are just method calls to boolean objects.

It’s really pretty amazing, and there are some really nice libraries out there for it. The one that most caught my eye is Seaside though. The day I spent messing with Seaside was probably the most exciting experience I’ve ever had with a web platform. The only issue I have with it is that its URLs are really ugly.

The only big issue I have with Smalltalk is the environment. As neat as the image based approach is, the environments for it are kind of awkward. Squeak is neat, but it feels like a toy. It’s amazing to be surrounded by the very objects you’re working with and creating, but for the most part it’s annoying, and ugly.

For now I’m sticking with FScript for OS X because it’s more or less Smalltalk, is integrated with the OS, and is able to interact with pretty much any running program.

All of these languages are pretty neat, and I wish that I had more time to explore them with. In the meantime though I think I’ll work with Smalltalk and Scheme.

Addendum: I’m also looking at Erlang, but I’ve gotten even less far into it than I have with any of the above.

4 Comments

  1. If you turn on session cookies, the only ugly part of a Seaside URL is the ?k=123456 key that is added. That’s a small price to pay for having callbacks and all of your state managed automatically… no? Most online applications seem to have at least that much in the URL.

    There are ways to get rid of it in some cases, of course, but nobody has done a really good REST application pattern for Seaside yet. Wouldn’t be hard though… just a matter of imagining a good API with a Smalltalk feel to it.

    The look and feel of Smalltalk environments is a common complaint; this is a lame response, of course, but you *do* get used to it pretty quickly. 🙂 Scheme definitely requires a different way of thinking about problems.

  2. You might also be interested in F#. It is the Ocaml version of the Clojure/Lisp relationship. It works well with Mono on OSX.

    pharo smalltalk is a native look and feel smalltalk for OSX (still in beta but seems to be coming along nicely) Also WxSqueak gives squeak a native look and feel.

  3. Thanks for the suggestions. I haven’t looked into F# because I’m not on a Windows environment, and it hadn’t really even crossed my mind. I’ll make sure to check it out.

    I had also figured that there was some way of cleaning up Seaside’s URLs, but really, I just hadn’t looked. I’ll look into session cookies.

  4. Hello from Russia!
    Can I quote a post in your blog with the link to you?


Leave a comment