Languages that have more then 30 years are considered old. That will be 1986, before the Internet was born. That was the golden age of classic computer languages: Fortran, Cobol, Algol, Ada, Pascal, C, C++, Forth, Scheme, ML, Smalltalk.
There are many attempts to create a better computer language. This is encouraging and impressive in the same time. Next I will present a short introduction to 14 computer languages in vogue. You do not have to learn all these languages just to keep an eye on them just in case one become dominant. That you learn that language to make a disruptive project or to get the Job that you want.
Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang’s runtime system has built-in support for concurrency, distribution and fault tolerance.
Haskell is a standardized, general-purpose purely functional programming language, with non-strict semantics and strong static typing. Every function in Haskell is a pure function in the mathematical sense. Every expression in Haskell has a type which is determined at compile time.
Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.
Lua has been used in many industrial applications (e.g., Adobe’s Photoshop Lightroom), with an emphasis on embedded systems (e.g., the Ginga middleware for digital TV in Brazil) and games (e.g., World of Warcraft and Angry Birds).
Scala is a pure-bred object-oriented language. Conceptually, every value is an object and every operation is a method-call. Scala is also a full-blown functional language. It has everything you would expect, including first-class functions, a library with efficient immutable data structures, and a general preference of immutability over mutation.
Clojure is a dynamic, general-purpose programming language. Clojure is a compiled language, yet remains completely dynamic. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system.
Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.
Go is a statically typed, scalable computer language for large systems. Go originated as an experiment by Google engineers Robert Griesemer, Rob Pike, and Ken Thompson to design a new programming language that would resolve common criticisms of other languages while maintaining their positive characteristics.
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It’s a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language.
Dart is an application programming language that’s easy to learn, easy to scale, and deploy-able everywhere. Google depends on Dart to make very large apps.
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.
Julia’s LLVM-based just-in-time (JIT) compiler combined with the language’s design allow it to approach and often match the performance of C.
Julia is designed for parallelism and cloud computing. Julia does not impose any particular style of parallelism on the user. Instead, it provides a number of key building blocks for distributed computation, making it flexible enough to support a number of styles of parallelism.
Elixir is a dynamic, functional language designed for building scalable and maintainable applications.
Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.
Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. Swift is a powerful and intuitive programming language for macOS, iOS, watchOS and tvOS.
Writing Swift code is interactive and fun, the syntax is concise yet expressive, and Swift includes modern features developers love. Swift code is safe by design, yet also produces software that runs lightning-fast.
Swift Playgrounds is a revolutionary new iPad app that helps you learn and explore coding in Swift. Built-in lessons and challenges teach fundamental coding concepts as you write real Swift code in an interactive environment designed for touch.
Hack is a programming language for HHVM. Hack reconciles the fast development cycle of a dynamically typed language with the discipline provided by static typing, while adding many features commonly found in other modern programming languages.
Is JVM language. That means it run like Java not better. However the syntax is different and it has support from JetBrains for a better IDE.
From this list my favorites are:
I will post programming examples on http://sagecode.net for learning. After I finish I will consider to look into other languages: Haskell, Dart, Closure and Scala. I’m curious why these languages are popular and asses what are the second best computer languages you can learn.
Thanks for reading.