"It doesn't matter what we pick at first," the myth goes, "because we can rewrite later."
We need to pick a programming language for Project Butterfly. Much like spoken languages, programming languages bring along the baggage of an entire ecosystem -- a culture, a thought process, a workflow, a toolset, and a community. The language lends itself to a set of acronyms and a technical language for communicating with others working with the same tools. Programming languages are tribal. Someone's linguistics anthopology thesis hides deep in the monthly TIOBE index.
What we pick now is we will stick with for this project -- and likely the next few projects afterward. Once the infrastructure exists to support an architecture that molds to a language's wants and needs, then tends to stay that way. This project joins a tribe and we need to choose that tribe very carefully.
We have the current running known favorites:
- Ruby on Rails
And then the up and comer dark horses which may or may not blossom in the next few years:
- Scala (with Akka and Play)
- Erlang (Erlang??)
The top programming languages in GitHub for 2013 is an interesting list for choosing a tool.
Almost all of these languages open up giant religious wars as developers, clutching their favorite tools, comes out of the woodwork. (Full disclosure: I, myself, prefer to Python to all these programming languages and will reach for that first.) All of the languages will work, and will scale up to the required scalability targets -- yes, even Ruby, it takes some work -- and will deliver a good experience to the user.
It's worth talking through the various options and choosing the best tool for this project that not only will achieve the objectives but will be sustainable for the next several years with growth.
I did dump some of the less popular JVM web languages like Groovy quickly -- they just don't have the opportunities, the support, and the popularity. We could technically write a website in Processing if need be or write old-fashioned CGI scripts in C. But for the same reason we don't write car navigation systems in Perl, we don't want to take the 5 years it will take to build this site if it was in C-based CGI scripts. (Although it would be damned fast.)
For some reason, Prolog is climbing up into the top-20. Really? Prolog?
Next up: talking through some popular languages.