But the GP stands.
LLM code generation: "Here is an intent/specification. Invent code that hopefully satisfies it."
Does the compiler analogy provide value under those terms? I don't think it does. In fact, I think it provides negative value.
We don't need to use tortured analogies to express excitement over these tools.
For(){} it's normally either undefined or has a specific meaning. "Then iterate and do x" might mean many subtly different things.
Most programmers never deal with a compiler bug in their whole career, and can dismiss the possibility. For LLMs it would be hard to even define what a "compiler bug" would be since there is no specification for English.
Then there's the fact that models generally don't guarantee anything at all. Sonnet can change under your feet.
Models also degrade as the context window gets larger. Compilers handle one line just the same as 20.
I could keep going, there's so many fundamental differences in the process that the analogy only serves to provide a false feeling of security.
If we truly need to sacrifice our skill to be productive by using LLMs that atrophy us, then the only devs that have a limited lifespan are us. The next ones won't have a skillset to atrophy since they won't have built it through manual work.
Also, I hereby propose to publicly ban the "LLMs generating code are like compilers generating machine code" analogy, it's getting old to reargue the same idea time after time.