Skip to content
Rutger Hemrika
Menu
← Blog

Programming languages in the AI era · 3/8

The Python Paradox: Best-in-Class AI Ecosystem, Mid-Pack Overall Score

Rutger Hemrika8 min read

Originally written for the programming-languages-ai-era research project.

The Python paradox

Python is not the language I expected to land at #5. Walking into the framework, I assumed the language with the deepest AI-systems ecosystem in the cohort — the one every model-provider ships first-party SDKs for, the one that owns the data-science pipeline, the one running in every notebook on every research desk — would settle near the top. The matrix put it at 3.71, tied with Rust, behind TypeScript, Go, .NET, and Kotlin. The reason is not that the ecosystem story is wrong. The ecosystem story is exactly right: AI-Systems Ecosystem score 5.0 and Structured-Output Ecosystem score 5.0, both alone at the cohort ceiling on the ecosystem halves with only TypeScript matching either. The score is held down by a different half of the row — by what Python’s steward does not ship, by what its type system does not enforce, and by who maintains the libraries the AI half depends on.

The decision implication for a senior reader: Python remains the right default for ML, data, and AI prototyping work. For production AI-application work where the steward-shipped surface and the dependency-risk profile matter more than ecosystem breadth, I say reconsider, and here is the case.

The bimodal profile, in numbers

Human cognition4.0Machine cognition3.0AI-agent operability4.0Runtime and ecosystem5.0Strategic viability4.0AI-systems native1.5AI-systems ecosystem5.0Structured-output native2.5Structured-output ecosystem5.0Ecosystem dependency risk2.5Reachability to top tier3.5Python: weighted total 3.71
Scores of Python per dimension, framework v0.6. Half points on a five-point scale.

The Python row reads as two separate languages stitched together.

Cell Score Reading
HC — Human Cognition 4 readable, governable
MC — Machine Cognition 3 dynamic typing, PEP 484 advisory
AO — AI-Agent Operability 4 pyright + Pylance + uv
RE — Runtime/ecosystem 5 the deepest production ecosystem in the cohort
SV — Strategic Viability 4 sustained Python Software Foundation stewardship, top GitHub language
AIN — AI-Systems Native 1.5 the PSF ships no AI packages
AIE — AI-Systems Ecosystem 5.0 OpenAI, Anthropic, LangChain, LlamaIndex, Hugging Face Transformers
SON — Structured-Output Native 2.5 PEP 484 hints unenforced at runtime
SOE — Structured-Output Ecosystem 5.0 Pydantic, Instructor, Outlines
EDR — Ecosystem Dependency Risk 2.5 alone at the cohort floor
RCH — Reachability to Top Tier 3.5 sustained typing-PEP cadence, AIN steward-blocked
Weighted 3.71 rank #5

Read the row two ways. Read AIE and SOE alone and Python is the cohort leader, tied with TypeScript on both ecosystem halves. Read AIN, SON, and EDR alone and Python sits with C++ and Elixir. The weighted total averages the two halves into 3.71, tied with Rust, behind a four-language top tier compressed inside 0.16 of weighted score (TypeScript and Go at 4.01, .NET at 3.99, Kotlin at 3.85).

The interesting strategic fact is not that Python loses to TypeScript or Go on the total. It is that the half of the row that loses is the half senior teams pay least attention to.

Aristotle would call it a golden mean gone wrong: Python is not balanced, it is excellent and exposed at the same time, and averaging the two hides both.

The native gap

The Python Software Foundation does not ship AI packages. That is a stewardship-level decision, not a community gap.

Look at what other stewards have shipped in the same window. Microsoft ships Microsoft.Extensions.AI, Semantic Kernel, the MCP C# SDK with Microsoft co-maintenance, ONNX Runtime .NET, and JsonSchemaExporter — all in the .NET 9 distribution timeframe. Apple ships Core ML, MLX, and Foundation Models in the Swift toolchain. JetBrains funds Kotlin language and tooling out of a commercial product line. The Go team ships encoding/json with the standard library and signs the canonical SDK contracts via Anthropic’s official Go SDK and OpenAI’s official Go SDK. The PSF ships no analogous first-party AI surface and has signaled no intent to. The steward’s posture is on the record, not commentary.

Every AI-systems primitive in the Python ecosystem sits one layer outside the language distribution. OpenAI’s Python SDK is OpenAI-stewarded. Anthropic’s Python SDK is Anthropic-stewarded. LangChain is community plus commercial-third-party. LlamaIndex is small-commercial. Hugging Face Transformers is Hugging Face. The PSF curates cpython and the standard library; AI does not enter that surface. The same pattern repeats on the structured-output half: PEP 484 type hints are advisory at runtime by design, and Pydantic does the runtime validation that PEP 484 deliberately does not. Structured-Output Native sits at 2.5 because the language-shipped surface stops at the type hint.

The gap is not a community failure — Python’s AI community is the largest in the cohort. The gap is that the steward’s responsibilities and the AI-application surface do not overlap, and I score them as two halves for a reason.

This is wrong if the PSF reverses position and adds a first-party AI module to the Python distribution. Or if a vendor-shipped first-party Python LLM SDK becomes the de facto standard with PSF-equivalent stewardship status. Neither has been signaled.

The dependency-risk profile

Python’s Structured-Output Ecosystem score of 5.0 rests on three named libraries: Pydantic, Instructor, and Outlines. Each carries a different stewardship profile, and each contributes differently to the EDR=2.5 score.

Pydantic is maintained by a small group of active contributors — none employed full-time on the project, none backed by a commercial vendor. Better than single-maintainer, worse than commercial-vendor-backed. The maintainer count is small enough that a coordinated departure would matter. Pydantic v2’s Rust core (pydantic-core via PyO3) is itself a multi-language supply-chain artifact — load-bearing, fast, and resting on the same small group of maintainers who own both the Python and Rust halves. If two of them step away, the project’s velocity collapses.

