By Serdar Yegulalp, InfoWorld
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.
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.
Credit: http://www.computerworld.com