Saturday 26 April 2014

Beyond the usual suspects: 10 hot programming languages on the rise

From Ceylon to Egison, these 10 languages tackle tough programming problems in unique and increasingly popular ways

Beyond the usual suspects: 10 programming languages on the rise
The sheer number and diversity of programming languages in use today is immense. For better or worse, however, most organizations settle on a small subset, the usual suspects, to tackle whatever programming problem comes their way. Java, C++, JavaScript, PHP, Ruby -- time and again, developers shoehorn code to do the best they can with the tried and true.

Some problems require new approaches and new tools. Here are 10 programming languages gaining significant traction for newfound, newly created, or reimagined utility. They run the gamut from general purpose to highly specific, and have roots that range from Lisp to Java, but each could have meaningful impact on modern programming as it evolves.

Ceylon 1.0.0
Resembles: Java (but it isn't a version of it)
License: Apache v2
What's it all about: Once upon a time developers at Red Hat got together and said, "Man, Java would be great if only it didn't do this, and if only it did do that." Several wish lists later, Ceylon was born. The language runs on the JVM and Node.js, while doing away with many of Java's more notorious pain points. Instead of XML, it uses a JSON-like declarative syntax for tree-structured data, and it features static typing, a module system, and support for some structures that don't exist in Java, such as sequence, intersection, and union types.

Clojure 1.6
Resembles: Lisp
License: Eclipse Public License 1.0
What's it all about: One way to think about Clojure is that it's Lisp for the JVM, given that it runs on the JVM and has full access to Java's frameworks and libraries. Clojure's creators advertise the language as a tool for functional programming that is also designed for concurrency -- in other words, well-suited to multicore or widely distributed applications. InfoWorld's Andy Oliver looked at Clojure in the context of Ruby and Ceylon, and he felt it best suited for programmers coming from a math or science background. But with the functional programming paradigm on the rise, Clojure deserves a closer look beyond computational science.

Egison 3.3.3
Resembles: Lisp
License: MIT
What's it all about: Egison is a functional language aimed at performing pattern matches against a range of data types. Egison's creator, Satoshi Egi, claims that pattern matching in existing programming languages is supported only when the data is stored in a structured form like a list. Egison was designed to allow pattern matches to be expressed in different ways based on data types (for lists vs. sets); to handle nonlinear patterns, such as multiple occurrences of the same variable in a pattern; and to create functions that both receive and return patterns.

Groovy 2.2
Resembles: Java
License: Apache License 2.0
What's it all about: Call it "Java plus," since Groovy is essentially a syntactical extension of Java that runs on the JVM and can make use of Java library classes. But Groovy bristles with features not found in Java natively: static and dynamic typing, mainly, but also operator overloading, native regular expression support, and -- my favorite -- a "?" operator to allow for the safe checking of null objects without wrapping expressions in tons of syntactic sugar. It's also found uptake with some fairly big names: LinkedIn and Wired have used Groovy (and Grails, a Groovy Web framework) for their websites, and major IDEs like Eclipse and IntelliJ now support it.

Hack 1.0
Resembles: PHP
License: PHP/Zend licenses
What's it all about: Facebook had already created its own runtime for PHP, known as HHVM -- so why not go a step further and fork PHP itself? Hack, Facebook's new spin-off language, keeps PHP's rapid development cycle and ease of use, adds static object typing and lambda expressions, and was written in OCaml for safety and durability. Much existing PHP code will run in Hack, making it theoretically easier to migrate from PHP to Hack, but right now, outside of Facebook's own bullpens, it's hard to say if Hack will enjoy the kind of massive uptake PHP has enjoyed.

Jeeves
Resembles: ML, but implemented directly in Scala and Python
License: MIT
What's it all about: Jeeves was created to help programmers do one thing: enforce privacy policies for how data moves through an application. As explained in the readme for the Python implementation of the language, this goes beyond ascertaining whether a given user can see a value to determining whether that user can see values derived from that value. Policies for how such data flows are created and managed separately from the program itself. Given how important data security has become as a matter of programming practice, projects such as Jeeves may be receiving a good deal more attention in the future.

Julia 0.2.1
Resembles: Python
License: MIT
What's it all about: Julia was designed for technical and scientific computing, where parallelized and distributed number-crunching is a way of life. Julia compiles to machine code with the aid of an LLVM-based compiler, and on some key benchmarks it outperforms Matlab, Mathematica, and R -- which were also developed for math and science work -- by a wide margin. It even supports a Lisp-like macro function for expanding the functionality of the language. Also, existing fans of Python's math and science libraries need not feel shut out, since Julia can optionally make use of those libraries as well.

Nimrod 0.9.2
Resembles: Python, Pascal
License: MIT
What's it all about: The Nimrod homepage describes the language as "a statically typed, imperative programming language that tries to give the programmer ultimate power without compromises on runtime efficiency." Nimrod compiles down to C (with C++ and Objective-C as options) and does not need a virtual machine or runtime. Its creator intends for it to be used for systems programming, because it can access hardware directly and has pointers to both garbage-collected and manually managed memory. The language also lets the user define operators and macros, and bindings have been written for many popular libraries and third-party applications: Windows and POSIX APIs, GTK2, OpenGL, and so on.

OCaml 4.01
Resembles: The ML theorem-proving language, and to some degree Lisp
License: Q Public License
What's it all about: Most programming languages generally tend to fall into one of three buckets: functional (Lisp), imperative (C), or object-oriented (Java). OCaml does all of those things, and some recent OCaml projects have made waves, including Hack (Facebook's recent fork of PHP, mentioned previously) and the Xen Project's Mirage OS. Its statically typed design may not win over those solidly invested in the dynamic-typing camp, but one sign of how seriously it's worth taking is how other languages are now beginning to arise in its wake as well: Microsoft's F#, for instance.

Racket 6.0
Resembles: Lisp, Scheme
License: LGPL
What's it all about: A variant of Scheme, which itself is a variant of Lisp, Racket was designed to be powerful enough for creating languages, but also straightforward and robust enough to be used for traditional application programming -- Naughty Dog uses it for scripting in several of its games, and the Hacker News website was developed using Scheme. Unlike other Lisp-like languages, Scheme's macro system includes the compiler itself, so features can be added to the language as if they were native Racket constructions.

MCTS Training, MCITP Trainnig

No comments:

Post a Comment