Woot! I'm at the seventh language of my seven language tour, and since I skipped one language from the book, I now have a choice to make, which language do I finish my little tour in? I've been noodling on and off as to what language that would be. Since I started this little tour way back when there have been 3 other languages on my radar that I'd be interested in checking out, and they are all fairly pragmatic languages:
Mirah: Apart a general curiosity about programming languages, one of the reasons I was drawn to this book was that I was looking for a language to 'complement' ruby in my day to day work. While I love Ruby, at times I am unsatisfied with its performance. There are tasks for which I would just like something faster. Mirah, a language created by JRuby creator Charles Nutter, is a statically typed JVM language with ruby inspired syntax, but no runtime library. It compiles down to JVM bytecode (like Java) and depends entirely on the JVM for its runtime library
CoffeeScript: Essentially a distillation of "Javascript: The Good Parts" created by Jeremy Ashkenas. I really like the little things it adds to the language (destructuring assignment, everything is an expression, string interpolation!, etc), and some of the JavaScript warts it covers (though I have also become much more comfortable in javascript since this last popped on my radar). I've had an opportunity to write a few scripts in CoffeeScript as well, and enjoyed the succinctness of the result.
Go: A relatively new statically typed, compiled, garbage collected language out of Google with some well known names behind it. A language that aims to be simple and fast, with strong support for concurrent programming and a well rounded standard library. It looks pretty interesting (in a very pragmatic sense) and the Go code I've seen looks clean and sensible. I am also intrigued by the idea of just statically linking everything into a single binary with no dependencies, seems like it would make deploying programs super easy.
drum-roll please...
And the winner is, Go! I'm drawn to this one because it is
- a) Statically typed and compiled (and I mostly work with dynamic, interpreted langs at the moment)
- b) Designed to be fast/efficient (both in compilation and program execution).
- c) Has an interesting concurrency model I'd like to explore (goroutines and channels)
Of the options above it probably has the most to teach me as well, and lives outside of a couple of ecosystems that I'm already somewhat familiar with (Java and JavaScript). All three of these languages look like promising options for my main side-project lang,but at the moment I'm probably most excited about looking at Go.
Plus they have a super cute mascot!