Languages evolve by influence from other languages. A language once implemented it can’t be changed too much. So to make improvements you need to create a new language. Two language families are most influential: C family and Algol family.

Old Languages

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.

New Languages

New computer languages have less then 30 years: SQL, Eiffel, OCaml, Haskel, Python, Ruby, Ada95, Java, Visual Basic, JavaScript, D, Delphi, Swift, Go, Kotlin, Hack, Rust, Dart, Cylon, Erlang, Elixir, Scala, Level, Nim, Lua.

Cool Languages

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.

1Erlang1986Ericsson
2Haskell1990AT&T
3Lua1993Rio University
4Scala2001Martin Odersky
5Closure2009clojure.org
6Go2009Google
7Dart2011Google
8Julia2012MIT
9Rust2014Mozila
10Elixir2012elixir-lang.org
11Swift2014Apple
12Hack2014Facebook
13Nim2016Nim
14Kotlin2016JetBrains

1. Erlang

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.

https://www.erlang.org/ 

2. Haskell

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.

https://www.haskell.org

3. Lua

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).

https://www.lua.org/about.html

4. Scala

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.

http://www.scala-lang.org

5. Closure

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.

http://clojure.org

6. Go

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.

https://golang.org

7. Dart

Dart is a class-based, single inheritance, object-oriented language with C-style syntax which can optionally trans-compile into JavaScript. It supports interfaces, abstract classes, generics, and optional typing.

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.

 

https://www.dartlang.org

8. Julia

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.

http://julialang.org

9. Elixir

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.

http://elixir-lang.org

10. Rust

Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.

https://www.rust-lang.org

11. Swift

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.

https://swift.org

https://developer.apple.com/swift

12. Hack

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.

http://hacklang.org

Nim

Compile native using C++ and can also generate JavaScript. It has a comfortable language syntax and is fast. Still in early stage (0.18).

https://nim-lang.org/

Kotlin

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.

https://kotlinlang.org/

My Favorites

From this list my favorites are:

  1. Julia
  2. Rust
  3. Go

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.