Learning Erlang
For a little while now, I’ve been thinking about learning a new programming language. So far, I’ve got a few languages under my belt. I work regularly with PHP and JavaScript nowadays, and I’m pretty big fan of Ruby. I started with Perl – although I don’t think I could program in it right now if my life depended on it. I learned Java in the past when I was going to college, but I haven’t had much reason to pick it up over the last few years. I taught myself C++ a few years ago because I wanted to try and make a game, and at the time C++ was the natural language for that.
There are a few technologies that I’m interested in that use languages that I’m already familiar with. I’d like to try making a mobile app for Android, which would probably require brushing off my Java skills. With the release of the 4.0 version of Rails, I’ve got a few site ideas that I’d like to take a go at. The game engine I started creating is sitting in a GitHub repository, waiting for me to pick it back up. I’ve got two ideas that will require quite a bit of JavaScript ( actually, one will be written in CoffeeScript ).
The thing is that all those projects are things that use languages that I’m already pretty comfortable with, or ones that I could get back up to speed pretty quickly. For a while now, I’ve had my eye on a number of languages that I’d like to learn: Haskell, Erlang, Go, Scala, Clojure, Lua, and Lisp. One of the things a few of these languages have in common is that they’re functional.
Some of these I’ve had my eye on longer than others. I’ve had my eye on Lisp for a few years now. Lua I’ve been looking at to use as a scripting language within my game engine. Haskell and Erlang both look pretty awesome, mostly because they’re nothing like any other language that I’ve used before. The others all have things that make them pretty attractive as well.
In the end, I decided to go with Erlang. There isn’t much reason behind the decision, I think it was kind of coin flip that just happened my head. I think one of the things that tipped the decision in Erlang’s direction was the fact that it was designed to be a extremely fault tolerant distributed system.
At work we’ve been talking about building an Enterprise Service Bus to help out with things like processing data, crawling, and messaging. There are a few pre-built systems out there – and we’ll probably go with one of those – but I figured that trying to build a simple ESB in Erlang would be a good way to learn the language.
I have no idea how well this will go. I know that trying to do this kind of project while learning a new language probably won’t go well. I do know that I tend to learn a new language best when I’ve got a project to use it on right away instead of just going through tutorials.
Anyways. I’ll keep you all updated.