I’d like to propose a combination of the two. A language model that parses natural language but checks back in with the user to see if it has understood. This can be done by converting high-ambiguity sentences to low-ambiguity ones when appropriate and storing the latter as source. When the interpretation program is confused, it can check back in with the user to ask what they meant.
This is something I’ve been thinking about lately. It’s a huge problem that looking into how a given software project works or specifically what it does is normally beyond the reach of most people, or in the case of software that is very elaborate or wasn’t written to be read, beyond the reach of almost everyone. It could help a lot to have some kind of tiered specification/documentation going from more concise to more detailed that can at least be independently confirmed in an automated way to have been derived from each other.
- When does 4 become 5?
4.5 >=? Lots of programming languages define casting as the largest integer value, not the the rounded value. Outside of programming, there are scenarios where 4 cannot be rounded to 5 either… Like a height requirement for a ride at an amusement park. Though, it might seem natural to round it to humans.
- When does green become black in a gradient?

With computer languages, we define colors with red, blue, and green. The above is a gradient on horizontal x-axis, with
(r = 0, g = x, b = 0)This is more complicated. If we surveyed 1 million people, maybe we’d get a plot that defined the start of green as something like the following.

And then maybe we could take the the average and state that as green.

Though, is that really good enough description of green to serve as a legal definition of green? Maybe lawyers would select significantly different results than the general population when surveyed for the value of green. Maybe the results should be restricted to lawyers?
- And when does 2 become 7?
If we restricted it pixels to a 3x5 grid…
We could possibly define 2 and 7.


But then is this a 2 or a 7?

These are the kinds of things I bring up when talking to people about using LLMs. Sure for short simple logic the room for ambiguity is small, but for more complex systems, the benefit of programming it is to be explicit. Prompts != programming as they don’t produce deterministic outputs and can lead to faulty outcomes (even if they run).
With computer languages, we define colors with red, blue, and green.
It’s actually more complicated than this. We specify a color space, then define the color through parameters relevant to that color space. For example, it’s not uncommon to define a color in CSS in Oklab, which could look like 40.1% lightness at (0.1143, 0.045). It’s also common to define colors relative to other colors. Color space is also not just “well this value maps to this other value in RGB”. Different color spaces represent different spectrums of visible light, and you can represent colors in one space that you can’t in another space.
So “when does green become black” is even more complicated to answer.
Ambiguity is a bitch. Usually when it comes down to “is this color X or Y”, the follow-up question is “does the foreground have a contrast ratio of at least 4.5:1 against the background”. If not, then whether the color is X or Y doesn’t matter. You need a different color.
Anyway, natural language does not map well to machine code. There’s too much ambiguity, and you lose out on the chance to answer the questions you didn’t specify answers to that come up when actually writing the code yourself. An interactive approach would take just as much effort as just writing the code itself.



