Programming Languages: Executive Summary

  • November 13, 2023
  • Royce Threadgill
  • 15 min read

When you write a sentence in English, you use the English alphabet to communicate your thoughts to other English readers.

When you write a sentence in Mandarin, you use Chinese characters to communicate your thoughts to other Mandarin readers.

Just as we use human language to communicate with other humans, languages in coding can be thought of as the medium through which we communicate with machines.

But as we all know, human languages are not interchangeable. They each have their own sentence structure, dialects, grammar, conventions, colloquialisms, and unspoken rules that make them unique.

The same can be said of languages in computer programming. Each coding language has its own syntax, conventions, and communities that make it unique and, in some cases, uniquely well-suited for certain tasks.

What We’ll Cover in This Article

Here we’ll provide a list of programming languages for your consideration, highlight the top programming languages for specific applications, and look into our crystal ball to project the top 10 programming languages of the future.

We’ll also include a cheat sheet for some of the key concepts reviewed herein and related topics.

Our discussion will center around programming languages as they apply to web development and mobile app development. Although robotics, automation, internet of things (IoT), and similar topics may be briefly touched-upon, they are not the focus of this article.

We’ll discuss the availability of engineers for each language, as well as the strength of its ecosystem.

Importantly, this article is not intended as a ranking of programming languages.

It’s my personal opinion that all programming languages have their strengths and weaknesses. As such, I don’t believe there is an empirical way to construct a programming languages ranking for all scenarios.

In other words, your choice of programming language should be tailored to your project and selected on a case-by-case basis.

Who Is This Article For?

This article is aimed at anyone who wants a broad overview of languages in coding and who wants to know which languages might lend themselves to certain types of software. For example:

  • Decision-makers looking for an overall understanding of the programming language landscape and looking for insights on the future technologies their organizations should consider using
  • Managers and leaders who want to better understand the skillsets of their engineering teams
  • Engineers in the early stages of evaluating technology for greenfield projects or microservices

Languages in Coding: What Are They and How Do They Differ?

Programming languages are languages we use to communicate with devices and software.

Some examples include:

  • Using the Java programming language, we can create apps for Android devices
  • Using the Ruby programming language, we can create an e-commerce web application
  • Using the Python programming language, we can parse, organize, and analyze data

In the above examples, Java could also be used in place of Ruby to develop an e-commerce web app, as well as for data analysis.

However, writing a mobile application in Ruby or Python would be difficult and time consuming. This is due largely to a lack of mobile development frameworks, as well as a dearth of engineers who know how to write mobile apps in these languages.

Even if you could put together a team to build a mobile application in Ruby or Python, that app would probably be relatively slow and buggy.

So the difference between these languages isn’t really in what they can do, but rather in what they can do well. And what they do well is generally dictated by the number of engineers actively working in that language and their interests.

Language Performance vs. Problem-Solution Fit

Performance (sort of like the “speed” that a language operates at) is a defining characteristic of any language. That being said, in my experience, performance is not usually the driving factor behind choosing one language over another.

As an example, Python is “slow” relative to many other coding languages, but is currently the most popular programming language for artificial intelligence applications. Companies could probably improve the speed of their applications and significantly reduce costs by using a more performant language.

Why don’t they? Because Python was used extensively in academic research on machine learning, and when those engineers eventually entered the private sector, they continued working with Python despite its performance shortcomings.

Therefore, if you’re working on machine learning problems, you should consider using Python because it’s a good fit for the problem you’re trying to solve. If you’re working in another area of software engineering, you should evaluate which languages have the best engineers and ecosystem for solving your particular problem.

Programming Languages List

This coding languages list is non-exhaustive, but covers a wide range of languages with a variety of uses. If you’d like to learn more about the most popular programming languages, check out the TIOBE Index for October 2023 and the Stack Overflow Developer Survey 2023.

For each language listed here, I’ll address:

  • Availability of engineers: the number of engineers with expertise in the language
  • Ecosystem strength: the availability and stability of libraries and supportive tooling

For both topics, I’ll provide a rating of “high”, “medium”, or “low”, then briefly discuss finer points of the language. Keep in mind that these ratings are relative (e.g., the number of JavaScript developers is high relative to the number of Rust developers).

These points are important because they directly impact how difficult or easy it is to build software with a given language.

A high number of engineers makes it easier to find someone to work on your product, while a strong ecosystem can accelerate development of that product. Conversely, a low number of engineers and weak ecosystem may pose problems for your work.

JavaScript

  • Availability of engineers: High
  • Ecosystem strength: Medium
  • Common uses: Web app development, mobile app development (Android and iOS), APIs

When building apps with JavaScript, you have access to a wealth of libraries to accelerate development. You can use JavaScript to build React web apps, React Native mobile apps for both Android and iOS, and Express APIs. If your business is interested in creating a GraphQL API, you can also use Node.js to implement the popular Apollo Server.

But JavaScript changes fast, leading to breaking changes, abandoned code libraries, and security vulnerabilities, which in turn leads to frequent and time-consuming maintenance on JavaScript applications.

