Guest Post: A review of up-and-coming languages Dart, Scala, and Ceylon (part 1 of 2 series)

Guest Author: Joe Ellegood

In a time when over half of all software development work (TIOBE) is being done on a few staid languages, is there enough room for improvement to justify more programming languages? Every year brings evolutionary improvements to existing languages that programmers know and love. That same year, however, a handful of new programming languages aim to spark a revolution with new features and syntax that older languages have only dreamed about. So are these new programming languages worth it? As a programmer, is it worth the time to learn this new set of building blocks, another tool for my “programming toolbox”? As a manager, will a new language help my applications build faster, run faster, or be more maintainable in the years to come? These are the questions we will try to answer for a few of the newest “up and coming” languages.

Dart

Dart

First up is a contender for the JavaScript web-scripting crown. This language, developed mostly by Google, has grown in popularity since its announcement in 2011 and has recently been given the 1.0 version number in November 2013. This language has a C-like syntax to it that will make it immediately familiar to C and C++ programmers, a different approach than JavaScript’s syntax. Google has touted the fact that on Chrome browsers Dart runs much faster than JavaScript. Its support of single instruction, multiple data (SIMD) helps to make substantial gains in 3D graphics, image processing, and numerical processing by allowing operations on multiple data sets simultaneously (DARTLANG). The downfall of Dart is that it has a slow adoption rate for its Dart VM (besides Google, which is currently working on a Dart version of Chrome called Dartium). Firefox, Safari, Opera, and Internet Explorer are not currently slated to include the Dart VM. This makes the dart2js tool, which converts from Dart to JavaScript crucial so Dart scripts can be run on other browsers. The problem is, this transformation of languages is not a cheap process and kills a lot of the performance benefits that native Dart has to offer.

My Take: Dart is a web language has a syntax that is more familiar to all programmers, but its slow native VM adoption rate means it will be slow going. Once Dart gains the interest of more web developers I think it will flourish.

Scala

Scala

Next up is a one-size-fits-all language: Scala. Scala, in development since 2003 by Martin Odersky and released publicly in 2004, is touted as a “scalable language”. That means that it can be used for scripting, applications, or even for mission critical systems (WHATISSCALA). This scalability is achieved through a combination of features. It is a fully object-oriented language, where every value is an object and every operation is a method call. It is a functional language, which among other things means it supports first-class functions as well as generally prefers immutability over mutation in objects. It is also compatible not only with the Java VM through native compilation to Java ByteCode, but also with all Java libraries, frameworks, and tools. Scala has a lot of functional language features that Java doesn’t including anonymous functions (closures), type inference, and lazy initialization. This focus on different programming concepts puts Scala in a weird position because it is not trying to compete with Java (on the contrary, it fully supports Java), but adds another layer of.. well.. scalability that programmers may find intriguing.

My Take: Given how Scala has been positioned I see this language growing in popularity for years to come. More companies are adopting it, and it doesn’t require anything else to get started other than a Java VM (which is fairly ubiquitous).

Ceylon

Ceylon

Another Java alternative is Ceylon, which has been around since 2011, hit 1.0 in November of 2013, and is sponsored by Red Hat. Similar to Scala, Ceylon looks to improve on Java where it can, as opposed to starting over. Ceylon can run on the Java VM using Java Bytecode, however it can also run on the JavaScript VM natively, which is a big boon for web scripting. Ceylon also has a declarative syntax that allows classes to be created on the spot, similar to many scripting languages (this is helpful for dealing with hierarchical systems) (CEYLON). Ceylon also has type inference, as well as operator polymorphism (the ability for objects to conform to various operators for instant functionality), support for comprehensions (for filtering and transforming streams of values), and has a shared annotation for visibility of declaration outside of the scope of which it is defined (a simplification of public, private, and protected keywords). The developers of Ceylon keep saying that they only want to fix what is broken in Java and to make as few changes as possible to keep things accessible. Also, in case you were wondering, the elephant’s name is “Trompon”.

My Take: Red Hat is taking a risk in developing Ceylon as opposed to supporting Scala, but it has some unique features that differentiate it. I think it will have a harder time gaining popularity in the wake of Scala, but its unique take on some programming language fundamentals differentiates it enough to keep it relevant.

In my next post, I will be reviewing two more languages – one touting to be “Javascript on steroids” and the other, an exciting new language that was announced at the World Wide Developer’s Conference in 2014.

 

About Guest Author Joe Ellegood:
Guest Author Joe Ellegood-Software Engineer

Guest Author Joe Ellegood-Software Engineer

Joe Ellegood is a Software Engineer based in St. Louis, MO. A graduate of Missouri University of Science and Technology, Joe spends his free time researching and learning new programming languages, working on small hardware side projects, and gaming. He has worked with such notable companies as Garmin International, The Boeing Company, and Thompson Reuters.