The descriptions below are from Wikipedia.
Julia is a high-level dynamic programming language designed to address the requirements of high-performance numerical and scientific computing while also being effective for general purpose programming. Unusual aspects of Julia's design include having a type system with parametric types in a fully dynamic programming language and adopting multiple dispatch as its core programming paradigm. It allows for parallel and distributed computing; and direct calling of C and Fortran libraries without a compiler without glue code and includes best-of-breed libraries for floating-point, linear algebra, random number generation, fast Fourier transforms, and regular expression matching.
Julia's core is implemented in C and C++, its parser in Scheme, and the LLVM compiler framework is used for just-in-time generation of machine code. The standard library is implemented in Julia itself, using the Node.js's libuvlibrary for efficient, cross-platform I/O. The most notable aspect of Julia's implementation is its speed, which is often within a factor of two of fully optimized C code. Development of Julia began in 2009 and an open-source version was publicized in February 2012.
Scala (// skah-lə) is an object-functional programming and scripting language for general software applications. Scala has full support for functional programming (including currying, pattern matching, algebraic data types, lazy evaluation, tail recursion, immutability, etc.) and a very strong static type system. This allows programs written in Scala to be very concise and thus smaller in size than most general purpose programming languages. Many of Scala's design decisions were inspired by criticism over the shortcomings of Java.
Scala source code is intended to be compiled to Java bytecode, so that the resulting executable code runs on aJava virtual machine. Java libraries may be used directly in Scala code, and vice versa. Like Java, Scala is statically typed and object-oriented, and uses a curly-brace syntax reminiscent of the C programming language. Unlike Java, Scala has many features of functional programming languages like Scheme, Standard ML and Haskell, includinganonymous functions, type inference, list comprehensions, and lazy initialization. Scala also has extensive language and library support for avoiding side-effects, pattern matching, delimited continuations, higher-order types, andcovariance and contravariance. Scala has a "unified type system", meaning that all types (including primitive types like integer and boolean) are subclasses of the type
Any. This is similar to C# but unlike Java. Scala likewise has other features present in C# but not Java, including anonymous types, operator overloading, optional parameters,named parameters, raw strings, and no checked exceptions.
The name Scala is a portmanteau of "scalable" and "language", signifying that it is designed to grow with the demands of its users.
Erlang (// er-lang) is a general-purpose concurrent, garbage-collected programming language and runtimesystem. The sequential subset of Erlang is a functional language, with eager evaluation, single assignment, anddynamic typing. It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. It supports hot swapping, so that code can be changed without stopping a system.
While threads require external library support in most languages, Erlang provides language-level features for creating and managing processes with the aim of simplifying concurrent programming. Though all concurrency is explicit in Erlang, processes communicate using message passing instead of shared variables, which removes the need for explicit locks (a locking scheme is still used internally by the VM).