Instructor is single-maintainer (Jason Liu). The library is the de facto standard for structured-extraction patterns over OpenAI and Anthropic APIs. A bus-factor event on Instructor leaves the structured-extraction pattern in the hands of every team that built on top of it, with no first-party fallback.

Outlines is small-commercial. The library carries the constrained-decoding work that pairs LLMs to a JSON schema or a regex — sophisticated work, not easily replicated, and resting on a commercial entity smaller than the load it carries.

Three load-bearing libraries. One community-multi-maintainer, one single-maintainer, one small-commercial. Aggregated into Python EDR=2.5 — alone at the cohort floor on EDR, with no other language sitting below 3.0; the next-lowest are TypeScript, Elixir, and C++ tied at 3.0. The contrast with .NET (EDR=4.5, Microsoft-stewarded, alone at the cohort ceiling) and Kotlin (EDR=4.0, JetBrains-stewarded) is the structural point: same ceiling on the ecosystem half, different backer mix underneath.

Senior teams already think this way about cloud-vendor concentration — multi-region, multi-account, exit-cost analysis. The same lens applies to library stewardship, and almost no team applies it to the Python AI stack. The strongest objection is “Pydantic is too important to fail.” History says important community projects fail anyway, and the failure mode is not collapse — it is a multi-month hibernation in which security fixes lag and the ecosystem layered on top has nowhere to land its bug reports.

This is wrong if Pydantic adds three or more active maintainers by 2027-05-02. Or if Anthropic and OpenAI ship first-party schema-validation primitives that supersede Instructor and Outlines for the load-bearing case. Either move resets the EDR score.

What would lift Python to top tier

Three concrete moves would lift Python’s weighted total measurably, and the framework is falsifiable on the closing path.

The PSF ships a first-party AI module. AIN moves from 1.5 toward 3.0 or 3.5. The weighted total moves up roughly 0.1–0.2. Probability inside the planning horizon: low. No public PEP, no working group, no funded effort.

Pydantic governance broadens — three or more active maintainers, a recurring release cadence, a documented funding model. EDR moves from 2.5 toward 3.0 or 3.5. Weighted total moves up roughly 0.05–0.1. Probability: moderate, since Pydantic is funded indirectly through commercial backers.

A runtime-enforced typing PEP lands — not gradual typing, not optional checking, but type hints runtime-validated for declared boundaries. SON moves from 2.5 toward 4.0. MC from 3 toward 4. Weighted total moves up roughly 0.15–0.25. Probability: low. It contradicts the PEP 484 stance that hints are advisory by design.

Combined, the three moves are worth roughly 0.3–0.5 weighted points — enough to move Python into the top tier. None are out of the question. None are likely inside 18 months. This is wrong if the PSF announces an AI-systems working group with a named steward and a funded module roadmap before 2027-05-02.

The strategic read

For CTOs, the Python question splits along workload. For ML, data, and research, Python is the right default — the AI-systems ecosystem (OpenAI Python SDK, Anthropic Python SDK, LangChain, LlamaIndex, Hugging Face Transformers, PyTorch, scikit-learn) is structurally deeper than any other language’s, and the AIN gap matters less where the ecosystem is the binding constraint. For AI prototyping in notebooks, Streamlit, or Gradio, the same default holds: dependency-risk exposure is not load-bearing on a prototype.

For production AI-application work — long-running services, stable APIs, multi-team deployment, enterprise-grade dependency hygiene — I say reconsider. The AIN=1.5 (cohort-floor) / EDR=2.5 (also cohort-floor) profile is the wrong shape for a 5-year platform bet that needs steward-shipped guarantees underneath the load-bearing layer. TypeScript at 4.01 (joint cohort-leader on weighted total) carries the same AIE=5.0 / SOE=5.0 ceiling with a Microsoft-stewarded language and Vercel-plus-Anthropic-plus-OpenAI commercial-vendor velocity. .NET at 3.99 (third in the cohort, 0.02 behind the leaders) carries a Microsoft-first-party stack with EDR=4.5 (alone at the cohort ceiling). Both are stronger production-AI bets on the cells the load rests on.

The decision is not “Python or not Python.” It is which workload class dominates the next five years. Pick Python for ML and TypeScript or .NET for production AI services and you are reading the row correctly. Default Python across both and you are betting the ecosystem half compensates for the native and dependency-risk halves. I read the data as showing it does not.

Closing

Python’s AI ecosystem is the cohort’s deepest. The framework still ranks it #5, because the steward-shipped half and the dependency-risk profile carry weight the ecosystem half cannot offset. Pick Python where the ecosystem is the binding constraint, and reconsider where it isn’t.

Subscribe at rutgerhemrika.substack.com for piece 4 — the .NET sleeper case: third today on weighted total, alone at #1 on both EDR and Reach, the cohort’s strongest forward bet hiding behind a present-state ranking. If you want the underlying data, claims, and sources, the framework is open at github.com/hemrika/programming-languages-ai-era.


Best-in-class ecosystem on half the row. Cohort-floor on the other half. The weighted total tells the truth the headline doesn’t.

Python is the Doctor’s TARDIS of ecosystems: enormous on the inside, held together by a few parts nobody is allowed to look at too closely.

References

The allusions and quotations in this piece, with their origin:

  • Doctor Who (BBC, since 1963): the TARDIS.
  • Aristotle, Nicomachean Ethics: the doctrine of the mean.

Rutger Hemrika

AI strategy and governance for vertical-market software. Writes from building, not from slides; every claim carries an evidence grade.

Full experience · About