Swift is an innovative new programming language for iOS and OS X with concise yet expressive syntax that produces lightning-fast apps. It makes writing code interactive and fun, and works side-by-side with Objective-C.
Hack is a programming language for HHVM that interoperates seamlessly with PHP. Hack reconciles the fast development cycle of PHP with the discipline provided by static typing, while adding many features commonly found in other modern programming languages.
Hack provides instantaneous type checking via a local server that watches the filesystem. It typically runs in less than 200 milliseconds, making it easy to integrate into your development workflow without introducing a noticeable delay.
Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. The library, largely written in Julia itself, also integrates mature, best-of-breed C and Fortran libraries for linear algebra, random number generation, signal processing, and string processing. In addition, the Julia developer community is contributing a number of external packages through Julia’s built-in package manager at a rapid pace. IJulia, a collaboration between the IPython and Julia communities, provides a powerful browser-based graphical notebook interface to Julia.
Nemerle is a general-purpose, multi-paradigm programming language for the .Net platform. It is as easy to learn and use as C# or VB.NET but Nemerle is by far more powerful. One may start using it as an advanced C# and then, as learning goes on, employ a range of cool features enabling metaprogramming and functional programming. The metaprogramming is based on macros bearing some similarity to Lisp.
Vala is a new programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.
Elixir is a functional meta-programming aware language built on top of the Erlang VM. It is a dynamic language with flexible syntax with macros support that leverages Erlang's abilities to build concurrent, distributed, fault-tolerant applications with hot code upgrades.
Q is a data language. For now, it is limited to a data definition language (DDL). Think "JSON/XML schema", but the correct way. Q comes with a dedicated type system for defining data and a theory, called information contracts, for interoperability with programming and data exchange languages.
Flávio de Sousa's insight:
DTD and XML:Schemas all over again?! I agree sometimes I miss schemas for JSON but... noooo!
Pyret is a programming language designed to serve as an outstanding choice for programming education while exploring the confluence of scripting and functional programming. It's under active design and development, and free to use or modify.
The first high-level programming language for quantum computers could guide the design of these futuristic machines – and make programming them.
Now Peter Selinger of Dalhousie University in Halifax, Canada, and colleagues have brought the field up to speed by creating Quipper, the first high-level quantum programming language. Quipper is designed to express instructions in terms of bigger concepts, and to make it easy to bring together multiple algorithms in a modular way. High-level languages for classical computers such as Java do most of the heavy lifting in modern computation.
Quipper is based on a classical programming language called Haskell, which is particularly suited to programming for physics applications. What Selinger's team has done is to customise it to deal with qubits.
They have also produced a library of Quipper code to carry out seven existing quantum algorithms, including an algorithm for estimating the ground-state energy of molecules. They hope that others will add to the library by writing more algorithms, creating a resource that will allow quantum programmers to build software by sticking modules together, as classical programmers do with Java.
"Having a well-designed programming language helps structure your thinking and informs the way you think about a problem," says Selinger. "It may become a useful tool in the design of new quantum algorithms."
Thorsten Altenkirch of the University of Nottingham, UK, who was not involved in the work, agrees. "People can use languages like Quipper as a test bed for ideas and understanding for how to write quantum software," he says.
Selinger's team released their outline of the language, together with their preliminary library, at the Programming Language Design and Implementation conference in Seattle, Washington, last month.
It may seem strange to create a language for a quantum computer, given that the hardware is still rudimentary. But developing the software – which is tested by simulating a quantum computer on a classical one – could influence the design of future quantum computers.
Quipper's creation was funded by IARPA, the US Intelligence Advanced Research Projects Agency, in order to pin down how many bits a quantum computer would need in order to outperform a classical one on certain tasks. Writing programs in Quipper makes the hardware requirements of an algorithm clearer and that has already led to some surprises. "It will take a lot more resources than people had thought," says Selinger, who can't talk about specific results.
He expects that with advances in engineering, such as reducing noise, the number of qubits necessary for a practical quantum computer will decrease over time.
The team made their estimates based on various existing forms of quantum hardware, including devices that use ion traps and photons.However, they did not include the only quantum computer in the market today, the D-wave computer. It uses a novel approach called adiabatic quantum computing and so is not currently compatible with Quipper.
ATS is a statically typed programming language that unifies implementation with formal specification. It is equipped with a highly expressive type system rooted in the framework Applied Type System, which gives the language its name. In particular, both dependent types and linear types are available in ATS. The current implementation of ATS (ATS/Anairiats) is written in ATS itself. It can be as efficient as C/C++ and supports a variety of programming paradigms.
Nimrod is a statically typed, imperative programming language that tries to give the programmer ultimate power without compromises on runtime efficiency. This means it focuses on compile-time mechanisms in all their various forms.
Racket is a modern programming language in the Lisp/Scheme family, suitable for a wide range of applications. Racket provides a rich language extension API, the DrRacket integrated development environment, and many batteries-included libraries.