Fresh and functional: 5 new languages to watch

With novel approaches for everything from concurrency to deployment of executables, these languages are worth your attention

Fresh and functional: 5 new languages to watch

Why invent a new language? It's not as if there's a shortage of them.

But with a new programming language comes a new way to look at all the problems that developers, IT admins, and everyone in between face. To that end, the new languages most worthy of your attention are the ones that bring a novel perspective to an existing problem.

Not all of that is about the language; sometimes it's about the environment a language provides. Google's Go and Mozilla's Rust didn't simply offer new syntax, but also new toolchains and strategies to manage projects.

Here are five late-breaking newcomers to the field, all sporting creative approaches to the conundrums found in modern software development, whether practical or philosophical.

Stanza 0.8.22

The gist: Also known as L.B. Stanza, this project is being developed at the University of California, Berkeley, and employs a philosophy of strong separation of concerns within the language.

Stanza compiles to native code, but doesn't require specifying types. Add them, and the language automatically performs more robust code checking on your behalf. It also uses an object system that doesn't employ classes -- it works with methods and function overloading instead -- and makes it easy to employ co-routines for concurrency.

Resembles: Python, Ruby, and to some degree the family of functional languages

Current platforms: Linux, Mac, Windows

Nim 0.13

The gist: No longer known as Nimrod (for obvious reasons), Nim takes some of Python's ideas -- clean syntax, convenience, access to the language's own syntax tree -- and makes them available in a language that's statically typed and can perform its own garbage collection and memory management. Other notable features: manually defined operators (you don't have to overload existing ones), macros, and compiling Nim apps to stand-alone binaries with no dependencies.

Resembles: Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon (by the language designers' own admission)

Current platforms: In theory, any platform with a C compiler, but binaries are currently only available for Windows

Crystal 0.17.4

The gist: Its syntax may be patterned after Ruby -- so Rubyists can get on board in a jiffy -- but unlike Ruby, Crystal compiles to native code. It also has static type checking that doesn't require type specifications in variables or method arguments, and direct bindings to C code. It doesn't yet have parallelism -- everything's executed in one thread -- but it has concurrency controls, and parallelism is on the long-range to-do list, along with a proper package manager.

Resembles: Ruby

Current platforms: Linux, OS X

Nit 0.8

The gist: Another Python-esque language, Nit was developed to be straightforward to work with and to interface with existing C/C++, Java, and Objective-C code. It's also intriguing in that despite still being in the early stages of its development, Nit supports Android as a compilation target, so it's a possible alternate language for that platform.

Resembles: Python, Pascal, Ruby

Current platforms: Linux, OS X; Windows support is possible through Cygwin, but at a significant performance penalty

Pony 0.2.1

The gist: Pony was created to solve a specific problem that crops up often in software development: how to work with abstractions like objects without running into problems like race conditions, memory safety, or deadlocks. Pony tries to address this by using static typing and an "actor" object type, so it's easier to reason about what items are and the order in which they're executed.

Resembles: Python (simple syntax), Erlang (powerful concurrency system)

Current platforms: Linux, OS X, Windows

Copyright © 2016 IDG Communications, Inc.