3 programming languages that are promising for the next years

As every addicted for programming languages, I feel myself excited when I see new programming languages. In the last years I did at least a toy project in C#, Java, Javascript, Ruby, Python, Scala and Objective-C. Recently, I made a search for new and exciting programming languages. Below is the the languages that I think more interesting and are promising more in the next years. They are open source and focused on writing concurrency software. I will definitively give a try to one of them. The problem is choose which one!



Go

package main

import "fmt"

func plus(a int, b int) int {
    return a + b
}

func main() {
    res := plus(1, 2)
    fmt.Println("1+2 =", res)
}

Go, also known as Golang, is an open source language developed by Rob Pike, Robert Griesemer and Ken Thompson at Google and since 2009 is used in some of the Google’s production systems. Your main goal is to make easy to write concurrent systems. Go is compiled like C and is garbage collected like Java and aims to be have an efficiency of a statically typed compiled language with the ease of programming of a dynamic language.

Go syntax is similar to C and Java, blocks are surrounded by curly braces and there are control flows like if, switch and for. Unlike C, line-ending semicolons are optional, Go doesn’t include type inheritance, generics and method overloading. Go also, makes heavy use of interfaces.

Go concurrency, that is the best point in the language, is implemented through the goroutines, who looks like small threads. Goroutines are created through the go statement from anonymous or named functions. These goroutines are executed concurrently with other goroutines, including their caller. Execution control is moved between them by blocking them when sending or receiving messages. Goroutines can also share data with other goroutines.

Current State

Go is now in version 1.1, and have been used by the following companies:

  • Google
  • Heroku
  • SoundCloud
  • Canonical
  • CloudFlare

Resources to learn Go

Official Site
Go By Example
Effective Go
Programming in Go: Creating Applications for the 21st Century (Developer’s Library)



Elixir

defmodule Hello do
  IO.puts "Defining the function world"

  def world do
    IO.puts "Hello World"
  end

  IO.puts "Function world defined"
end

Hello.world

Created by José Valim (former Rails Committer), Elixir is inspired by the the best parts of scripting languages like Ruby and Python, but built on top of Erlang VM. Exixir’s goal, like Go, is to make easy to write concurrent software, it was built on top of Erlang VM, that is known to be very good on concurrency, and use the Ruby’s syntax instead the Erlang’s syntax, that is known to be very expressive.

Elixir and Erlang shared the same bytecode and datatypes. This means you can invoke Erlang code from Elixir (and vice-versa) without any conversion or performance hit. It’s good, because Elixir, despite is a new language, is benefited by code that is already maintained by the Erlang community.

Current State

Elixir is still in Beta and the actual version is the 0.10.0 released on 07/13/2013.

Resources to learn Elixir

Official Site
Meet Elixir ScreenCast with José Valim
Programming Elixir



Clojure

(loop [i 0]
  (when (< i 5)
    (println "i:" i)
    (recur (inc i))))

Clojure is dialect of LISP programming language created by Rich Hickey. It’s also a predominantly functional language, dynamic, built on top of JVM (but has ports to CLR – ClojureCLR, and to Javascript Engine – ClojureScript). It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming.

Clojure syntax, as other Lisps, is built on S-expressions that are first parsed into data structures by a reader before being compiled.

Clojure’s best part is that it allows the use of the well established JVM but in a simpler way and, like the other functional programming languages, Clojure is expressive allowing us to reduce the number of lines of code that we need to type.

Current State

Clojure’s actual stable version is 1.5.1, but also there is a development version that is currently in the version 1.6. Clojure is been used by the following companies:

  • Amazon
  • Citigroup
  • BackType
  • Berico

Resouces to learn Clojure

Official Site
Clojure Programming
The Joy of Clojure: Thinking the Clojure Way
Programming Clojure

Leave a Reply

Your email address will not be published. Required fields are marked *