6 ms·
The machine code generated by a compiler is deterministic and reproducible (assuming using same chain/tool versions), which is why reading the human readable pr
by croon 5d ago
The machine code generated by a compiler is deterministic and reproducible (assuming using same chain/tool versions), which is why reading the human readable pre-compiled source is sufficient.
Reading a prompt but not reading the non-deterministic/non-reproducible LLM output is not comparable.
How do you know it does what you want it to do without reading it? Tests? How do you know what they test? Yes, clicking a button in a browser and getting the result you want satisfies most, but that only works on the most basic systems. Once a code base grows large enough, any one agent reading in its context wont understand the whole, and if no human does either, it becomes unworkable.
- preg_match 5d agoYeah, tests. You need tests for everything and the tests + API needs to be carefully reviewed. Technically, the implementation need not be read at all. Just APIs, boundaries, and tests. You need unit tests, mutation tests (tests for your tests), integration tests, and end-to-end tests. You also need to design the system to be broken up into small submodules, which is how software should be written anyway. You push all side-effects right to the edge, and then test the core extensively. Nobody needs to understand the whole. They only need to understand each submodule, which is easy. And then, how they interact, in which case you only care about the API and contract garauntees, not the implementation. Realistically, this is how pre-AI software engineering worked, too. Or how it should generally work. Nobody can read or understand a 10 million line codebase. So to ensure you don’t break shit, you need the submodules, orchestration, and tests.