The Big Four Languages revisited
A while ago, I wrote about the Big Four languages - JavaScript, Python, Java, and Go - that were consolidating attention in software development. Four years later, I’m curious how the Big Four has changed.
Reviewing the landscape 1 2 3 4 5, it looks like the top three languages (JavaScript, Python, and Java) have stayed the same. However there are a couple of interesting developments: the rise of Rust and the wane of TypeScript and Go.
Rust has easily been the breakout story over the last four years. It has been adopted by Microsoft and Linux. It’s being used by DARPA and mentioned by the White House. It has repeatedly held the title as “the most desired” programming language according to Stack Overflow. It’s the top language where developers are migrating, according to JetBrains. It has the fastest increasing number of contributors according to GitHub. In short, Rust is growing.
The Rust story is even more impressive considering it’s a complex language with a strong-minded community. I wonder if a “Kotlin for Rust” - a friendlier sibling of the language - would help Rust adoption go beyond the hard core of software engineers. Since several organizations are migrating their C/C++ codebases to Rust, developer experience at the high end might improve organically anyway. A world where major commercial operating systems, video games, and mission-critical programs are written in Rust seems possible in time.
Meanwhile, the JavaScript ecosystem is undergoing significant changes. Node.js is now 15 years old and showing its age. Years of slow builds and complex toolchains created demand for integrated, simpler alternatives. New runtimes, such as Deno (2018) and Bun (2021) promise to simplify developer experience and improve performance. Some think that Rust is the future of JavaScript infrastructure and there actually is a growing collection of Rust tooling for JavaScript. Notably, while Deno was originally written in Go, it now uses Rust (Bun is written in Zig).
As for TypeScript, its growth was explosive four years ago, but is much more muted now. TypeScript originally grew at JavaScript’s expense and now that migration momentum has ended, a slow decline has apparently started. Some projects (like Svelte and Turbo) have also reduced their use of it after extensive experience. It’s unclear what will drive the future growth of TypeScript.
Go has a similar story to TypeScript. After impressive growth from 2015 to 2020, it’s leveled off and now occupies a stable place on the leaderboards. Several teams - InfluxDB, Dropbox, and Discord - have rewritten Go projects in Rust, typically to improve memory management. Its proximity to Google and opinionated philosophy likely hasn’t helped (hard to imagine Microsoft or Amazon investing in a competitor’s language).
Python and Java haven’t experienced any big changes. Actually, Python is on track to being number one in the Big Four, a spot currently held by the JavaScript + TypeScript duo. Recent developments in generative AI likely cemented its place as the go-to language for the next generation of applications, given its strong presence in machine learning and data science. As for the Java ecosystem, it successfully modernized by making Java 17 (2021) its most widely deployed LTS version and by shifting away from the Oracle JDK due to recent licensing restrictions.
What about languages outside of the Big Four? Last time I wrote about the “Small Four” as the languages that keep programming interesting. Now I view the Small Four as languages both utilitarian and foundational: C, Lisp, SQL, shell. These four were always good to know and will likely be useful in future decades. On the modern side, I’m surprised WebAssembly hasn’t had a major impact yet - I expected many generic libraries as WASM modules at this point (likely written in Rust). The promising alternative languages of four years ago - Kotlin, Swift, and Dart - are stalling out. Zig seems interesting, though time will tell if it will stick around.
The Big Four looks the same four years later, but it won’t stay that way. Though the gravity of the Big Four has only increased in recent years, it will continue to evolve. So what’s likely to change? Python could replace JavaScript as #1 soon and Rust could replace Go as #4 in the long term. The Big Four will shuffle around, though it will remain the core of commercial software development for years to come.
P.S. I thought Fred Ross’s The seven programming ur-languages was a great conceptual complement to the Big Four, a good reminder that the popular languages are only a small part of the programming landscape.