TypeScript

  • Availability of engineers: High
  • Ecosystem strength: Medium
  • Common uses: Web app development, mobile app development, APIs

TypeScript and JavaScript are very similar. The difference between the two is that TypeScript allows for the addition of something called “static types”.

For the purposes of this summary, it’s not important that you understand what static types are. The important thing to understand is that TypeScript can provide your engineers with a way to make their code more maintainable and understandable. Typically, that translates into faster developer onboarding and fewer bugs in production.

Python

  • Availability of engineers: High
  • Ecosystem strength: High
  • Common uses: Web app development, APIs, data analysis, machine learning

Python is among the top programming languages for artificial intelligence endeavors; this language can significantly accelerate such work due to a deep talent pool and strong ecosystem of mathematical libraries like Pandas and TensorFlow. Python can also be used to develop web applications with Django and APIs with Flask.

It’s also worth noting that Python has grown into a popular introductory language at universities, establishing a wide base of developers for years to come.

Ruby

  • Availability of engineers: Medium
  • Ecosystem strength: High
  • Common uses: Web app development, APIs

Ruby is notable in this list because its engineers specialize almost exclusively in web app development through the stable and battle-tested Ruby on Rails framework. This unique strength often translates into faster web development and improved web app quality when building with Ruby.

Importantly, the Shopify ecommerce platform and Stripe payments platform both make extensive use of Ruby and provide first-class support for the language.

C# (C-Sharp)

  • Availability of engineers: Medium
  • Ecosystem strength: Medium
  • Common uses: Web app development, APIs

C# is a flagship language created and maintained by Microsoft. The company offers virtually everything a software developer could need, including a best-in-class integrated development environment (Visual Studio), web app development framework (ASP.NET Core), package manager (NuGet), and its own cloud service for deploying your applications (Azure).

Support for the C# language is second to none when using Microsoft products; if you plan to stay in the Microsoft ecosystem, this can significantly improve the velocity and quality of app development. These accelerants are dampened outside the Microsoft ecosystem.

PHP

  • Availability of engineers: Medium
  • Ecosystem strength: Medium
  • Common uses: Web app development, APIs, content management systems

The popular Laravel web framework and the ubiquitous WordPress content management system both run on PHP, granting the language staying power and a consistent pool of software developers.

PHP has been used to build sites like Facebook and Wikipedia. However, it is relatively uncommon for large corporations to make extensive use of PHP.

Java

  • Availability of engineers: Medium
  • Ecosystem strength: Medium (small companies), High (large companies)
  • Common uses: Web app development, APIs, mobile app development (Android), game development

Java is a flexible language created and maintained by Oracle and can be used to develop various types of software. For example, Java is frequently used to develop Android mobile apps and can also be used to build Spring Boot web apps. Java’s popularity and developer population has waned in recent years, but the language is still a stalwart in enterprise app development (e.g., internal business applications) and mobile app development.

Ecosystem strength for Java can be quite variable. Large organizations with a budget for enterprise services will find Java’s ecosystem to be quite strong. Additionally, there are multiple Java-related languages, such as Clojure, Scala, and Kotlin, that can communicate with one another, expanding the breadth of code libraries available when working in Java.

Kotlin

  • Availability of engineers: Low
  • Ecosystem strength: Medium
  • Common uses: Mobile app development (Android)

Kotlin is a language created and maintained by JetBrains. As such, you can expect high-quality support in JetBrains products (e.g., IntelliJ IDEA, their Kotlin development environment). Kotlin is most commonly associated with Android app development and is currently the recommended language in Android Studio, the official integrated development environment for Android development.

If you’re already invested in the Java ecosystem, it’s worth mentioning that Kotlin has the notable advantage of easily integrating with existing Java libraries.

Swift

  • Availability of engineers: Low
  • Ecosystem strength: Medium
  • Common uses: Mobile app development (iOS)

Swift is a language created and maintained by Apple as a successor to Objective-C, the original language used for developing iOS apps. Though both languages are still used in iOS development, Apple has been steadily pushing Swift as the recommended language for software development in the Apple ecosystem.

Go

  • Availability of engineers: Low
  • Ecosystem strength: Medium
  • Common uses: Web app development, APIs, microservices

Go, sometimes referred to as Golang, is a relatively new language that focuses primarily on performance and portability. Though Google does not officially support the language, Go was invented at Google and enjoys strong support on Google Cloud Platform.

When developing with Go, developers often never need to use external code libraries in projects, so Go code is often lower-maintenance and can be easily deployed on a variety of platforms. Currently, Go is typically used to build microservices (small applications that accomplish specific tasks), rather than full-fledged web or mobile applications.

Elixir

  • Availability of engineers: Low
  • Ecosystem strength: Medium
  • Common uses: Web app development, APIs, embedded systems

Though Elixir is a fairly new language, it was built upon the shoulders of the much older Erlang and its capabilities can be extended by accessing that language’s expansive ecosystem at no cost to application performance.

