Skip to content

Instantly share code, notes, and snippets.

@breck7
Forked from MostAwesomeDude/tiobe.md
Last active December 20, 2020 16:35
Show Gist options
  • Save breck7/2220c6b6a3890af2c0a031531b4b1ae3 to your computer and use it in GitHub Desktop.
Save breck7/2220c6b6a3890af2c0a031531b4b1ae3 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. i know, it's too bad, it's such a great list! I bet they change that someday.

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! very good point. 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. lol, everytime I use TS I first write type Integer = number)
  • 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.

I think this is a really good analysis. Two inputs to my model that are lacking here is that 1) I think all of these languages will still be around and thriving in 2027, the difference is they will all be more like the assemblies of today, (we have ~300,000 people working with assembly but 99% of the programming population stays in high level lang land). 2) Imagine if the 1B+ low-code ("aka no-code"—but a misnomer IMO) users come into the fold, with the introduction of domain specific Tree Languages that compile to these targets, those new entrants will dwarf the current number of ~30M programmers in the world. That's of course probably the key input to my calculations, and of course there is the possibility that TIOBE wouldn't recognize new entrants, but I think they would, as VB is in there. And nowadays getting to 1B users in just a few years with well designed products is possible, and I think some Tree Languages will do that.

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