On Some Up and Coming Languages...

As a programming language tourist, I have tried out several other of the new, up and coming, programming languages.

Scala, to me, is the only real candidate to be a Java-killer.  It brings together all of the mathematical power of a functional programming language with the entire Java ecosystem and none of the deep seated Java neurosis.  It has what Java does not -- higher level functions, macro programming, data parallel functions -- with everything Java has available.  Being the choice of programming language for Twitter helps.  To get into Scala, I recommend taking a look at Play, a web framework built on the highly elegant Akka.  In experimentation, I was able to start building both a site and some RESTful interfaces with Play in about an hour.   I haven't had a chance to explore Akka's power yet.  

Go is a Ferrari in a garage during a snowstorm.  All power, no where to go.  Go's goroutines are an elegant implementation of coroutines but otherwise, I can't tell what problem it is trying to solve.  Clearly other people are working in Go but it's largely bindings to systems that already exist.  I enjoyed working with it and working through the tutorials but it is filling a niche already filled by Python.

Clojure is a simple neat implementation of LISP on the JVM.  I know plenty of people who believe LISP is the one true language and all others are but shadows.    One can get up and writing web applications with Compojure and it has a nice REPL for testing LISP Macros out before injecting them into the codebase.  Super nice for those who want the JVM power but none of the Java nonsense and want to go back to LISP programming.

Then there is my archnemesis, Erlang, a purely functional Prolog variant created by Ericsson Telecommunications to run in massively scaled WANs and continue to work after taking - quite literally - a direct nuclear hit.  Erlang would have nothing to speak for it except the Erlang/OTP, which provides a giant ring-based message-passing system with all the bells and whistles (and seriously all of them) out of the box.  So, you know, that's a thing.  Oh, and you can push empty Erlang servers out to hundreds of nodes and then, communicating with the elected leader, push out code and morph those servers hot into new and different forms.  Why do anything else when you have a functional programming language that will change its entire purpose without restarting?  It's ridiculously, absurdly, insanely powerful while being ridiculously, absurdly, insanely obtuse.  I have spent all sorts of time screwing around with Cowboy but now I'm screwing around with Nitrogen because why not.   I love it, I hate it, I have spent tons of time with Elixir.  

There's no escaping Erlang: it's the language in RabbitMQ, Riak, mJabberD, CouchBase, Chef 11...  

I have spent time with all of these languages to some degree.  The only real practical one to invest time in is Scala.  But I have to admit -- when given some time -- I love fighting with Erlang.