JavaScript Runs the World—Maybe Even Literally

Posted by

Lex Fridman has done many long interviews on his popular podcast. Even so, the episode with the legendary programmer John Carmack has an unhinged director’s-cut feel to it. Over five hours, Carmack dishes on everything from vector operations to Doom. But it’s something Fridman says, offhand, that really justifies the extended run time: “I think that if we’re living in a simulation, it’s written in JavaScript.”

To review: JavaScript is what makes static web pages “dynamic.” Without it, the internet would resemble nothing so much as an after-hours arcade, lifeless and dark. These days, the language is used in both front- and backend development for a whole host of mobile platforms and apps, including Slack and Discord. And the main thing to understand about it, in the context of Fridman’s nerdy koan, is this: For any self-respecting programmer, admitting to actually liking JavaScript is something of a faux pas—much like an art-house filmmaker confessing to Marvel fandom.

I suppose this has something to do with the fact that JavaScript was created in less time than it takes to home-brew a jar of kombucha: 10 days. In 1995, Netscape hired a programmer named Brendan Eich to create a language to embed in its browser, Netscape Navigator. Originally called LiveScript, the language was renamed JavaScript to piggyback on the hype around an unrelated language called Java, which had been introduced earlier that year. (Asked the difference between Java and JavaScript, a programmer is likely to joke: “Java is to JavaScript what car is to carpet.”) To this day, few people consider JavaScript a particularly well-designed language, least of all Eich. “I perpetrated JavaScript in 1995,” he once said, “and I’ve been making up for it ever since.”

What was his crime, exactly? You can easily find scads of blog posts, memes, and Reddit threads sandbagging JavaScript, but my favorite is a four-minute talk by software engineer Gary Bernhardt titled “Wat.” Imagine, for starters, showing a group of non-English speakers the present and past forms of verbs like boil (boil/boiled) and chew (chew/chewed). Then, when you ask them for the conjugation of eat, who could blame them for answering eat/eated? Similarly, the “Wat” talk is a blooper reel of JavaScript’s quirks and unpredictable behaviors. Let’s say you want to sort a list of numbers: [50, 100, 1, 10, 9, 5]. Calling the built-in sort function in any sane language returns the list in numerically ascending order: [1, 5, 9, 10, 50, 100]. Doing so in JavaScript returns [1, 10, 100, 5, 50, 9], where 10 and 100 are considered larger than 5. Why? Because JavaScript interprets each number as a string type and does lexical sorting, not numerical sorting. Total insanity.

When Fridman says JavaScript runs the world, in other words, what he means is that our world is, like the underlying source code, massively screwed up and incomprehensible. It’s the equivalent of pronouncing, with a sigh, that considering the sorry state of the planet, the Universal Declaration of Human Rights must have been written in Comic Sans.

At this point, I should confess that while JavaScript is not my favorite language, I like it. Adore it, in fact. So I can’t help but feel a flare of disapproval whenever a certain fraternity of programmers polemicizes against it. Often they focus on flaws that were dealt with years ago. To dwell on JavaScript’s original shortcomings is to overlook the fact that any piece of software—and every programming language is, in essence, a suite of software—is amenable to revision and improvement.