This isn’t true. You can train LLMs entirely on synthetic data and get strong results. [0]
> If new languages, engines etc pop up it cannot synthesize new forms of coding without that code having existed in the first place.
You can describe the semantics to a LLM, have it generate code, tell it what went wrong (i.e. with compiler feedback), and then train on that. For an example of this workflow in a different context, see [1].
> And most importantly, it cannot fundamentally rationalize about what code does or how it functions.
Most competent LLMs can trivially describe what some code does and speculate on the reasoning behind it.
I don’t disagree that they’re flawed and imperfect, but I also do not think this is an unassailable state of affairs. They’re only going to get better from here.