code syntax

Programming Language Trends in 2021

2020 was a strong year for programming and software development in general; developers adapted to working from home with minimal disruption to their programming efforts.

How can we expect programming language trends to evolve in 2021 amid a global economic recovery as countries further adapt to their changing working habits?

Is there a particular interest in minimising hardware requirements with the extremely efficient and memory safe Rust, or perhaps consolidating workforce skill sets with the unifying JavaScript ecosystem?

Whether you are a remote worker looking to grow your relevant skill set or transitioning to a new career path, knowing trending languages can help you in your decision making for your programming endeavours.

Let’s explore what you should be focusing on in 2021.

The Rise of Rust

rust programming language

The systems-level and relatively new programming language (introduced in 2010) known for its memory safety and impressive runtime efficiency, Rust proved to be a popular language in 2020, gaining adoption for a range of application development needs.

Rust held the top spot for most loved language for the 5th year in a row, according to the Stack Overflow annual developer survey; a great testament indeed for a young programming language.

Not only is Rust the most loved language, but it is also one of the top-paying languages, just after Go, Scala and Pearl. If your goal is to maximise your salary prospects, Rust should be on your roadmap.

Does this mean popular programming languages are the best programming languages? Well, that depends on your use case.

What makes Rust a standout language is its safe runtime code and (very) strict compile-time checks that ensure memory leaks will be a thing of the past.

Rust’s killer features: safety and efficiency

memorySafety

Rust is being used in various mission-critical runtime applications and libraries from big players, including Microsoft, Dropbox, Coursera, NPM, and others.

Even competing ecosystems (NPM, for example) rely on Rust to optimise its flagship package manager and public registry, NPMJS.

Some fundamental features that make Rust a standout language for 2021 and beyond include:

  • Explicit control over memory allocation on the stack or heap. Rust by default will use the stack where appropriate, which dramatically speeds up your runtime.
  • Rust has no garbage collector. Where dynamically stored data is needed, a block of heap memory is allocated.
  • Where C code is needed, Rust allows you to insert “unsafe” code blocks that support native C programming.  This comes at the expense of losing guaranteed safety, however.
  • The Cargo package manager along with its extensive functionality and version control with “Crates”, or packages in the Rust ecosystem.

This low level control makes Rust the most suited language for efficient operating systems programming.

Even though Rust is not easy to learn for newcomers of low-level programming, it is arguably the language that will give you the best results in raw performance vs resources.

WebAssembly: A next-generation binary language

webAssembly

Rust also offers some of the best support for Web Assembly (or WASM), being developed by the Mozilla Foundation alongside Rust.

WebAssembly is seen as a next-generation web technology with improved speed and efficiency at computing processor-intensive web applications.

WebAssembly can be compiled from other languages, too, such as AssemblyScript and C++.

Rust is by no means the sole WebAssembly solution but is arguably the best-suited language for compiling WASM due to their shared values and objectives.

The open source community love Rust too

Rust is a dominant language for Blockchain frameworks, with Parity’s Substrate framework and Polkadot blockchain having their reference implementations solely in Rust.

The open-source community, fuelled by incentives like bounties, competitions, and grants for cutting edge research, are opting for Rust in their production systems – and that is very encouraging for the language’s long term credibility.

Can Rust compete with popular programming language C++?

Well, not quite. C++ is a very generalised language and has thus been well suited for wide-ranging use cases, from hobbyist to enterprise applications.

C++ is still an extremely relevant and exciting language, and is still being maintained.

It will not fade into irrelevance any time soon, and the prospective system developer should indeed have C++ knowledge in their toolbox.

That is not to say C++ and Rust cannot work alongside each other.

Companies are making huge efforts to migrate some of their processes to Rust-compiled code.

Microsoft for example, where 70% of security issues have historically been memory related, are busy migrating some of their services to Rust.

There is a huge incentive for service providers to adopt Rust and minimise security risk and thus cut down on codebase maintenance.

The Universally Influential JavaScript

javascript

Software engineers are relying on JavaScript more than ever, both in the browser, for native development – whether an android app or iOS app courtesy of React Native – and for server side development courtesy of the Node.js runtime engine.

It is undoubtedly a must-have skill in most development roles, and compared to Rust is relatively easy to learn.

It is closely correlated with a range of other technologies, most notably rendering for the web, native development and database management.

It is the most popular language for 2020, and is on course to continue its dominance in 2021.

Client Side Libraries: The Cutting Edge of Frontend Web Development

ReactJS, Vue.js and AngularJS are the most notable client side libraries used for web development.

They introduce abstractions such as components, state management, JSX, and virtual DOM.

This agglomeration of features makes for a more lean, speedy and modern feeling web app, a vast improvement from a traditional series of web pages.

In terms of popularity, React is leading by far, but it should be noted that Vue gained considerable adoption in 2020.

So how do you keep the edge in your portfolio?

The following section details some key technologies that aim to improve the web development process, and ultimately the end-user experience.

WebPack and the app build process

