Languages that may reinvent the future of software development

Languages that may reinvent the future of software development

Dart, Go, F # or Ceylon may dominate the future of programming. Behind these languages are companies as influential as Google, Microsoft or Red Hat.
BBVAOpen4U
|
21 Apr. 2015

Software development is one of the main drivers of innovation in the world. This is well known by professionals, who have to be continuously searching and learning new programming languages. Dart, Go, F # or Ceylon may dominate the future of programming. Behind these languages are companies as influential as Google, Microsoft or Red Hat. This is a small introductory tutorial to these new industry standards.

Dart

Lars Bak and Karper Lund, creators of the JavaScript V8 engine for the Google Chrome browser, are two of the leading brains behind this programming language. Dart is an open source language, structured and flexible, object-oriented, easy to learn and suitable for all web browsers. Dart code can be compiled to JavaScript to run on any browser. It also allows software developers to create more complex web applications with a much higher performance.

 

Dart is a very interesting option for developing applications in the cloud for one reason: it allows having a single language for the client, for the server, through Google’s Cloud Platform.

For experts in Dart like Moisés Belchín, author of Web Programming with Dart and Aprende Dart, with Patricia Juberías, and the blog in Spanish blogdart.es, this programming language has some very interesting extras:

  • dartfmt, a tool to format code;

  • dartanalyzer, a real-time error detector; and

  • docgen, a tool for generating documentation of your projects.

Examples in Dart of how to insert elements in the DOM (Document Object Model, the application programming interface used to access and modify the contents of documents with languages such as JavaScript or Dart):

<code>

LIElement nuevoLi = new LIElement(); nuevoLi.text = 'Texto cualquiera en el nuevo LI'; querySelector('#lista').children.add(nuevoLi);

</code>

For example, in HTML some common tags in the DOM are <input>, <ul> and <li>. In Dart these tags are: InputElement, UListElement and LIElement.

 

Go

Go is a language launched in 2009 which is compiled in a quick and efficient manner, inspired by the syntax of C, with garbage collection and an excellent standard library. Google is also behind the design of Go. Its first designers were Robert Griesemer, Rob Pike and Ken Thompson, who started to develop it in 2007, two years before its release.

Being a language inspired by the syntax of C, it can be an ideal architecture for developers who already know that programming language. One of its advantages is that languages like C, C ++ or Java are heavy and bulky, while Go is just the opposite.

It also allows to avoid the explicit declaration of variables when programming. In Go language, to write a variable we use the word "var" followed by the name of the variable and its type (in the example below "int" is used to indicate that it is an integer).

<code>

package main

import "fmt"

func plus(a int, b int) int {

   return a + b

}

func plusPlus(a, b, c int) int {

   return a + b + c

}

func main() {

   res := plus(1, 2)

   fmt.Println("1+2 =", res)

   res = plusPlus(1, 2, 3)

   fmt.Println("1+2+3 =", res)

}

$ go run functions.go

1+2 = 3

1+2+3 = 6

</code>

 

Go includes features offered by languages which support dynamic typing (Duck Typing), such as Python, Ruby or JavaScript. In addition, Go is not an object-oriented language, there are no classes, objects or inheritance. Instead we will declare a struct type called Fund, with a function to create new fund structs.

 

F# (F Sharp)

F# is a multi-paradigm open source programming language, object-oriented, which supports features for the .NET platform. It is included in the Visual Studio package since 2010. Originally developed by Don Syme, a Microsoft Research engineer, it is now under the umbrella of Microsoft's Developers Division. Those who want to start programming in F# should read Expert F# (Expert’s Voice in .NET), written by Don Syme, Adam Granicz and Antonio Cisternino.

Besides, here you have an online tutorial to start learning. F# can be used in areas with strong demand within the Big Data and software development industry:

  • Data science (F# can be learned to work with numbers, statistical calculations and machine learning).

  • Data visualization (create graphics and filter data efficiently).

  • FinTech (estimate volatilities, asset price simulation, numerical calculations, etc.).

Two examples:

- A currency converter programmed in F#:

<code>

/// Conversion rate representing 1 EUR in GBP

let rateEurGbp = 0.783M

/// Converts amount in EUR to GBP

let euroToPounds eur = eur * rateEurGbp

// Convert EUR 1000 to GBP

let gbp = euroToPounds 1000.0M</code>

 

- A yen-dollar converter in F#:

<code>let convertCurrency rate value : decimal  = rate * value

let rateUsdJpy = 79.428M

// Convert USD 1000 to JPY

convertCurrency rateUsdJpy 1000M

</code>

 

Ceylon

Ceylon is an object-oriented programming language developed by Red Hat, the company responsible for the creation of the open source operating system GNU/Linux. This language, also open source, has a Java-like syntax. In some ways it is a Java upgrade made by the community of open source developers.

Therefore, any developer who knows Java or C # can learn Ceylon without any problem. The good news is that any project done in Ceylon is available to all on GitHub, the collaborative software development platform, meaning that beginners have free access to a high-level source of knowledge and learning.

Although its syntax is similar to Java, it must be noted that it is much more readable and regular, based on tree structures. Ceylon is more functional than Java, as it eliminates and simplifies elements of that language.

This is an example of a simple class in Ceylon:

<code>

"A polar coordinate"

class Polar(Float angle, Float radius) {

 

   shared Polar rotate(Float rotation)

           => Polar(angle+rotation, radius);

 

   shared Polar dilate(Float dilation)

           => Polar(angle, radius*dilation);

 

   shared String description

           = "(``radius``,``angle``)";

}

</code>