5/3/2026 at 11:52:57 PM
I'm not sure why people struggle with the fact that an abstraction can be built on top of a non-deterministic and stochastic system. Many such abstractions already exist in the world we live.Take sending a packet over a noisy, low SNR cell network. A high number of packets may be lost. This doesn't prevent me, as a software developer, from building an abstraction on top of a "mostly-reliable" TCP connection to deliver my website.
There are times when the service doesn't work, particularly when the packet loss rate is too high. I can still incorporate these failures into my mental model of the abstraction (e.g through TIMEOUTs, CONN_ERRs…).
Much of engineering and reliability history revolves around building mathematical models on top of an unpredictable world. We are far from solving this problem with LLMs, but this doesn't prevent me from thinking of LLMs as a new level of abstraction that can edit and transform code.
by dimtion
5/4/2026 at 12:06:39 AM
A transmission error has a strictly contained, predictable blast radius. If a packet drops, the system knows exactly how to handle it: it throws a timeout, drops a connection, or asks for a retry. The worst-case scenario is known.A reasoning error has an infinite, unpredictable blast radius. When an LLM hallucinates, it doesn't fail safely but it writes perfectly compiling code that does the wrong thing. That "wrong thing" might just render a button incorrectly, or it might silently delete your production database, or open a security backdoor.
You can build reliable abstractions over failures that are predictable and contained. You cannot abstract away unpredictable destruction.
by distalx
5/4/2026 at 12:38:15 AM
> A reasoning error has an infinite, unpredictable blast radius.Says who? It’s quite easy to limit the blast radius of a reasoning error.
by yunwal
5/4/2026 at 2:11:45 AM
In 2024, a Chevy dealership deployed an AI chatbot that confidently agreed to sell a customer a 2024 Chevy Tahoe for $1. It executed a catastrophic business failure simply because it didn't know the logic was wrong.Sure, you can patch that specific case with guardrails, but how many unpredictable edge cases are you going to cover? It only takes a user with a bit of ingenuity to circumvent them. There are already several examples of AI agents getting stuck in infinite loops, burning through massive API bills while achieving absolutely nothing.
You can contain a system failure, but you cannot contain a logic failure if the system doesn't know the logic is wrong.
by distalx
5/4/2026 at 3:56:20 AM
This would be more convincing if a single car had been exchanged for $1.It didn't happen. Seems the bug was "contained".
Sort of undermines your point re "catastrophic business failure" don't you think?
by pear01
5/4/2026 at 1:20:51 AM
How so?Suppose you had:
Math() Add() Subtract()
Program() Math(“calculate rate”)
This is intentionally written vaguely. How do you limit that these implementations ensure Program() runs and does the right thing when there is no guarantee Math() or its components are correct?
Normally you could use a typed programming language, unit tests, etc, but if LLM is the ultimate abstraction programs will be written line above. At some point traditional software engineering principles will need to apply.
by amazingamazing
5/4/2026 at 4:51:40 AM
Very few people are even beginning to understand the constraints of these systems, and none of them have yet been elevated to high enough positions of prominence to rise above the noise of all the hype. Give us some time man, jeezby DiscourseFan
5/4/2026 at 3:30:55 AM
A transmission error does not have a strictly contained blast radius.A bad packet could tell a flying probe to fire all thrusters on and deplete its fuel in 15 minutes.
What makes a transmission error controlled is all the protection mechanisms on top of it. An LLM cannot delete a production database unless you give it access to do it.
My hot take is that many people are naturally more comfortable with deterministic systems that have clearly analyzable outcomes. Software engineering has historically primarily been oriented around deterministic systems and it has attracted that type of thinker.
But many of us, myself included, prefer chaotic systems where you can’t fully nail down every cause and effect. The challenge of building a prediction model on top of chaos is exhilarating. I really don’t find many people like me in SWE as in, say, the graphics design department.
To me, that’s the underlying threat here — LLMs are rewriting a field that has previously self selected a certain type of person and this, quite understandably, rubs them the wrong way.
by harrall
5/4/2026 at 11:14:01 AM
Yes, but when all it takes to avoid this chaos is hiring someone with at least 5 or 10 years of experience for a reasonable wage, this entire perspective looks insane.It's... just... not that hard to write code nor does it cost that much. There are millions of us working silently at places that aren't "big tech". We all shrugged our shoulders, took a sip of coffee, and went back to our Teams meetings where the only LLM usage is still just Copilot.
by sublinear
5/4/2026 at 3:43:11 AM
I don't need to be able to write proofs about my maths using logic and determinism. If the answer comes out in a way that I like then it has to be correct!by c-linkage
5/4/2026 at 4:00:56 AM
This is vapid condescension.The comment you replied to made no statements about math or proofs. They made a statement about working in systems of non determinism effectively. Your statement seems to imply that this is dumb, as if working in a world of full determinism is an option.
by dpark
5/4/2026 at 4:16:25 AM
Thank you for "vapid condescension".I've wanted a term for this for decades!
by panarky
5/4/2026 at 10:50:58 AM
when you do have the option of determinism, but intentionally eschew it in favour of a strictly inferior nondeterministic tool, then yes, it is kinda dumb.by vrighter
5/4/2026 at 1:54:46 PM
What deterministic option are you referring to here? Humans certainly are not deterministic in how they interpret instructions and write code. If I asked you to implement a feature and a month later asked you to implement the exact same feature, you likely wouldn’t do it the same way again. Two different people certainly wouldn’t.by dpark
5/4/2026 at 12:51:04 PM
When you cling to determinism and call a clearly useful and powerful tool “strictly inferior” I would say this misses the point.by aspenmartin
5/4/2026 at 3:38:16 AM
Insightful.Feels like this maps to the J/P of Myers Briggs
by aeon_ai
5/4/2026 at 12:45:21 AM
I mean if your talking about packets, your already one abstraction over the real data Transmission, in wich is noisy. So bits can randomly flip, noise could be interpreted as bits, and bits could get lost. A much larger blast radiusby td2
5/4/2026 at 12:53:45 AM
I'm fine with that. The part that makes it not really an abstraction is, you still deliver code in the end. It'd be different if your deliverable were prompt+conversation, and the code were merely an intermediate build artifact. Usually people throw away the convo. Some have tried making markdown files the deliverable instead, so far that doesn't really work.It makes even less sense when people compare an LLM to a compiler. Imagine making a pull request that's just adding a binary because you threw the source code away.
by zadikian
5/4/2026 at 12:58:06 AM
The whole field of reproducible builds is only a field because compilers also have had trouble historically of producing binary artifacts with guaranteed provenance and binary compatibility even when built from the same source codes.If I assign a bug fix ticket to a human developer on my team, I won't be able to precisely replicate how they go about solving the bug but for many bugs I can at least be assured that the bug will get solved, and that I understand the basic approach the assigned dev would use to troubleshoot and resolve the ticket.
This is an organizational abstraction but it's an abstraction just the same, leaky as it is.
by mpyne
5/4/2026 at 2:19:40 AM
> The whole field of reproducible builds is only a field because compilers also have had troubleNo, this is not comparable. The reason reproducible builds are tricky is not because compilers are inherently prone to randomness, it's because binaries often bake-in things like timestamps and the exact pathnames of the system used to produce the build. People need to stop comparing LLMs to compilers, it's an embarrassingly poor analogy.
by kibwen
5/4/2026 at 3:11:52 AM
> The reason reproducible builds are tricky is not because compilers are inherently prone to randomnessAnd neither are LLMs. Having their output employ randomness by default is a choice, not a requirement, just like things like embedding timestamps into builds is a choice that can be unwound if you want the build to be reproducible.
> People need to stop comparing LLMs to compilers, it's an embarrassingly poor analogy.
They are certainly different things, but if you are going to criticize LLMs it would be better if you understood them.
by mpyne
5/4/2026 at 3:24:26 AM
Are you arguing that the output of an LLM isn’t random?by jmuguy
5/4/2026 at 3:51:06 AM
It is random if you select it to be (temperature != 0, etc.).It is not random if you don't use random sampling in its output generation.
It the whole thing were actually stochastic then prompt caching would be impossible because having a cache of what the previous tokens transformed into to speed up future generation would be invalidated by the missing random state.
Look at llama.cpp, you can see what samplers are adjustable and if you use samplers that employ randomness you can see what settings disable the random sampling. Or you can employ randomness but fix the seed to get reproducible results.
by mpyne
5/4/2026 at 12:53:14 PM
Yes, it can still be random with temperature set to 0. It'll only be the same if you run it on exactly the same hardware every single time.by sumeno
5/4/2026 at 8:17:23 AM
An LLM is a set of structured matrix multiplies and function applications. The only potentially non-deterministic step is selecting the next token from the final output and that can be done deterministically.by philipswood
5/4/2026 at 9:10:31 AM
Matrix multiplication on GPUs is non-deterministic. As are things like cumsum()https://docs.pytorch.org/docs/2.11/generated/torch.use_deter...
This comes down to map reduce and floating point's lack of associativity. You see the same thing with OpenMP on CPUs.
People are constantly claiming determinism in LLMs that is just not there.
by jmalicki
5/4/2026 at 10:57:54 AM
well just run all inference on the cpu, single threaded /sby vrighter
5/4/2026 at 3:39:03 AM
> Having their output employ randomness by default is a choice, not a requirementThis is not really meaningfully true. E.g. batching, heterogeneous inference HW, and even differences in model versions can make a difference in what result you get, and these are hard to solve.
by achierius
5/4/2026 at 3:54:59 AM
But again, these are all things that are also true of build systems.GCC 16.1 vs. 15.2 will get you differences. GNU ld vs. gold vs. mold vs. lld will get you differences. Whether you do or do not employ LTO or other whole-program optimization vs. whether you do gets you differences.
Have you never debugged a race condition that worked on your machine but didn't work in prod, based only on how things ended up compiled in the final binary?
I'm not saying these are identical but there's a lot more similarity than you all seem to understand. And we've made compilers work well enough that a lot of you believe that they give very routine, very deterministic outputs as part of broader build systems even though nothing could be further from the truth, even today.
by mpyne
5/4/2026 at 11:47:10 AM
> And neither are LLMs.This is not my claim, you're veering wildly off course here. I'm merely responding to the common, tiresome and, to be frank, stupid analogy of LLMs to compilers.
by kibwen
5/4/2026 at 10:56:59 AM
but even if it didn't it still provided a binary that is mathematically proven (assuming no compiler bugs, which if found are fully fixable, unlike LLMs) to correspond to the code you wrote.by vrighter
5/4/2026 at 1:51:11 AM
It's an abstraction for you, not the rest of that developer's team, who have to reproduce the same solution even after said developer has "won the lottery", so-to-speak.inb4: "Don't worry, just use GPT to make the docs"
by z3c0
5/4/2026 at 4:18:36 AM
If you throw away the code then yeah, but I've never seen anyone do this.by zadikian
5/4/2026 at 3:29:56 AM
This is a great point. We’re very much in a transitional phase on this, but I personally do see signs in my own work with agents that we are heading toward the main deliverable being a readme/docs.The code is still important, but I could see it becoming something that humans rarely engage with.
by danenania
5/4/2026 at 2:07:53 PM
> We are far from solving this problem with LLMs, but this doesn't prevent me from thinking of LLMs as a new level of abstraction that can edit and transform code.That's more anthropomorphism than an abstraction. An LLM talks like a person because it was trained to predict continuations of human speech. That does not make it a person, or a system with intent, responsibility or any other human attribute. They are what they are: text prediction engines.
Perhaps your input to the LLM is "make all the test cases pass", and so it predicts it better do something to make the test cases pass, and does so by deleting the test cases. I guess in the "abstract" sense it did what you asked.
Or, how about the case in the news from a few days ago where an agentic system deleted all the vendor's customer's data, and last 3 months of backups, despite having been EXPLICITLY "told" not to do any such thing. Should we consider "completely fuck the customer" as an "abstraction" of "never delete any data"?
by HarHarVeryFunny
5/4/2026 at 1:35:34 PM
This is about the reverse: a non-deterministic/stochastic system built using reliable abstractions.Also, the problem of "did we receive the, and is it correct" is vastly trivial compared to "did we get correct LLM output".
The problem in networking is making the reliable transfer perform well under many conditions, and scale.
Getting consistently reliable output of LLMs isn't solved, so we can't talk about it scaling to even one instance.
by kazinator
5/4/2026 at 12:17:21 AM
Besides deeply unpredictable factors (like signal transmission), most users of higher-level abstractions do so without certainty about how the translation will be executed. For example, one of the main selling points of C when I was growing up was that you could write code independent of architecture, and leave the architecture-specific translation to assembly to the compiler!Abstractions often embrace nondeterministic translation because lower level details are unknown at time of expression -- which is the moivation for many LLM queries.
by evrydayhustling
5/4/2026 at 2:35:41 AM
Grocery stores are a level of abstraction. Exchange money, get food. If your whole life you had grown food, it might feel a bit strange.Occasionally the low level details leak through ie: this egg came from this farm, theres a shipping issue so onions are more expensive or whatever.
I think llm assisted coding is going to work something like this.
by qazxcvbnmlp
5/4/2026 at 11:00:15 AM
but you either exchange money and get the food you want, always. Or it's out of stock, so you don't get the food but you keep your money, guaranteed.It's not a good analogy. With an LLM you might ask for a pea, be parted with your money, and be given a watermelon.
by vrighter
5/4/2026 at 1:27:10 PM
So LLMs are more like InstaCart or DoorDash.by cestith
5/4/2026 at 1:28:01 PM
Is "Mostly-reliable" TCP connection a real thing? A TCP connection is either reliable or not working at all. That is what a proper abstraction should be like.by ritcgab
5/4/2026 at 5:32:04 AM
> I'm not sure why people struggle with the fact that an abstraction can be built on top of a non-deterministic and stochastic system. Many such abstractions already exist in the world we live.It depends on what's the abstraction.
Using LLM for coding is 'abstracting' the developer, adding extra layer that can produce code. But it's not abstraction layer of the code itself.
by rock_artist
5/4/2026 at 3:51:53 AM
Machine itself is built on top of non deterministic world.While your code is executing asteroid from space may hit it and halt execution.
by faangguyindia
5/4/2026 at 2:10:19 AM
The kicker is when you delegate some work to another team member and discover that humans are also non-deterministic.by yomismoaqui
5/4/2026 at 3:17:09 AM
We can mitigate a lot of the problems with humans being non-deterministic by establishing trust and consequencesThere are no consequences for a bad output from an LLM and idk about you but I don't trust them
by bluefirebrand
5/4/2026 at 5:18:39 AM
If people can figure out how to write RFCs about IP over carrier pigeons for April Fools, they can figure out how to conceive of LLMs as a layer of abstraction beneath a protocol as well.by cwyers
5/4/2026 at 11:02:52 AM
You need to be able to define exactly what it's abstracting.ex: std::shared_ptr is abstracting over raw pointers, and does refcounting. It is abstracting something but you can actually know exactly what that thing is. An LLM is an abstraction over the space of all possible computer programs. If an abstraction doesn't constrain you in some way, it's not an abstraction.
by vrighter
5/4/2026 at 12:41:43 AM
that would make sense if ai said "fail. i dont know" . Its active deception is what makes it difficult.by dominotw
5/4/2026 at 3:28:25 AM
People are really really weird about the non-determinism thing. Got someone very adamant that Prompt API shouldn't be a web standard because the output isn't deterministic and according to them that means we can't allow prompts.Such strong correlation between narrow specific demands on how things have to be & posting, in general. I'd really like to see open mindedness & exploratory views be more frequent and have better standing, in general.
I do tend to think this is different than a level of abstraction. But it feels like it's trying to hit hard, on a pretty weird narrow point.
by jauntywundrkind
5/4/2026 at 3:07:37 AM
There’s a big difference between a packet being dropped and a packet’s meaning being changed along the way. The latter is better analogised to what LLMs do between receiving inputs and outputs.by avazhi