I wrote about LLMs and some wisdom from the past. "Mind the van Emden Gap" --> https://blog.fogus.me/llm/van-emden.html
My understanding is that the van Emden gap is about two readings of the same artifact - e.g. a SQL query. One string of text. Declaratively, it describes a set of rows. Operationally, it's an instruction to a query planner. With LLMs, you have two different ones: a prompt and generated code. That's not really the same duality, no? I feel it's closer to the specification-implementation gap that we always had. van Emden is about the same text that could be simultaneously a statement of logic and a set of instructions, and you need to hold both in your head.
What do you mean by "generated code"?
Ah... okay, I think, I get it. So the code LLM generates, like any code would have both a declarative and an operational reading. The gap lives in the generated code itself - not between the prompt and the code. The prompt isn't one side of the gap. The prompt is just how the code came to be. Once the code exists, you need to mind the gap within it, same as always. And the risk is higher because you didn't write it yourself, so you might trust the declarative reading without checking the operational one.
My post (and van Emden) is not about code generation, but that's another issue as you identified. If you're going to generate code then you better choose a good language to generate.
Yup, the language itself constrains how far the declarative and operational readings can drift apart.
You're basically, saying: "if you're going to delegate code authorship to a machine, pick a language where the gap is structurally managed, because you won't have the intuitive understanding that comes from having written it yourself...", something like that? Sorry for naively trying to compress it so brutally.
Reading code that I wrote 6-months ago is hard. It's really really hard depending on the language.
Would you mind if I posted a link to HN + Lobsters? The line on how its easy to use English to 'cheat' around completely formulating/defining a thought is a standout to me. I've definitely done that in some design-related conversation, to (sneakily, if unconsciously) paint over gaps in my own understanding/planning
Submit away. It's not about making mad cash with LLMs so it might not gain much traction. 🙂
Ah, looks like @adityaathalye already beat me to it 😄
Reading code that I wrote 6-months ago is hard.I dunno. I'm pretty sure I've read at least some of the code you wrote some months ago. It was a delightful experience.