Accessability Links

BECOMING A FUTURE PROOF DEVELOPER...

Monday 7th August 2017

In this blog our digital specialist David highlights some of the languages he thinks will enable developers to "future proof" their skill set in coming years...

The technical landscape is changing, gone are the days of companies just choosing between traditional programming languages such as Java, C# and PHP. These languages still play a fundamental role in Software Development but now we are seeing an emergence of different programming languages, frameworks and technologies that are disrupting the industry. This article will you show what the emerging languages are so you can stay ahead of the trend. There will be languages that I have missed as I could have gone on forever, however I am open to hearing what languages should be on here and your reasons why.  

Google Go

Also known as Golang, Go was 2016’s programming language of the year according to the Tiobe index. It was created back in 2009 by three google employees – Rob Greismere, Rob Pike and Ken Thompson.

The Go creators say “Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of statically typed, compiled language”

Leading tech teams and renowned companies such as the BBC, eBay, Facebook, Netflix and the award winning Gov.uk site all use Golang. 

Why learn Google Go?

Producing maintainable code - Standardised formatting and naming through tooling (gofmt, lint) and minimalistic language makes it easy to read and reason.

Concurrency
- Go uses coroutines called goroutines. A goroutine is a lightweight thread managed by the Go runtime. Communication between goroutines is done very elegantly using channels.

It also offers excellent Performance and Scalability.

Scala
The name Scala is an acronym for ‘Scalable Language’.

Scala has been established for a little longer than some of the other up and coming emerging languages with its initial release in 2004. 

The creator of Scala Martin Odersky developed the language because he was frustrated with some of the restrictions of Java.
He went on to say “Scala was designed to show that a fusion of functional and object-oriented programming is possible and practical. That’s still its primary role.”

Because of this big tech giants are choosing Scala with it been used for development by LinkedIn, Twitter, Netflix, The Guardian, AirBnB and Apple,

Why learn Scala? 
When describing the benefits of Scala it is easiest to compare it to Java (Scala is sometimes referred to as Java’s cousin). 
It’s functional: The elimination of mutation from application code allows the application to be run in parallel across hosts and cores without any deadlocks.

Better concurrency model - Scala has an Actor model that is said to be better than Java's model of locks on a thread.

Concise code - Scala code is more concise than its more verbose cousin, Java.

Type safety/static typing - Scala does type checking at compile time.

Pattern matching - The case statements in Scala are super powerful.

Inheritance - The mixing traits are great, and they definitely reduce code repetition.

Domain-specific language (DSL) - Scala syntax allows for a programmer to write a natural looking DSL. This ability was carefully built into the original language design. This is a very powerful feature of Scala. Scala test/specs build on top of this feature.
 
Clojure
Launched in 2009, Clojure is another dialect of Lisp programming language. 

The creator Rich Hickey described Clojure as “Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language, yet remains completely dynamic – every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.”

It is successfully used in industry by renowned companies including Walmart, Puppet labs, Amazon and Salesforce to name a few. 

Why learn Clojure?
Concurrency - It offers immutable data structures, functional programming with zero side-effects, Software Transaction Memory built in, etc. You can focus your engineering efforts on features instead of concurrency details.

Lazy data structures are built-in - you can focus more on writing uncomplicated code than on performance tuning and efficiency.
Quicker Development - the interactive REPL makes development quicker and more fun. It also dramatically speeds up the learning process.

Rust

Rust was created by Mozilla, Rust 1.0 was released in 2014, having been in development for a number of years.

Close in some respects to C and C++, Mozilla describes it as a “new programming language which focuses on performance, parallelisation, and memory safety”.

To design and implement a safe, concurrent, practical systems language.

Rust exists because other languages at this level of abstraction and efficiency are unsatisfactory. In particular:

There is too little attention paid to safety.
They have poor concurrency support.
There is a lack of practical affordances.
They offer limited control over resources.
Rust exists as an alternative that provides both efficient code and a comfortable level of abstraction, while improving on all four of these points.

The Stack Overflow survey released recently found Rust to be the most beloved among developers of all programming languages and frameworks.
Rust is used by companies such as Chef, Samsung and Dropbox.