Webpack is a modularised asset bundler, meaning that you, as the developer, have granular control over how your web app is compiled into its final build.

WebPack will continue to dominate the build process of web apps and is worth getting familiar with.

Concurrency

React in-particular are pushing for a Concurrent Mode for the framework; a low level feature that promises to increase responsiveness and more gracefully handle network requests concerning component rendering. I

f you want the edge in React, keep a lookout for the final release of Concurrent Mode in 2021.

Code splitting

This is the term used for intelligently splitting your app into file chunks instead of having one huge file to load.

Designing your web-apps with code splitting in mind will significantly improve the end-user experience with less waiting times.

As front-end frameworks get more complex and larger in size, code splitting should be a prominent tool in your toolbox.

Theming and responsiveness

Keeping your apps responsive (adjustable for all screen sizes up to the desktop monitor size) is a must-have feature these days.

Theming should also be considered, with the basic light and dark mode in addition to customisable themes. There are very prominent libraries to achieve this.

JQuery cannot be ignored and is still a widely used alternative to the above libraries, but we consider it a legacy library, with the aforementioned libraries having considerable improvements in both the development and end-user experience.

Server Side and Node.js

nodeJs

The efficient Node.js JavaScript runtime engine has become a favourite of web administrators for backend development.

It is widely used by web application developers, and replaces legacy server side programming languages such as PHP.

Using JavaScript client and server side unifies the software stack, lowering skill requirements and simplifying the development pipeline.

Node.js, along with the hugely successful NPMJS public registry, has become the go-to solution for tasks like REST APIs (Express),  database management, image processing, and even cryptography.

To further flex Node.js’s capabilities, Google actively maintains Tensorflow JS, the library that brings Machine Learning to JavaScript, breaking down the barrier of browser based AI.

If we had to choose a key Node.js library for 2021, it would have to be Apollo’s GraphQL platform, the industry standard GraphQL implementation.

The modular, schema-based approach of GraphQL means one can request hand-picked properties, or customised data structures, without processing and fetching redundant data for the UI in question.

As more companies adopt JavaScript frameworks, we also envisage a healthy amount will be interested in GraphQL.

Experimental: JavaScript for Native Desktop Applications

react

JavaScript is also being explored for native desktop development too, such as Microsoft’s React Native Windows project that also supports native macOS compilation.

Although in its early stages, this should be very exciting for developers, and lower the barrier for web developers to delve into native Desktop development.

Sometimes a native experience cannot be beaten by a web counterpart.

Adopting JavaScript to build for both platforms is a game-changer for small companies with limited developer resources and wish to support native systems.

Keep an eye on such libraries – you may impress a client with such capabilities.

However, there are still challenges with JavaScript. Dependency confusion being a recent demonstration at attacking dependency management.

And even though Node.js is a fast runtime, it does come at a performance cost relative to systems languages such as C++ or Rust (as we ascertained earlier, Rust is the language to use for performance and safety.)

JavaScript is not a typed language and has loose rules over type casting and conversion. This lack of clarity can lead to errors.

TypeScript has grown in popularity to address this issue – but can we expect its popularity to continue into 2021? Let’s take a look.

The Hype Around TypeScript

typescript

TypeScript is also quite a sought after skill being in the upper bracket of the salary range.

TypeScript brings organisation and structure to JavaScript by allowing you to describe the shape of your objects, whether they be primitive types or complex interfaces. 

Features generally used for system-level programming are also introduced to JavaScript via TypeScript, namely generics, expanded class support with private scope, and experimental features like decorators.

As we’ve touched on already, TypeScript brings more definition and structure to your JavaScript, and this has two major benefits:

  • It reduces runtime errors and app crashes, as your data flow from inputs and APIs will always have their types considered.
  • It makes it much easier for teams of all sizes to work together, with less code ambiguity. This in-turn brings us back to benefit 1, with much less chance of errors.

Typing is also extremely useful for NPM packages, giving them more integrity and fine-tuning so prospective users have confidence using its contents.

The TypeScript trade-off is of course the added complexity of code that may not be warranted in small projects or small teams.

If you are creating a landing page for a website with limited functionality, perhaps more design focused in nature, then TypeScript may be overkill for such requirements.

This is an area of discussion that you should consider when undertaking a project, and will sound relevant (and impressive) to explore with your clients.

The bottom line here is that JavaScript ecosystem growth is not slowing down.

NPM, the glue that holds the JavaScript ecosystem together, are pushing for more TypeScript support, more CLI support in regards to workspaces, more analytics, auditing capabilities, and more.

Check out the NPMJS public roadmap to see the roadmap and agendas of 2021 and beyond.

Swift – Apple Platform Development

swift

Swift debuted in 2014 and is built upon Apple’s Objective-C to streamline and modernise development for Apple platforms. 

Although limited to these platforms, Swift should be considered as a key language for those looking to get into mobile app development, simply because of the strength of the iOS ecosystem, with over 1.2 billion active iPhone devices at the time of writing.

