I really wish people would start defining what they mean when they say code is deterministic. For instance, code is not deterministic in the sense that it admits a single interpretation when compiled. C code admits many assembly interpretations and the assembly you get will vary depending on your compiler and parameters.
When people say code is deterministic I think they mean it has a formal semantics. But these formal semantics may admit any one of many interpretations.
There's your own example defining how code is deterministic. Despite being compiled to different assembly interpretations, the code does the same thing.
The point I’m making is that determinism isn’t the key difference between compilers and LLMs. The key difference is that LLMs do not give semantic guarantees. I don’t care if they give the same output on the same input, just as I don’t care very much which C compiler I use.
I think you misunderstood. Determinism is the the difference between natural language and code. It's not about LLMs vs compilers.
I’m still not entirely sure what people mean when they call a formal/natural language deterministic. As we’ve discussed, it can’t possibly mean that it has a single valid interpretation, since this is untrue of C code. If it means that code has a _precise set_ of interpretations, then I wouldn’t use the word deterministic for that.