I go to school at George Mason University for computational social sciences (CSS). GMU produces a library called MASON. (The ancroynm, M.A.S.O.N., feels like a retronym. Obstensibly, it stands for Multi-Agent Simulator of Neighbors, but even the manuals seem to think it is a bit silly. I find it frustrating because it’s not exactly search engine friendly.) MASON is a toolkit for agent-based modeling built in Java.
The JVM is awesome; Java, the language, is beyond frustrating. I think it’s too noisy and constraining. (Although, I will admit that the constraining aspect is a feature in many cases.) For agent-based modeling, it’s particularly frustrating because such programming is exploratory and Java does not favor exploratory programming. There is a reason Java developers love UML – you can’t sketch code in Java like you can in LISP or Ruby…or Scala.
Scala is a very consise and expressive language that compiles to the JVM. To me, it feels like Ruby except it is faster and easier to refactor. I tried porting SugarScape to Scala to show off why it would be a better language for ABM, but it required that I create too many things that MASON already does, so I couldn’t finish. Now, I am porting MASON examples to Scala, learning MASON, and trying to figure out how to write a thin wrapper in Scala. Eventually, I’ll port SugarScape.
I favor readability and expressiveness, whereas MASON favors speed; theres a bit of an impedence mismatch going on here…