Elixir is also heavily inspired by Ruby. Its flagship web development platform, the Phoenix framework, is actually based on Ruby on Rails and was rated the most admired web framework in 2023 by StackOverflow users.

And while not currently in wide usage, Elixir has some unique qualities that may make it more performant for apps operating at a large scale with high traffic. For example, companies like Pinterest and Discord are well-known for their use of Elixir.

Rust

  • Availability of engineers: Low
  • Ecosystem strength: Low
  • Common uses: Embedded systems, networking

Rust is a young but highly admired language. The learning curve for this language is steeper than most, its talent pool is relatively shallow, and the ecosystem is still in its infancy.

However, Rust applications run much faster than most languages on this list while still maintaining memory-safety. You don’t need to know what memory-safe languages are; the important thing to understand is that memory-safety helps developers avoid an entire class of security vulnerabilities.

Given that Rust is still finding its footing, it may not be a great choice for building your business on at the moment. That being said, Rust has taken a key role in the development of WebAssembly (or WASM), which means it may be an important language in the future of web development.

HTML, CSS, and SQL

In addition to the above languages, you’ll also hear about some technologies with a specific use.

Calling these entries “languages” in and of themselves is somewhat controversial amongst programmers. But I wanted to include them in this article because they are important elements of building software (regardless of whether you consider them programming languages or not).

HTML

HyperText Markup Language (HTML) is used to define the structure of web pages.

If you’re using a web framework to build an app, it’s highly likely that the output of your framework is HTML.

CSS

Cascading Style Sheets (CSS) are used to style HTML (e.g., provide background colors, font sizes, text alignment, etc.).

SQL

Structured Query Language (SQL) is used to communicate with databases.

Top 10 Programming Languages of the Future

When buying a car, you want to find one with readily available parts and mechanics.

The same can be said of software. When building software for the long-term, it’s essential to consider the future of technologies used in your product.

So we asked nine of our talented software engineers to name the top 10 programming languages 10 years from now. You can see their answers below:

Survey of The Gnar Company engineers summarizing their top 10 programming languages of the future

The top 10 programming languages selected by our engineers were:

  • JavaScript
  • Python
  • Go
  • Java
  • Rust
  • Elixir
  • Kotlin
  • PHP
  • Ruby
  • Swift

One key finding is that many of our engineers believed the most popular programming languages today, JavaScript and Python, would remain top programming languages over the next 10 years.

Highly established languages like Java, PHP, and Ruby, which have only middling popularity in today’s developer community, were also included. The chief reasoning behind this was simple inertia – there are a lot of big projects and companies built on these technologies and that’s unlikely to change any time soon.

Kotlin and Swift were selected largely because we expect their use in mobile app development to grow.

Notably, three languages with fairly small communities today – Go, Elixir, and Rust – were also included! The reasoning behind these selections varied, but the general sentiment is that these newer languages provide better solutions to problems that are difficult (or even impossible) to solve with some of the older languages.

Languages in Computer Programming: Cheat Sheet

  • Programming language: A language used to communicate with devices and software
    • Examples: Java, Ruby, Python
  • Server-side language: A language generally associated with server-side or "back-end" applications, such as APIs and microservices
    • Examples: Go, Java, Ruby
  • Client-side language: A language used to render user interfaces and data for end-user consumption, typically within a web browser or mobile application
    • Examples: JavaScript, HTML, CSS
  • Front-end: The part of an application seen and consumed by customers on their device (the client), which usually contains things like web pages and forms
  • Back-end: The part of an application that lives on the server and is not seen by customers; typically consumes data provided by the front-end and executes business logic (see below)
  • Business logic: Calculations and operations your application carries out to deliver some service to a user
    • Example: When a user submits an order on your web application, your back-end can execute business logic to execute the payment and return a receipt to the user
  • Library: A pre-made collection of code designed to accomplish a specific task; used to accelerate projects and avoid “reinventing the wheel”.
    • Examples: Prisma for interacting with databases, Pandas for data analysis, Devise for user management
  • Framework: An extensive code library designed to accomplish a broad task, such as building a web application
  • Package manager: Retrieves and manages library code for a given project
  • Web application: Software that users and customers interact with through a web browser, such as Chrome and Safari
    • Examples: When you sign in on your bank’s website, you’re signing into that bank’s web application, through which you can view your account balances, deposit money, make transfers, etc..
  • Application programming interface (API): Typically refers to an application that receives data from another application and sends a response to that application
  • Integrated development environment (IDE): The editor through which a programmer writes code; some IDEs are very feature rich, while others are basically just text editors.

What We Covered

In this executive summary, we covered a variety of topics:

  • We defined a programming language as the means through which we communicate with machines to build specific products (e.g., web apps and mobile apps)
  • We discussed how programming languages differ from one another
  • We examined a non-exhaustive list of programming languages and briefly discussed the unique advantages of each
  • We made some educated guesses about the most popular programming languages 10 years from now
  • We provided a cheat sheet of terms related to programming languages

We hope you found this executive summary useful! If you have any questions, please feel free to reach out to us.

Learn more about how The Gnar builds software.

Interested in building with us?