~/langs $ python3 main.py // ModuleNotFoundError: No module named 'venv'
FPYTHON
the summoner · executable pseudocode, shipped to production anyway
[01] ORIGIN
Guido van Rossum built a scripting language for beginners and sysadmins over a Christmas holiday. It was never supposed to carry your bank.
Released in 1991, named after Monty Python, designed for readability above everything: Python is the best on-ramp computing has ever produced, and that is a genuine achievement worth defending. The tragedy is scope creep. The teaching language became the scientific language (because scientists aren't programmers), became the AI language (because the scientists were already there), became the backend language (because the AI was already there). Each step made local sense. The sum is civilization-critical infrastructure running on a language whose own creator spent years saying it was never meant for that.
| creator | Guido van Rossum, 1991, over a Christmas break |
| paradigm | dynamic everything; types are a suggestion |
| memory | GC'd, refcounted, GIL-guarded: one core does the work |
| deps | pip, venv, conda, poetry, pipenv, uv: the hydra |
| famous users | every scientist, every ML lab, every five-line script that became a service |
| my use | reading other people's ML scripts, then rewriting the hot path |
[02] WHAT IT GETS RIGHT
Nothing gets a human from zero to "I made the computer do a thing" faster, and nothing else is close. Millions of people program at all because Python existed. Full credit, sincerely.
numpy, torch, the entire scientific stack: Python wins every fight by calling something written in C, C++ or CUDA. The summons are legendary. The summoner is level 1, and the gap between those two facts is the whole argument.
As glue between real systems it's honestly great: ten lines, no ceremony, no build step, job done. The 50-line script niche is legitimately Python's, and it should keep it.
Poke the problem until it confesses. For exploration, one-off analysis and "what does this API actually return", the loop is genuinely hard to beat.
http server, sqlite, json, csv, zip, email, all in the standard library. The stdlib is the one dependency story Python got right: it ships with the interpreter and nobody can unpublish it.
Sitting on every Linux box, every Mac, every server you'll ever ssh into. Zero-install reach is a real superpower, even when it's the distro's copy from 2021.
[03] THE CODE
def transfer(amount, source, dest): """Move money. What could go wrong.""" source.balance -= amount dest.balance += amount # pray both are numbers # readable? beautifully. genuinely the best in class. # enforced? the type hints version looks like this: def transfer(amount: Decimal, source: Account, dest: Account) -> None: ... # and at runtime python treats those hints exactly like # this comment: decoration. mypy is optional, the 3am # TypeError is not.
Both versions run identically. That's the indictment in two functions: the readability is real, and so is the fact that nothing checks anything until production does.
[04] THE BAD
// status effects
- 1 SPDslow in the way that makes you check if something is broken. The benchmark didn't hang; it's just Python. Fifty to two hundred times off the pace is normal and everyone has agreed not to mention it.
- GIL STUNthirty years of making your other fifteen cores decorative. Free-threading is finally arriving, decades after the hardware did; the libraries will follow sometime after that.
- PACKAGING HYDRApip, venv, conda, poetry, pipenv, now uv. Cut off one head, two more package managers appear, and "works on my machine" is still the deployment story. PyPI's rap sheet does not help.
- COSMETIC TYPEShints that nothing enforces. Every large refactor is a prayer with CI attached, and the prayer is to a type checker someone disabled in 2023 because it was noisy.
- WHITESPACE AS SYNTAXthe one design decision you cannot escape, grep around, or autoformat your way out of. A matter of taste, and mine has spoken.
- PRODUCTION TRAPPython doesn't suck at being Python. It sucks because we keep shipping production systems in a teaching language, and the language cannot stop us.
[05] VERDICT
F tier, and it earned the letter on merit: the best beginner language in history, promoted catastrophically beyond its rank.
Use it for what it was built for: learning, fifty-line glue scripts, poking at data in a REPL. The moment the script grows a second file and a deploy target, that's the signal: hot paths and servers belong in Odin, anything holding keys belongs in Rust, and the model will happily write either, dependency-free. The kindest thing you can do for Python is stop asking it to be a systems language. It never volunteered.
// import this: "simple is better than complex." the zen was right. the deployment story didn't read it.