← Back to context

Comment by haitchfive

2 days ago

What surprises me most is some of the virulent reactions that code generation appears to elicit, sometimes citing reasons such as craft, artistry, and originality. As if the entire disciplines of computer science and systems engineering never depended on assemblers, code generation, compilers, JIT. Or really, just writing bytes that can represent machine code, P-code, or bytecode.

A reaction that doesn't appear to make the very direct connection with the systems of exploitation, but chooses to target the tools, or the users of tools is difficult to justify as extremely sophisticated.

> assemblers, code generation, compilers, JIT. Or really, just writing bytes that can represent machine code, P-code, or bytecode.

All of these things have something in common that LLMs don’t. They behave in a predictable, documentable (and usually documented) way.

  • Compiler optimizations are pretty unpredictable.

    But you can, in principle, understand a compiler. Also they're made by the same people who use them. Did blacksmiths get mad when they invented the first anvils?

    • While optimization may be done in unpredictable ways, it does not (by definition) change the effective behavior of the program. If you write a program to calculate prime numbers, it will always calculate prime numbers, no matter how the compiler optimizes it. If you tell an LLM to write code to calculate prime numbers, you are at the mercy of chance. (Maybe not for such a simple program, where the solution is directly in the training data, but you get the idea.)