The author presents a false dichotomy when discussing "Why Not AI".
... there are some serious costs and reasonable
reservations to AI development. Let's start by listing
those concerns
These are super-valid concerns. They're also concerns that
I suspect came around when we developed compilers and
people stopped writing assembly by hand, instead trusting
programs like gcc ...
Compilers are deterministic, making their generated assembly code verifiable (for those compilers which produce assembly code). "AI", such as "Claude Code (or Cursor)" referenced in the article, is nondeterministic in their output and therefore incomparable to a program compiler.One might as well equate the predictability of a Fibonacci sequence[0] to that of a PRNG[1] since both involve numbers.
0 - https://en.wikipedia.org/wiki/Fibonacci_sequence
1 - https://en.wikipedia.org/wiki/Pseudorandom_number_generator
I suspect the argument is that both AI and a compiler enables building software at a higher level of abstraction.
> Compilers are deterministic, making their generated assembly code verifiable
People keep saying this like it is an absolute fact, whereas in reality it is a scale.
Compilers are more deterministic than LLMs in general, but no they are not completely deterministic. That's why making reproducible builds is hard!
https://stackoverflow.com/questions/52974259/what-are-some-e... and https://github.com/mgrang/non-determinism give some good examples of this.
This leads to the point: in general do we care about this non-determinism?
Most of the time, no we don't.
Once you accept that the next stage is accepting that most of the time the non-deterministic output of an LLM is good enough!
This leads to how do I verify it is good enough which leads to testing and then suddenly you have a working agentic loop....
>> Compilers are deterministic, making their generated assembly code verifiable
This is true (to an extent), but the generated LLM code is also verifiable. We use automated tests to do it.
If LLMs were like compilers, you could put src/ into .gitignore and only upload the prompt.
Even the earliest compilers didn't work by the programmer writing code, copying the assembly output into their source tree, and throwing away the code.
This is not a value judgement, they simply aren't the same thing at all.