Spotlight on: Quorum, the scientifically-simplified JVM language
The sheer number of JVM languages is impressive, with the platform now host to about 90 or so different dialects, according to Wikipedia. We have Java 7’s introduction of invokedynamic to thank for this, since it introduced first-class support for other languages on the Java Virtual Machine.
This easy access to the JVM has meant keeping track of new languages isn’t easy. Clojure, Groovy and Scala might have generated a strong community following, but some are often pet projects that don’t go much further.
One language that is missing from the above list is Quorum, which hit a 2.0 release this past June. The backstory to the project is particularly interesting. Quorum was founded by professor Andres Stefik, who had been part of the team working on SodBeans IDE, a NetBeans variation specifically tuned to help visually impaired and blind developers. The project was one of the winners of the Duke’s Choice Award in 2011.
While working on the project, Stefik and the team wondered if their experiences when designing an IDE for the blind were transferrable when creating a JVM languages. SodBeans required a tremendous amount of thought, in making it intuitive to a blind user, so could this stripped-down theory be applied to a language designed for novices?
The general purpose object-oriented language compiles to Java bytecode and designed from the outset to be easy to understand and beginners to pick up. The 2.0 release contains static-type checking, with a smattering of type interference and a plug-in system, making it extendable with C++ and Java.
But what makes a language easier for developers to learn? Being an academic at the University of Nevada, Stefik is dead set on using empirical methods, regularly conducting experiments with small sample groups and compiling regular analysis of new evidence from scientific literature. This is then regularly implemented and incorporated into the language. For example, in Quorum 1.7, the statement syntax was tuned more towards the design used in Ruby, as novices felt more comfortable with it.
This level of linguistic analysis differs hugely to any other JVM language out there, where the community’s feedback is used as the universal indicator. In an interview with DZone, Stefik explains more:
While it should be obvious to most people that programmers have different needs, work in different environments, and are trying to solve different problems, academics studying usability issues carefully are finding that some designs really do lead to more productivity over others under common circumstances.
Birthing a programming language isn't an easy process and this project will take years of data collection to really hone the language to be as easy to use as possible. With that said, when people actually use it, we overwhelmingly get positive feedback. I think most reasonable people recognize that there are tradeoffs in language design and that no design is perfect, including that of essentially all commercial programming languages.
Stefik adds that most of the evidence on Quorum’s design is accessible through publicly available source and that he welcomes others to join the process, by submitting their own data. They can even refute the team if they feel strongly enough that their analysis is off the mark. As well as having a limited web version where you can run code, Quorum also has a ‘Netflix-style’ ratings system for voting on the standard library.
The professor realises that getting the perfect Quorum design is a pipe dream that would take several decades, but is undeterred. He hopes that Quorum is at least useful for those learning domain-specific languages, in understanding the syntax and semantics.
“If they expand the language further, then all the better, as it gives our lab something new to test to see if it's helpful, while providing them a solid foundation of evidence for changes they probably don't want to think about anyway,” he added.
While the JVM language won’t be for everyone and won’t likely see a production-use, it’s an interesting experiment and new approach into creating a language. Why not give it a whirl on the Quorum site?
Image courtesy of Arabani