With the evolution of new processors, logic boards and the need for more performance, new programming languages like Go and Rust and are gaining ground. Developers usually get these kind of questions a lot – what to learn next? The industry is changing at a very fast pace, and you always find something new to learn. But the question is how do you pick your next language?
Kotlin is statically typed language for modern multiplatform applications. It is developed by a team of JetBrains and first appeared in 2011. It is designed to be an industrial strength object oriented programming language, better than Java, and fully interoperable with Java code so that users can migrate gradually from Java to Kotlin.
Along with the methods and classes of object oriented approach, Kotlin supports procedural programming with the use of functions. It also supports Linux and Perl shell script style string interpolation and Type interface.
Kotlin features infix notation, null-point safety, and extension functions. In Google I/o 2017, Kotlin was announced as an official Android development platform. It became the third language fully compatible for Android after C++ and Java.
The language is used by Pinterest, Square, Trello, Amazon Web Services, Uber, and Corda has over more than 90% Kotlin in its codebase.
Influenced by: Standard ML, F#, Haskell and OCaml.
The language focuses on 3 factors – performance, usability and robustness. It includes an expressive set of language constructs, including let-expression, anonymous functions, if expressions, case expressions and list interpolation.
Elm has its own virtual system, however, it has no support for higher-kinded types. Therefore, it doesn’t provide abstractions for various common operations, for instance, there is no generic map and filter function.
A few companies using Elm in production are NoRedInk, Futurice, Gizra, Hearken, PivotalTracker, and more. With the rise of mobile, Elm has a great chance at breaking into the market and sticking around for a while.
Influenced by: Fortran, Lisp, Lua, Python, Perl, Ruby and MATLAB
Julia is a high-level programming language for numerical analysis and computational science. It has an extensive mathematical function library, distributed parallel execution program, sophisticated compiler as well as numerical accuracy.
It includes open source Fortran and C libraries for signal processing, linear algebra, string processing and random number generation. Programs written in Julia are organized around multiple dispatch, giving you the ability to define function behavior across various combinations of argument types.
Julia doesn’t impose any specific style of parallelism on user. It provides different key building blocks for distributed computation, making it flexible enough to support a wide range of styles of parallelism, and letting users add more.
Not only it is quick and easy to make web apps in Julia, but the resulting product is quick to respond and easy to use. Many well-established companies have started using Julia, including Facebook, McAfee, Zulily, Disney, Capital One, IBM and Forio.
Influenced by: LFE, Clojure, Erlang and Ruby.
Elixir is developed for creating real-time distributed applications. It is a dynamic, functional language that leverages the Erlang VM, known for running low latency and fault-tolerant systems. The objective of this language is to improve the performance of Rails app running across different CPUs.
Elixir code run on the Erlang Virtual Machine known as BEAM and compiled to Erlang bytecode. If you are working on data processing, network apps or some sort of banking software, this is a great option to consider. But, if you haven’t done functional programming yet, this probably won’t be easy for you.
Everything in Elixir is an expression, and functions can be called without impacting run time. The language gives more importance to higher-order functions and recursion instead of side-effect-based looping. Moreover, it features pattern matching, lightweight concurrency, and Lazy and asyn collection with streams.
Elixir is successfully used in companies like Moz, Pinterest, Inverse and Bleacher Report. It organizes annual events in Europe and United States, as well as minor conferences and local events.
Influenced by: C#, Ruby, C++, Alef, Haskell, NIL, Cyclone, Limbo and Erlang.
Rust is the system programming language developed by Mozilla. It got the top position in “The Most Loved” category of Stack Overflow’s 2016 and 2017 developer survey. The design of the code has been refined through Servo web browser layout engine and the Rust compiler. It is very much similar to C++ and easy-to-learn syntax.
Rust is designed to be safe, concurrent and practical programming language, supporting imperative procedural as well as functional methods. It is not for developing apps for end users, but for hardwares, more specifically, for better memory safety (prevents segmentation) while maintaining performance.
Instead of using an automated garbage collection (like Java and Go), Rust manages memory and other resources via Resource Acquisition Is Initialization, with optional reference counting. In addition, it provides deterministic management of resource with minimal overhead, and favors stack allocation of values.
The list of its corporate users is quite impressive with names like Telenor Digital, SmartThin, Dropbox, Wire, Braintree, daZta, Ather, Onesignal, Faraday and clever cloud.
Influenced by: C, Ruby, C# and Python
Crystal is an object oriented language that hopes to bring C-like performance into the highly abstracted world of web developers. The syntax is mostly inspired by Ruby, the added benefit of a lower learning curve for experienced Ruby developers.
Crystal relies on LLVM for emitting native code, therefore making use of all optimizations built into the toolchain. Moreover, it is statically type checked, so any type of error will be caught earlier rather than fail at runtime.
The language possesses a macro system and supports operator overloading and automatic garbage collection. It has dedicated syntax to easily call native libraries, which eliminates the need to reimplement low level tasks. Moreover, it uses green threads, known as fibers to achieve concurrency.
Crystal is currently in development phase. Still a few brave folks have started using it in production line, including Neopoly GmbH, Appmonit, Bulutfon and Protel.
Influenced by: Python, Java, Smalltalk, Objective-C and Perl
Groovy is an object oriented scripting language, first appeared in 2003, but the stable release came out in 2007. Since it is dynamically compiled to Java bytecode, it seamlessly integrates with any Java library. So if you have programmed in in Java or any other code that uses the curly bracket syntax, you can learn Groovy quickly.
Groovy is also getting popular because it increases developers’ productivity and has access to the Grails web application framework. It is packed with tons of cool features including NoSQL support, powerful view technology, pluggability and more.
Unlike Java, Groovy features both dynamic and static typing, native support for regular expressions, added helper methods, operator overloading and the safe navigation operator to check automatically for null pointers. Also, it provides native support for many markup languages like HTML and XML.
The language has been used by some of the giant companies including Oracle Sales Cloud, eXo platform, LinkedIn, XWiki Saas, DataMelt, Mastercard, Netflix, Airbus and Apache OFBiz.
Influenced by: S, XLispStat, Common Lisp and Scheme.
The R programming language is not new, but it has become more popular in recent years, thanks to the big data revolution. It was first appeared back in 1993, and now it is widely used among data miners and statisticians for data analysis and developing statistical software. It comes with both command line interface as well as graphical front-end.
R language is packed with a suite of operators for calculations on matrices, an effective data handling facility, and intermediate tools for data analysis. It has stronger object oriented programming features than most statistical computing languages.
R’s data structures include arrays, matrices, data frames, vectors and lists. The extensible object system has objects for time series, geo spatial coordinates and regression models. Furthermore, R operate as a general matrix calculation tool with performance benchmarks comparable to MATLAB or Octave.
R is used by political prognosticator FiveThirtyEight to model the chances of the 2008/2012/2016 presidential elections and 2010/2014 midterm elections. It is also used by Republican National Committee and Democratic National Committee to identify potential voters and manage efforts to get maximum number of people to vote.
Influenced by: C, Python, Smalltalk, Alef, CSP, Modula, Pascal, Limbo and BCPL.
Go was released by Google in 2009 with the aim of managing coding issues that large organizations face on a daily basis. Easy-to-use, simplicity, concurrency features and performance are the main reasons why developers are happy with Go. In 2016, it was awarded with the TIOBE programming language of the year.
Go provides two features that replace class inheritance: The first one is ‘Embedding’ that can be viewed as an automated form of composition and the second are its ‘Interfaces’ that offers provides polymorphism. It has inbuilt features and library support for writing concurrent code – not only to CPU parallelism, but also to asynchrony.
The language includes debugging, testing and code-vetting tools, such as go test for testing and microbenchmarks, go fmt for formatting code, and many more. It also includes debugging and profiling support, race condition tester and runtime instrumentation (like garbage collection pauses).
Go has many big-corporate users, including YouTube, Dropbox, Cloudflare, Netflix, BBC, Soundcloud, Zerodha, MaxCDN, Tumbler, Twitter, Yandex, Yahoo, Wikia, Uber and CoreOS.