Wired: Python Is So Slow. Can Julia Solve the Two-Language Problem?

A reasonable take on the two language problem including Julia in Wired.com. It’s behind a paywall but viewable for free upon sign-up. A few quotes of interest:

Researchers prototype in slow, friendly Python but… rewrite in faster, less friendly languages like C++ or Rust. This limitation can’t be solved by spinning up a platoon of AI coding agents, because no matter how much you optimize a slow language, a faster one will outperform it.

As of 2026, Julia has come to attract a sober community of grown-ups… It leans academic… But you won’t find Julia…on the most popular languages… What went wrong?

First, Python’s [ecosystem and tooling are] far too robust to dislodge. Second, Julia has not been adopted by Big Tech… But third, and this is my answer: Nothing went wrong. Julia is a niche language, and for what it’s doing, it’s plenty successful… [It] will live on, small but beloved.

I’m not convinced it can solve the two-language problem—or that any language can… it exists in every software domain… valiant efforts to use Go or Rust for frontend development have utterly failed.

I don’t think there are any deep insights here. It’s a neutral opinion that avoids hype and hyperbole. But one thing stood out for me, rarely recognized in the interwebs: Julia is beloved.

This is a tough question. I think Julia will live on but it’s missing some key things I would need for my day to day as a statistician. Dataframes.jl is fine. Plotting is fine. But packages around machine learning and any statistics based seems to have very low documentation and use. If we talk about SciML or anything neural networks, then this language is being improved week after week.

Also while base python is slow, it’s optimized. Yes this is a problem for the “two language” issue. But it still works at the end of the day.

I’m for Julia and I want to see it sky rocket! But we would need more developers and maintainers of packages.

I’d actually argue that if Julia took off as more of a general purpose language, it likely would not be nearly as interesting as it is today. It’s hard to please everyone, and I’d much rather have a language that is truly excellent for numerical/scientific computing than one with better development tooling.

That said, I think people also are too negative on the state of Julia and it’s package ecosystem / tooling. JETLS is pretty much usable day to day at this point and Flexible Julia is a big improvement in terms of IDE support. Package management keeps getting better version after version. gRPC used to be a blocker for me, but we now have a gRPC client that is being used for production applications and the server gap will likely be closed soon as well. Reactant has gotten to the point where I’m using it for all of my ML training and serving, often seeing large speedups relative to PyTorch (2x to as high as 10x on the same hardware). All of this while being an absolute joy to read and write, especially when trivially doing things that would not be straightforward in a glue language like Python. I don’t measure the success of Julia by the number of people using it but by the ever increasing capability of the language and it’s ecosystem. There is no shortage of things to be excited about.

One of the big things that spurred Python was Jupyter. I think we can do work to make Julia a top notch platform for this kind of work and go beyond Jupyter. Pluto has certainly been a project which has been pushing on this as well. I’m hoping to push it further with Slate.

[Off topic] @kahliburke Keeping in mind the recent thread bemoaning the decline of activity in the Julia community (discourse, slack), your progress on AI-tooling has been a pleasure to read about. Keep us posted!

Well, Pluto.jl emerged from @fonsp’s vision of accessibility. The ease of sharing code and of onboarding of newcomers (to programming in general) very much influences adoption. Python shines in this respect, when taking the first coding steps the two language problem is of secondary importance. This is also true for new generations of “Big Tech” employees who could influence adoption in those companies.

I think it is important to to bear this in mind when it comes to focusing resources (e.g. wasm could be a big game changer here now that python has marimo with wasm deployment). I hope that the community will be able to keep Pluto alive evolving.

I love the “sober community of grown-ups”, it is a great summary of this community.

I think it is a very nicely written article. The author did his homework to get a good picture of the topic, and the assessments are fair.

FWIW, I think that “replacing Python” is an irrelevant goal for a scientific computing language. There is nothing wrong with being niche if you do it well.

Project Jupyter’s name is a reference to the three core programming languages supported by Jupyter, which are Julia, Python and R.

We can’t say Jupyter propped up Python. What propped up Python is it was easy and it was there first.

Location, location, and location … spatiotemporally I suppose. I don’t disagree, I know Jupyter wasn’t there the whole time python was, and was involved with Julia. Also, I don’t mean to imply it was the only driver.

But … Jupyter was called IPython long before it transitioned.

I took Pluto Desktop for a short test drive yesterday and it was a very pleasant experience, much more what you are used to in installing and starting a typical Windows package. I may end up using that for introducing Julia to my grandchildren.

I don’t get this point. What I heard around the SIAM meeting last week is that you can ask the AI to write in C++ or Rust at any time, so the two-language problem is no big deal—at least until the economics change.

Where I like Julia with AI is that the code is both expressive and performant. I have a chance at checking Julia for mathematical sanity, whereas in a language less tailored to scientific computing, I’m probably just taking the AI’s word for it if the unit tests pass.

Sorry, I didn’t mean to attribute that quote to @apo383, who was quoting the article.