Apple has paid developers $200 billion since 2008, a $45 billion increase from the figure announced last January.

If that’s equal to 70% of App Store sales, then the App Store grossed around $64 billion last year – and most of that revenue is generated from mobile applications.

Although Android development will also be a requirement in the job market, native development with the Kotlin programming language is not a focus of this article, as we believe multi-device builds with React Native are superior solutions than a Kotlin codebase – especially given the majority of app revenue is generated on the iOS platform on a per-user basis.

Swift vs programming languages we’ve discussed

How does Swift weigh up with other languages we have discussed so far? Swift is unavoidable when writing for Apple platforms.

Concretely, even if you build your apps with a JavaScript, Ruby on Rails, or other framework, you will still be relying on native APIs to communicate with the device in question’s hardware.

These APIs will primarily be coded in Swift, while falling back to Objective-C for edge cases.

Because of this, ranking swift highly is a no-brainer for mobile development prospects.

In addition, the CocoaPods package manager and public registry for Swift and Objective-C projects, is a huge library of Objective-C and Swift projects, some of which are indeed wrapper APIs for other languages like JavaScript.

There is a healthy market for supplying such packages on CocoaPods, poised to continue its growth in 2021.

Python – The King of Data Science

dataScience

Unsurprisingly, Python has made an appearance in this article. Python will undoubtedly continue to be relevant in 2021 for several reasons.

If you are weighing up whether it is worth learning Python for your profession, consider the following.

Python is the dominant language of data science, machine learning, data analytics, and research efforts in general. 

Python hosts very popular packages such as NumPy, SciKit Learn, Tensorflow, PyTorch – optimised libraries that are well established in academia and in industry.

Python is also used for critical tasks such as web servers, popular solutions being the Django and Flask Python web development frameworks.

It’s relatively easy to learn Python with its simplified syntax model while maintaining strict conventions, making it an ideal language for newcomers to begin experimenting – and Python is indeed the favoured language for prototyping in general.

Where a Rust or Go system would be highly optimised (and frankly, faster and more efficient) than a Python implementation, Python allows for rapid development in a language that people will be familiar with.

Other Notable Languages to Learn

code syntax

We’ve covered what we believe will be the major programming languages of 2021 in terms of adoption and growth, but there are still other notable languages that should be on your radar depending on which field you are looking to work in.

Go

Go, or Golang, is a systems level programming language developed by engineers at Google with the goal of minimising the learning curve compared to C and C++, and maintaining a high level of performance.

Like Rust, it is a compiled language that enables fast runtime performance.

Unlike Rust, Go has a garbage collector that sacrifices some of the blazing fast speeds that the former language is capable of.

As an open source language on GitHub, anyone is free to submit proposals and work on future language specifications.

The GitHub repositories are actively maintained, with over 1,600 contributors to the programming language repository.

Expect major Go updates to the specification every year.

The official Golang implementation of the Ethereum protocol, otherwise known as Geth, is the flagship and most contributed-to Ethereum client, highlighting Go’s capabilities for complex networking protocols, cryptography, and data management that blockchain applications require.

Java

Java, as a programming language, has successfully cemented itself in banking and enterprise applications.

Java is still a relevant systems-level language in 2021. Unlike the previous languages we have discussed, Java is not on a growth trajectory, but still has strong foundations in the industry, including a loyal community of Java developers and a library of critical Java based software applications.

Interest in Java is still very strong, and therefore should be considered when researching prospective positions in your chosen field.

Do your targeted companies depend on Java? If so, is Java on their long-term roadmap, or are they looking to transition to a more modern language, perhaps utilising the efficiencies of Rust or Go that Java cannot match?

These questions will ultimately dictate whether you should get acquainted with Java in 2021.

C#

C-Sharp is another interesting general-purpose software development language that is maintained by Microsoft.

C# is a popular programming language among developers, who enjoy using it.

We have mentioned C# in this article for one main purpose – game development.

More specifically, game development with the Unity game engine.

The combination of Unity and C# continues to be the easiest entry to market for professional game programming. 

C# is easy to get to grips with, and is ideal to be used to create game logic and AI with its non-assumptive approach.

Conclusion: The Traits of Strong Programming Languages

Programming Languages traits

That wraps up our take on trends of popular programming languages in the realm of software development for this year, which has hopefully given you a clear idea of your top 5 languages (or top 10 if you want to spread your skills) to learn for your specific interests.

We haven’t covered all, but the ones we have promise to have huge implications for programmers in 2021.

Remember always to carry out your due-diligence when ranking languages.

Has the language got a strong community presence on Stack Overflow to gauge community interaction (the vast majority of programmers have a Stack Overflow account).

How popular are package managers of your prospective programming language? And how relevant are they compared to other languages – is there an up-and-coming language that solves a problem of the prior?

Stack Overflow is very search engine friendly. Searching a programming query using Google or other search engine will most likely yield a high ranking solution from Stack Overflow.

Are you a Developer looking to join Iglu? Check out our open positions or feel free to reach out to us here.