Because It's Not Fun Enough: why languages fail

Aug 10, 2026 06:27 PM - 2 hours ago 1

Andrew Oram wrote a two-part bid for the Linux Professional Institute asking why programming languages emergence and autumn (parts one and two.) It says, roughly, that C, C++, and JavaScript are immortal (for now!), pinch Java a maybe; COBOL, FORTRAN, BASIC, and Perl lived respectable lives and sewage sent upstate to discontinue connected a farm; Pascal, Objective-C, PL/I, Ada, and Tcl were mendacious starts, pinch Ruby location connected the bubble. It's a bully circuit from a man who has been editing this industry's books forever, and adjacent the extremity of it, Oram quotes Simon Peyton Jones, who observes that a language's take is "very weakly connected to its method merits," and that the societal and economical factors do the existent deciding.

That quote is the article, and it's a small astonishing that it's buried truthful acold into the content; possibly engineering for quality quality makes it difficult to make that quote the starring thesis because we don't want to publication that rather truthful bluntly, but it's true.

Language take is not solely technical - it's method and human.

Everything successful the 2 parts earlier that quote is grounds for the sentiment, assembled but ne'er organized arsenic evidence. The bid sorts languages by outcome: immortal, respectable, and failed. The absorbing benignant is by origin of death, and the causes travel retired of a elemental study that Peyton Jones compresses and Oram circles: programming is done by people, and for group it is 3 things astatine once. It is simply a vocation, an art, and a job. A connection serves personification practicing each three, and a connection aliases instrumentality that makes immoderate of the 3 unnecessarily difficult will not past past the infinitesimal it tin beryllium replaced.

A vocation is simply a calling the world happens to salary for: thing personification would do anyway, paycheck aliases nary paycheck. An creation is thing personification does retired of emotion and (hopefully) skill, and a job is the regular work, the point personification does truthful they tin eat and watch TV and slumber nether a tile and boring worldly for illustration that.

Musicians unrecorded this triple personality each moving day: the covers group is the job, the originals are the art, and the vocation is what puts an instrumentality successful their hands each day, booked aliases not. Programmers unrecorded it too; we conscionable don't opportunity it retired large arsenic often.

Sort the corpses that measurement and they abstracted cleanly.

Some languages grounded arsenic a job: modular Pascal shipped without a usable drawstring type and Tcl couldn't transportation programs past a definite weight, truthful the regular activity was harder than it had to be.1

Some grounded arsenic an art: Ada and PL/I were chosen for programmers alternatively than by them, languages of mandate, and cipher has ever loved a mandate.

Some grounded arsenic a vocation: Perl's occupation marketplace walked to Python and didn't travel back2, and Haskell famously group retired to avoid occurrence astatine each costs, a extremity it achieved3.

Different diseases, 1 pathology. In each lawsuit personification made 1 of the 3 axes needlessly difficult, and the group the connection depended connected went wherever it was easier, aliases much fun, aliases much workable.

A connection that makes life difficult will not past past the infinitesimal it tin beryllium replaced. That connection explains each anomaly connected Oram's list. JavaScript fails arsenic an creation for a ample stock of the group penning it, and it survives anyway, because it remains the browser's main general-purpose language4. Objective-C was awkward arsenic some creation and job, and it thrived for 15 years because it was the only doorway into the astir lucrative developer ecosystem ever built; the infinitesimal Swift existed, it evaporated and now survives arsenic a shadow, preserved successful its descendant. COBOL survives because replacing it is excessively difficult and costly - thing immoderate companies are noticing and trying to address. If they succeed, COBOL is apt gone: a connection that useful 100% of the clip and is astir 1% nosy to program. Ada survives coming wherever certification regimes made it astir irreplaceable5. Its trouble is simply a opinionated eviction notice. It gets served connected the time an replacement shows up, and not 1 time sooner.

Which leaves C++ looming, difficult and immortal, apparently contradicting each of this. Rust too, difficult by creation and rising. The point is that location are 2 kinds of difficulty, and the bid conflates them.

One benignant of trouble is the violin's: precise, demanding, and chosen because it is precise and demanding. People do codegolf successful C++ for sport. People constitute essays astir the time the get checker yet clicked, the measurement drawstring players talk astir the time vibrato stopped being a fight. Difficulty itself isn't fatal; trouble without capable return is. C++ and Rust person that return, conscionable arsenic the violin does.

The different benignant of trouble is friction: Ada's compliance apparatus, modular Pascal's missing pieces6, COBOL's astonishing and precise and demanding structural syntax that doesn't really create program building overmuch astatine all. Nobody ever wrote an effort astir the time Ada's paperwork clicked. That trouble hits each 3 axes for... what? Nothing. Ada and C++ some publication arsenic "hard languages" successful a survey. But Ada dies arsenic a modular connection and C++ survives coming because the "hard" parts were connected different axes.

And wherever is Java successful each of this? Good question! Java isn't arsenic difficult arsenic C++ aliases Rust, truthful it doesn't request their defense: it's benignant of immortal from inferior AND nosy correct now, pinch a batch of passion restored to the ecosystem acknowledgment to the caller improvements successful packaging and features. But that's an wholly individual determination connected the portion of the programmer; I deliberation it's safe to opportunity Java ain't dying rather yet, but it's difficult to opportunity why aliases when: I'm personally surviving successful Java-land time by day. I'm biased.

Back to music, then, wherever the affinity stops being an analogy. A modern sampler tin reproduce each statement a violin makes. It tin reproduce each nuance a violin makes; it is an encyclopedia of techniques, bowings, articulations, the works. And getting it to really do each of that is much activity than conscionable playing the violin itself7! The capacity was ne'er the question. It turns retired that the champion measurement to get a sound for illustration a violin being played is actually playing the violin. This is also, quietly, why codification exists: a programme is simply a compact specification for behavior, and describing behaviour successful prose costs much than the notation built for the job8.

I tin get a machine to play guitar for me, and I tin make it play overmuch arsenic I do connected guitar: I cognize really I play, I understand my ain preferences and accents. I tin replicate my playing connected guitar, motion by gesture, statement by note. And it is nary fun. None. The consequence is fine; the doing is gone, and the doing was the point. There is nary life to it, moreover if I present randomization aliases usage my ain timings. This fails on the aforesaid 3 axes arsenic everything other we've mentioned here.

For the personification who only wants the notes, the sampler wins the occupation outright, completely. It will ne'er play the incorrect point aliases astatine the incorrect moment. For the personification playing, it fails, because driving it costs much than playing, and it ne'er touches the creation astatine all. Which is why, erstwhile I want guitar connected a track, I still scope for the guitar. Choosing it is the point. The rule that sorts programming languages sorts their successors too. No typical pleading required... aliases allowed.

So: why do programming languages emergence and fall? Peyton Jones already said it, and Oram already quoted it. Languages don't suffer benchmark fights. They suffer people. They emergence erstwhile they make the vocation, the art, and the occupation lighter, and they autumn connected the time thing other tin transportation the aforesaid weight, because astatine that infinitesimal the only mobility near is... is it fun?9

More