While it’s true you can ask AI to write C++ and Rust, neither are well suited to an interactive / prototyping type workflow where you test different approaches, visualize results and intermediate data, etc. I’d make the argument that you can have the agent driving this process in order to find problems early before cranking out all of the code. Once you are happy with the approach, you don’t need a complete rewrite in Julia. While there are ways to iteratively build and smoke test individual stages/components in C++/Rust, the language doesn’t provide much support for it where it flows naturally in Julia.

Yes, however AI is bad at using REPL. The community has come up a lot of methods like Kaimon.jl and julia-mcp stuffs, however, using repl is yet being trained as a native AI workflow. I think that’s why julia is blocked as an AI-friendly language comparing to rust.
If I decide to completely vibe coding something I would rather use rust and trust the tests.
I wish someday, the data of interactively using repl could be incorporated into LLM database, so that we can see claude working in a REPL and analyze all the graphic outputs etc.

That only works for vibe-coding throw-away stuff that I never plan to look at. It’s difficult to build upon AI-generated code in an unfamiliar language, because it may not be in the right style for human workflow, and of course my own limitations with that language.

I’m still finding the right balance for “real” projects, where AI helps me but I’m still sentient and conscious. I want code that I can build upon and interact with, REPL or not. That sounds like a flippant comment from the SIAM people. I’d like to see an example of a real project where the vibe-coded second language is readable and maintainable.

this used to be true, but I don’t think it is anymore.

I increasingly think AI agents could be a meaningful advantage for Julia specifically.

One of Julia’s longstanding limitations relative to Python and R has been ecosystem coverage. Even when Julia itself is well suited to a problem, a missing package can still make Python the more practical choice. But agentic coding seems to be changing that tradeoff somewhat, at least in my own experience. A capable agent can often produce a useful pure-Julia implementation of a missing tool surprisingly quickly, especially when the required scope is fairly narrow. That obviously does not replace maintainers, documentation, testing, or domain expertise. Still, it can make Julia’s smaller ecosystem feel less limiting in practice. In my own work, I have found myself reaching for PythonCall.jl less and less as coding agents have improved, even though PythonCall remains an excellent and important project.

Reactant.jl is one recent example for me. I wanted Reactant to support Metal.jl, which could be especially useful for workloads where access to very large amounts of unified memory matters as much as, or more than, the raw FLOPs available from faster CUDA-based hardware. Using almost entirely agent-driven coding, I was able to submit a PR. I genuinely do not understand much of the implementation, so I do not want to overstate the accomplishment. But it seems to have gotten close enough that the actual Reactant developers may be able to review it, correct it, and finish it. Even that feels significant to me. A user who would ordinarily have had no realistic path toward implementing a difficult backend can now at least produce something concrete enough for experts to work with and in turn grow the ecosystem that Julia covers more easily than before.

I also think Pluto’s reactive execution model may be unusually well suited to human–agent collaboration. Agents often work by writing a script, running it from top to bottom, inspecting the result, and repeating. As that process continues, I sometimes find it difficult to keep track of what has changed or to feel meaningfully involved in the development process.

Pluto offers a different interaction model. Once the notebook is set up (and after a slight modification to Pluto.jl’s reactivity model) the agent can modify individual cells while Pluto reruns only the affected downstream computation. The code remains organized as a visible, interactive document rather than becoming a long script that is repeatedly rewritten and executed behind the scenes. I have been experimenting with this idea in SpaceStation.jl, including in the actual imaging and reconstruction work I am doing right now for my PhD. The screenshot below shows one of these sessions in practice. With surprisingly few changes, it has become the most productive agentic coding environment I have personally used (which might be unique to the type of work I am doing of course). Still, the agent can move quickly, while Pluto’s structure and reactivity help me remain much more aware of the code, state, dependencies, and outputs.

I obviously don’t know of or have strong adoption numbers to justify my optimism, just a personal feel, but I think there are some genuinely promising possibilities here. Agents may reduce some of the practical disadvantages of a smaller ecosystem, make ambitious contributions more accessible to non-experts, and increase the value of tools like Pluto or other shining stars within the julia ecosystem.

The two-language problem and its preceding concepts are just opinions, so there are countless approaches and no consensus. Before genAI took off, people have also said that writing C++ or Rust on its own is the simplest option, or that a Python wrapper on top is no big deal, a two-language solution to accessibility. I presume you heard this from people who think it’s important for the prompters, or at least a large enough fraction of an organization, to understand C++ or Rust enough to review generated code, but another opinion that fits your description is genAI suites “compiling” a natural language to supported programming languages with minimal user awareness, a recent and relatively direct development in natural language programming. It evidently works for many people despite the obvious downsides, and natural language prompts are THE solution for those who don’t care at all about programming language design, let alone the two-language problem.

Until you need to create an app that is both numerical and iOS-deployable. Swift lacks the libraries, so your only option is to create the universe from scratch in C++/Rust. I’ve opted for the half-solution of prototyping in Julia and porting to C++ for deployment (since the final app is straightforward calculations without dynamic runtime requirements).

It works fine here with Codex 5.4/5.5.