It seems like my never ending journey through functional programming languages has taken yet another turn.
Together with a colleague I'm going to start working on a 'Street Fighter'-ish game. We've been both very fond of this (and play it a lot) and decided to make one ourselves.
The first thing programmers will debate is what programming language to use.
Ofcourse my suggestion was Erlang (since that's what I'm currently using and loving), but we both quickly realized that Erlang might not be the best choice for this. Since we're probably going to use 3D, we need all the speed we can get.
Both of us are big fans of functional programming and are toying around with various languages (Lisp, Haskell, Erlang, Scheme...) we quickly agreed on doing this in a functional language.
So what do we need? A fast language with good libraries. Ofcourse, Haskell came to mind. It fits both those requirements. Scheme perhaps? Nah, too slow for this kind of thing. Another candidate is Scala. It's also fast, it's multi-paradigm, and last but not least, it has the java libs which are positively huge. Clojure maybe? It's a lisp-1, we both have experience with Lisp so that could be cool. It also has the java libs. It's dynamicly typed, which is nice but could have an impact on performance. (I really should get benchmarks for this).
To make a short story even shorter: we decided to use Scala.
The decision wasn't hard to take. Scala has all the features we need, it has the speed needed for this kind of thing and all the libraries we'd ever want and then some...
So there you have it. I'm going to learn yet another language.
"Learn a new language every year!", is what a lot of big names say. Well, every 2 months is more like what I'm doing. I feel like it's time to settle down. I want to pick 1 good language that I like and grok. Not have a dozen languages I barely know. This project will be good experience, in whatever language it is. It's probably going to be bigger than anything I've ever written, including the stuff I code for work. That's probably the most gaping hole in my short carreer as a programmer. I've never worked on a large project. I hope this will be a nice introduction.