Settings

Theme

Ask HN: Why did Python fail to evolve?

6 points by fud101 a month ago · 6 comments · 2 min read


I was listening to an old podcast (because all the current ones are obsessed with the AI) and they compared Python to Javascript. At the time and even now that comparison made sense. They're both considered general purpose languages even though they originated as specialized languages, one for the browser and the other for the Unix shell. However Javascript has evolved much better than Python. It has a rigorous standard document in EC6+ which means you can have multiple compatible implementations. It has evolved functional programming features like arrow functions, map and reduce etc are actually ergonomic and idiomatic in modern JS but avoided in Python which clings to destructive loops and assignment. JS has embraced immutability as a core concept while Python has defied it even well into 2025 when languages like Java and Rust have made it an established, mainstream concept. Python has bolted on asyncio but it remains underappreciated and hard to use compared to Javascript and C#. Typescript has given static typing benefits to JS but Python still drags its feet with multiple incompatible typing efforts, none really taking off in a big way, due to Python itself not having much of an opinion on it.

If my assessment is unfair, i'd like to hear about it but from my perspective Python has failed to evolve and we can see that clearly in the path Javascript has taken in the same amount of time, it's evolved into a much better language.

turtleyacht a month ago

Javascript is bundled in web browsers, which is a huge leg up for immediate deployed capability. There might have been massive pressures to evolve the language versus Python.

There's also the minutiae of Python being more exposed to the operating system. The browser is installed, but Javascript was effectively sandboxed. So there was less consideration for "binary incompatibilities" or "system-level details" for Javascript as with Python.

Think Python is in a nice place where the libraries and packages support the current trend (AI) but remains an approachable language. Tools like uv help smooth over package management, which seemed like a challenge before (venev, wheels, CPython).

Python could evolve on several fronts: developer ergonomics, performance, language research, and hardware (shaders). Unfortunately, it may have to balance backward-compatibility like Raku and Perl5: whether to try a clean break (2to3) or gradually consolidate stdlib (naming).

It may also be "good enough," and maybe there are more language users than there are language researchers.

  • fud101OP a month ago

    > It may also be "good enough," and maybe there are more language users than there are language researchers.

    I think you are right. Python steering council seems to consist people who are closer to users than capable language designers. I don't see anyone there who has published any research article or code that would suggest they're even aware of modern PL developments. This might simply be a result of Python being a volunteer based movement unlike say TS which attracted funding from industry giants like Microsoft? But i'd still think Python could attract talent despite this. The fact that Guido stuck around til 2018 didn't help things either.

    • turtleyacht a month ago

      > capable... aware

      Assuming a polyglot perspective and Python installed on the OS, folks could reach for different tools as needed: bash, C, Java, etc. Some problems are "easier" or "better" to express in one language than another.

      Python as a language was less needed than Python as a scripted executor of OS syscalls (libc) via software packages.

      For Javascript, there's no other language on the browser. Before tools emitting Javascript (Elm, Babel, etc), "everything" had to be written in one language only, so lots of things were tried at the syntax level.

      Since it was "only" Javascript, folks could get creative within those constraints. Then we see programming concepts as design patterns: IIFE, OO with prototypes, callbacks, and such. Just iteration after iteration of concepts on the same platform, exploration, refinement, and remixing.

      With Node.js (IIS was Windows-only), now the culture of syntax flexibility could be applied on the backend; isomorphic Javascript could be realized. Server-side needing to be robust, we see Typescript having an in.

      There's no reason we couldn't have an ACID-compliant browser running Python applets, but it would have to be a subset of the language with strong security guarantees, and Javascript already has so much momentum.

st3fan a month ago

This assessment seems to be completely upside down :-)

nacozarina a month ago

that whole v2-v3 transition python went through gave us the vibrant bloom of dialects we enjoy today; is that not evolution?

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection