Skip to content

Instantly share code, notes, and snippets.

@MostAwesomeDude
Created December 10, 2020 11:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save MostAwesomeDude/b9264288abd533039a64d3b242998c19 to your computer and use it in GitHub Desktop.
Save MostAwesomeDude/b9264288abd533039a64d3b242998c19 to your computer and use it in GitHub Desktop.

TIOBE's historical data isn't freely publically available, so I may be wrong in my analysis. Garbage in, garbage out.

The list of languages from 2017, AIUI:

  • Assembly
  • C
  • C++
  • C♯
  • Delphi/Object Pascal
  • ECMAScript
  • Java
  • PHP
  • Python
  • VB .NET

The methodology can be gamed by search engine manipulation, sadly, but hopefully not badly enough to invalidate the results.

TIOBE methodology: https://www.tiobe.com/tiobe-index/programming-languages-definition/

The list for 2018:

  • Assembly
  • C
  • C++
  • C♯
  • ECMAScript
  • Java
  • PHP
  • Python
  • SQL
  • VB .NET

And for 2019:

  • C
  • C++
  • C♯
  • ECMAScript
  • Java
  • Objective-C
  • PHP
  • Python
  • SQL
  • VB .NET

There are reasons for this. First, let's examine another survey, the Stack Overflow survey. First, 2017. https://insights.stackoverflow.com/survey/2017 What were the top ten used languages?

  • C
  • C++
  • C♯
  • ECMAScript
  • Java
  • PHP
  • Python
  • Ruby
  • SQL
  • TypeScript

And the top ten desired languages?

  • C++
  • C♯
  • ECMAScript
  • Go
  • Java
  • Python
  • Ruby
  • Rust
  • Swift
  • TypeScript

2018 top ten used languages, filtering for TIOBE criteria?

  • Bash/Shell
  • C
  • C++
  • C♯
  • ECMAScript
  • Java
  • PHP
  • Python
  • SQL
  • TypeScript

And desired?

  • C++
  • C♯
  • ECMAScript
  • Go
  • Java
  • Kotlin
  • Python
  • Rust
  • Swift
  • TypeScript

2019?

  • Bash/Shell
  • C
  • C++
  • C♯
  • ECMAScript
  • Java
  • PHP
  • Python
  • SQL
  • TypeScript

Wanted?

  • C++
  • ECMAScript
  • Go
  • Java
  • Kotlin
  • Python
  • Rust
  • SQL
  • TypeScript
  • WebAssembly

Now, the fun part. In order for a language to become popular enough to make the wanted list, it has to be at least a few years old. Even exponential growth is slow in the beginning! It took Kotlin and Rust about 7yrs each from first release to making the wanted list, and both languages were explicitly designed to occupy other languages' niches, with Kotlin aiming at Java and Rust meant to replace C++.

Speaking of niches! What are the niches? Here are the niches for these popular TIOBE languages:

  • Low-level kernel and driver code. This is the domain of Assembly and C, without question. Some other languages can survive here, like Rust and C++, but Assembly is native.
  • Low-level userland code. This is where speed weenies, computational scientists, and game authors do their work. C++ is the gorilla in this niche, although it classically belonged to Fortran. A surprising amount of Java is here, by ability, and Objective-C, by necessity. Go is often found here, replacing C as a matter of design.
  • Apple. Apple monopolizes the software markets around their hardware, forcing people to use Apple-approved languages. Objective-C and Swift are the languages of choice here. C is sometimes allowed but never approved of.
  • Additionally, Windows. VB .NET is only found on Microsoft-owned platforms. A great deal of video games are written with C♯. This may be the platform where all of those Pascal and Object Delphi users are, too.
  • Bottom-of-the-barrel Web hosting. PHP invented this niche and has never stopped dominating it. Python can often be seen here, too.
  • Web applications. ECMAScript invented this niche, and while it still remains strong, relatives like TypeScript and WebAssembly are becoming more popular.
  • Enterprise Web backends. Java, Python, Ruby, and Go are all strong here.
  • Databases. SQL is still it, after all these years.
  • Glue and business logic. Lots of Python and Ruby here, although the whims of the business often override technical concerns, and just about every language has been seen doing business logic.

In ten years, what new niches will have evolved?

  • Low-level blockchain. If this really does pan out, then expect Pyramid Scheme or Solidity to spawn a series of copycat languages which focus on formal verification and compile-time restrictions within tiny restricted virtual machines.
  • High-level blockchain. If this really really does pan out, then expect a modern flavor of E (but not Monte) or ECMAScript to manifest on the blockchain. These languages would focus on capability safety, agoric parallelism, and smart contracts.
  • Mid-level userland parallelism. Intel's chokehold on the x86 market is slowly dying with the rest of Intel, and everybody else seems to understand that dozens of cores are coming, followed shortly by hundreds of cores. We don't yet know what makes a language good for parallelism, but we will find out, for sure. Still, this could be made entirely pointless as the popular languages find ways to automatically parallelize most code under most situations, removing the opportunity for new languages to distinguish themselves here.
  • Statistical analysis. There's an entire field of languages like BUGS and STAN designed to express statistical models. Beyond that, languages from Fortran to Python have been used to build neural networks, decision trees, support vector machines, and other classifiers. This will only become more popular as corporations turn to ever-more-automatic tools of oppression.
  • High-level specification. Right now, the highest-level specification languages available might be TLA+, Coq, Cryptol, or Metamath. These tools can generate proofs and code, but only under extremely specialized and restrictive conditions. A general-purpose theory of specification and proof has still eluded us, and whichever theorist finds it will found an entirely new way of programming.

So, I predict that in 2027:

  • C is still the language that Linux and the BSD kernels, including OSX, are written in. The typical POSIX userland has a mix of C, Rust, and Go tools.
  • C++ is still the language of choice for game developers. The sense of machismo around the language has decreased as the language's core libraries have become richer and more helpful.
  • C♯ is Microsoft's preferred language for their new gaming, multimedia, office, personal, and family platform. VB .NET and F♯ are still around, but C♯ is still preferred due to network effects, with popular game engines and interface toolkits offering C♯ support.
  • ECMAScript still dominates. Indeed, as predicted in "The Birth and Death of JavaScript", ECMAScript is the most popular language on the planet by any conceivable metric. (It still doesn't have integers.)
  • Kotlin has replaced Java as the language of choice for enterprise developers. Due to its friendly syntax, it peels some backend developers away from Ruby, Python, and Go.
  • Java is still around, mostly as an implementation language and low-level library for the virtual machine bearing its name.
  • PHP is still not a good language. However, PHP never stopped improving, even if those improvements were in strange directions. The sense of machismo around the language has increased as the difficulty of writing clear and obvious code has skyrocketed.
  • Python is beloved. It has evolved many times, but its sense of community has never wavered.
  • Swift has killed off Objective-C.

And there's room for one more. Go? Rust? I'm not sure!

Anyway, this is my prediction, and it clearly conflicts with Breck's.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment