LLMs bring new nature of abstraction – up and sideways

by tudorizeron 6/24/2025, 2:52 PMwith 53 comments

by oytison 6/24/2025, 3:11 PM

I don't get his argument, and if it wasn't Martin Fowler I would just dismiss it. He admits himself that it's not an abstraction over previous activity as it was with HLLs, but rather a new activity altogether - that is prompting LLMs for non-deterministic outputs.

Even if we assume there is value in it, why should it replace (even if in part) the previous activity of reliably making computers do exactly what we want?

by smokelon 6/28/2025, 11:54 AM

Abstractions for high-level programming languages have always gone in multiple directions (or dimensions if you will). Operations in higher level languages abstract over multiple simpler operations in other languages, but they also allow for abstraction over human concepts, by introducing variable names for example. Variable names are irrelevant to a computer, but highly relevant to humans.

Languages are created to support both computers as well as humans. And to most humans, abstractions such as those presented by, say, Hibernate annotations, are as non-deterministic as can be. To the computer it is all the same, but that is increasingly becoming less relevant, given that software is growing and has to be maintained by humans.

So, yes, LLMs are interesting, but not necessarily that much of a game-changer when compared to the mess we are already in.

by gdubson 6/28/2025, 11:27 PM

The Star Trek computer – I grew up with TNG – is the example I always think of. They ask it in human language to pull up some data, create a visualization, run an analysis. You get the sense that people also still write programs in the future in a more manual way – but, done well these LLMs are the building blocks for that more conversational way of getting the computer to do what you want it to do.

A lot of the complaints that come up on Hacker News are around the idea that a piece of code needs to be elegantly crafted "Just so" for a particular purpose. An efficient algorithm, a perfectly correct program. (Which, sorry but – have you seen most of the software in the world?)

And that's all well and good – I like the craft too. I'm proud of some very elegant code I've written.

But, the writing is on the wall – this is another turning point in computing similar to the personal computer. People scoffed at that too. "Why would regular people want a computer? Their programs will be awful!"

by nmaleyon 6/25/2025, 4:22 AM

I'm in the process of actually building LLM based apps at the moment, and Martin Fowler's comments are on the money. The fact is seemingly insignificant changes to prompts can yield dramatically different outcomes, and the odd new outcomes have all these unpredictable downstream impacts. After working with deterministic systems most of my career it requires a different mindset.

It's also a huge barrier to adoption by mainstream businesses, which are used to working to unambiguous business rules. If it's tricky for us developers it's even more frustrating to end users. Very often they end up just saying, f* it, this is too hard.

I also use LLM's to write code and for that they are a huge productivity boon. Just remember to test! But I'm noticing that use of LLM's in mainstream business applications lags the hype quite a bit. They are touted as panaceas, but like any IT technology they are tricky to implement. People always underestimate the effort necessary to get a real return, even with deterministic apps. With indeterministic apps it's an even bigger problem.

by bgwalteron 6/28/2025, 1:54 PM

How many bandwagons has this guy jumped on? Now he says that LLMs will be the new high level programming languages but also that he listens to colleagues and hasn't really tried them yet.

I suppose he is aiming for a new book and speaker fees from the LLM industrial complex.

by felineflockon 6/24/2025, 10:28 PM

It is a new nature of abstraction, not a new level.

UP: It lets us state intent in plain language, specs, or examples. We can ask the model to invent code, tests, docs, diagrams—tasks that previously needed human translation from intention to syntax.

BUT SIDEWAYS: Generation is a probability distribution over tokens. Outputs vary with sampling temperature, seed, context length, and even with identical prompts.

by stpedgwdgfhgddon 6/28/2025, 3:01 PM

I’m programming software development workflows for Claude in plain english (custom commands). The non-deterministic is indeed a (tiny!) bit of a problem, but just tell Claude to improve the command so next time it won’t make the same mistake. One time it added an implementation section to the command. Pretty cool

This is the big game changer: we have a programming environment where the program can improve itself. That is something Fortran couldn’t do.

by dtagameson 6/25/2025, 2:07 AM

I respect Martin Fowler greatly but those who, by their own admission, have not used current AI coding tools really don't have much to add regarding how they affect our work as developers.

I do hope he takes the time to get good with them!

by somewhereoutthon 6/28/2025, 2:26 PM

> As we learn to use LLMs in our work, we have to figure out how to live with this non-determinism. This change is dramatic, and rather excites me. I'm sure I'll be sad at some things we'll lose, but there will also things we'll gain that few of us understand yet. This evolution in non-determinism is unprecedented in the history of our profession.

The whole point of computers is that they were deterministic, such that any effective method can be automated - leaving humans to do the non-deterministic (and hopefully more fun) stuff.

Why do we want to break this up-to-now hugely successful symbiosis?

by alganeton 6/28/2025, 9:52 AM

> This evolution in non-determinism is unprecedented in the history of our profession.

Not actually true. Fuzzing and mutation testing have been here for a while.