Why learn Rust?
Testing: Built in support for testing saves you time and brings consistency.
Maintenance: Most of the issues that crop up once the code is shipped such as invalid index, dangling pointer, memory corruption and resource leak. Rust eliminates almost all of these, and more. So in most cases the bugs you would need to fix would be related to actual business logic.
Speed: The goal of Rust is to be as fast as C++. While not quite there yet, it is close

Kotlin
Kotlin v1.0 was released in February 2016 by JetBrains, the maker of the world’s best IDEs. 

The head of JetBrains Dmitry Jemerov said that most languages did not have the features they were looking for, with the exception of Scala. However, he cited the slow compile time of Scala as an obvious deficiency. One of the stated goals of Kotlin is to compile as quickly as Java.
With Kotlin, JetBrains fixes most of the annoyances of Java, while keeps complete compatibility with its parent language (kotlin can interact with java code and vice-versa).. Basically, you can view Kotlin as Java, that doesn't suffer from NullPointerExceptions and Checked Exceptions, has better generics and refined syntax that heavily relies on type inference, so you don't have to manually point type info in the most of cases. Also, it has lot of modern niceties like extension functions, first-class functions, (simple) operator overloading and quite a few more cool things that make life of every developer easier.

Companies using Kotlin include Uber, Pinterest and Atlassian. 

Why learn Kotlin?
Improves productivity - by reducing the effort needed to write code. For example, a 50 lines (approx.) code written in Java can be reduced to 2/3 (approx.) lines in Kotlin.

Quick code compilation - Reduces learning time for developers by providing documentation and support.

Syntax is easy to understand
- so the code review is simple even for a newcomer.

Runtime overhead is low as the standard library is small and compact.

The next suggestions are not languages, they are Javascript related tools and technologies. These are becoming more and more sought after as the “full-stack Developer” is becoming the norm. 

Node.js
Node.js is a runtime system for creating (mostly) server-side applications. It's best known as a popular means for JavaScript coders to build real-time Web APIs. JavaScript has historically been used for client-side so this is why Node is different. 

Node.js has become one of the foundational elements of the "JavaScript everywhere" paradigm allowing web application development to unify around a single programming language, rather than rely on a different language for writing server side scripts.

Node.js was originally written by Ryan Dahl in 2009 Dahl was inspired to create Node.js after seeing a file upload progress bar on Flickr. The browser did not know how much of the file had been uploaded and had to query the Web server. Dahl desired an easier way
Dahl criticized the limited possibilities of the most popular web server in 2009, Apache HTTP Server, to handle a lot of concurrent connections (up to 10,000 and more) and the most common way of creating code (sequential programming), when code either blocked the entire process or implied multiple execution stacks in the case of simultaneous connections.

Companies including PayPal and even NASA are using Node.js in production.

Why learn Node.js?

Asynchronous - It's built to handle asynchronous I/O from the ground up and is a good match to a lot of common web- and network-development problems.  In addition to fast JavaScript execution, the real magic behind Node.js is called the Event Loop. To scale to large volumes of clients, all I/O intensive operations in Node.js are performed asynchronously.

Javascript - Node.js is Javascript.  So the same language can be used on the backend and frontend.   This means it breaks down the boundaries between front- and back-end development.

Community Driven - In addition to its innate capabilities, Node.js has a thriving open source community which has produced many excellent modules to add additional capabilities to Node.js applications. One of the most famous is Socket.io, a module to manage persistent connections between client and server, enabling the server to push real-time updates to clients. 

One thing we can take away from this is that a lot of the new languages are created with the aim of removing the annoyances from established programming languages. At the moment if you had no development experience and were to ask what language would I recommend you should learn I would still recommend learning at least one of the mainstream programming languages (Java, C#, PHP, Ruby etc). However we are increasingly seeing some of these languages adopted within companies in the area. Some of the big players in the North of England are developing in Golang, Scala and Kotlin with many more likely to follow suit. 

What are your thoughts? Tweet us @AmsourceTech.
Add new comment
*
*
*
Back to Top