Comment by koiueo

19 days ago

We are not talking about deterministic instructions, we are talking about deterministic behavior.

UB is actually a big deal, and is avoided for a reason.

I couldn't in my life guess what CC would do in response to "implement login form". For all I know CC's response could depend on time of day or Anthropic's electricity bill last month more, than on the existing code in my app, and the specific wording I use.

I do not talk about UBs, compiler can be non-deterministic even for completely valid and well-specified source code.

Seems to me that people just confuse determinism with soundness.

Determinism is just whether the output of the tool (machine code) is determined by the input (source code), i.e., for one input always returns the same output.

Soundness means that output is always consistent with the semantics of the input. i.e. returned machine code always does what is specified by the source code.

Compilers can be non-deterministic (although usually are deterministic), but they are always sound (ignoring compiler bugs).

LLMs can be deterministic (although usually aren't), but they are not sound in general.