So for the past couple days I’ve been doing that whole ‘What language should I learn!?1!’ thing again :P. It actually stemmed from the fact I do have a couple of web projects I’ve been meaning to get started with but, well, haven’t really. I was mainly looking at Haskell and Node before, but maybe not so much anymore. Haskell is cool, it really is. It’s one of those languages I really want to love, but every time I try and get started with something like Snap or Yesod… I don’t know, it just seems too verbose? I’m able to wrap my head around the core language alright, but working with its various APIs just seems to be a bit cumbersome. Could just be my unfamiliarity with its ecosystem, though. Hopefully it’ll be something I’ll revisit sometime in the future, though. As for node, it certainly does have a lot going for it. In fact, it just recently surpassed Rails as the most watched project on GitHub. But it’s still… JavaScript, you know? Not as bad as some languages out there, but I’m still personally looking for something with a bit more novelty.
Some of the more interesting languages I happened to come across were D and Rust. D is basically C++ done right, from what I can tell. As c0de517e puts it, “It looks like C++ but it’s much simpler (it drops all C compatibility, the preprocessor, multiple inheritance, forward declarations and include files, non-virtual member functions and so on) and much more powerful (sane memory management, sane templates, first-class functions and closures, immutable structures, modules, threads, contracts, dynamically compiled code).” The main deal-breaker at the moment is really support and adoption, so most of the projects where D would fit I’ll probably still stick to C, but we’ll see how things work out :).
Next up is Rust. Unfortunately it’s not quite ready yet, and still very new, but definitely going to keep an eye on it. It fits in the same space as C and D do, for the most part, but even more interesting ^^.
However both of the above aren’t really suited for web development, so let’s move on. I looked at many different languages, including ones such as Erlang and Ocaml, but everything just seemed to be a bit too clunky for me, either in terms of the language itself or the frameworks available. I must say Opa does look quite cool. Again, in the end, the API and language just didn’t seem to mesh all that well with me, but a lot of its ideas really are pretty awesome, so check it out and maybe you’ll have better luck than me :P.
In the end.. I think I’m settling upon Clojure. I didn’t really so much ‘come across’ this language as I rediscovered it. I’ve known about it for quite awhile, back before I learned Rails and was learning various lisp and scheme dialects. The main reason I have kind of been avoiding it is its dependency on Java. I know the JVM and Java aren’t the same thing, but I’ve never really liked Java at all and it does tend to leak through in various places. However, as for the language itself- awesome. Awesome awesome awesome, including its philosophy on that VMs and platforms are the future. Rich simply chose the most viable one with the largest ecosystem at the time, and now it also has CLR and even JavaScript implementations.
Another cool idea this gave me was, well, learning exactly how to write language implementations. One of my (pretty long-term :P) goals I guess I’ve been keeping in the back of my head was to implement my own language at some point, but perhaps porting Clojure over to another VM might be a good task to tackle first. Its philosophy on platforms definitely fits moreso than pretty much any other language out there, and I think it’d probably be a good idea to implement an existing specification before tackling my own.
So yeah- expect some incoming clojure posts :D. Also- my framework of choice will likely be Noir.