Ruby, and Rails was so 2005, at least for some :)
People are on the look out for the next big thing, and the alphadevs are all sniffing around the Functional. Scala, Haskell, OCaml, Erlang, ML, F#, Fortree, Lisp, Clojure, it keeps on going.
Is one of this crowd going to make a break for it?
Stuart Halloway has the knack of being ahead of the curve. He has been getting into Clojure, so much so that he is writing / porting a lot of work to it.
Bruce Tate likes it too, saying:
Functional programming that’s optimized for concurrency like Erlang, fast and type safe like ML, allows persistent data structures like OO, but with immutability.
For more, Stu shared some talks given by the Clojure creator Rich Hickey.
Stu has also been thinking about the next thing in the abstract too, as has Mr Polyglot Ola Bini.
Ola does a good job at splitting up some ideas:
- Better implementation techniques. V8 is an example of this, and so is Hotspot. V8 employs new techniques to drive innovation further, while Hotspot’s engineers continuously adds both old and new techniques to their tool box.
- DSLs. The focus by some people on domain specific languages seem to be part of the larger focus on languages as an important tool.
- Functional semantics. Erik Meijers keynote was the largest push in this direction, although many languages keep adding features that make it easier to work in a functional style. Clojure is one of the new languages that come from this point, and so is Scala. The focus on concurrency generally lead people to the conclusion that a more functional style is necessary. From the concurrency aspect we get the recent focus on Erlang. Fortress also seems to be mostly in this category.
- Static typing. Scala and Haskell are probably the most representative of this approach, in trying to stretch static typing as far as possible to improve both the programmer experience, semantics and performance.
It feels like we are very much living in the land of theory these days. It is easy for us to play though. Many of the languages are on the JVM, so if you are a Java chap who doesn’t fancy the language quite so much these days, you can still play relatively nice.
The theorists wax about how we need to get back to proofs as the only way to scale in two ways: maintainability of a large code base, and for scalable performance (make life easy for MapReduce).
In my gut, I get it. Part of me wants to spend a bunch of time playing with all of these languages.
However, the other side of the brain is cautious. I used to use a little Perl Web framework that I wrote back in the day. I would tweak it for my needs, and knew every line of code. As other developers joined the company, they would extend it for our general desires too. If I had never jumped over to Java (and the many frameworks) and then even Rails, would I REALLY not be more productive?
There has to be a real reason to jump onto something else. I then take Ajax into consideration, and the fact that I spend more and more time thinking about my JavaScript architecture for an application. The balance between server side code and client side ebbs and flows, and feels like an art to get right. Too heavy on the client, and then the server is just a dumb store that doesn’t even do secure validation. If you go the other way, and the server is doing way more than it needs too.
JavaScript is here to stay (at least for a good while). It has closures. With 3.1 and then really Harmony, it is going to get even nicer. But, even today, I actually quite like it, mainly thanks to the libraries that have made working with the DOM and browsers bearable.
Maybe server-side JavaScript is the answer, so you can stay in one world back to front (well, and of course HTML, and SQL, and …). Jaxer is doing a good job there. I am very closely watching to see if the community goes for it.
Web scale could cause a few changes, and Comet / messaging (one reason why Erlang is doing quite well), but even there you can get a LONG way with current technology, especially as they get their act together (e.g. Servlet spec update to codify the great work in Jetty).
Is there going to be a killer app out there in the near term for one of these languages? Will a Rails show up for Clojure? Regardless, I am going to enjoy watching Stu write and talk about it, as I always learn something from him :)










