Hacker News new | ask | show | jobs
by layer8 482 days ago
Some commenters are likening this to no-code/low-code. However, there is an important difference: When you prompt an LLM to generate some code, then for any further modification, the generated code becomes part of the software’s specification instead of the original prompt. In other words, as soon as you have some history of “coding” the software, you can’t experiment with modifying previous prompts to see how it changes the software. (You can in theory and replay the whole history, but then subsequent existing prompts won’t make sense anymore in the context of the changes made to preceding prompts.)

This is unlike no-code/low-code, where the “coder” still has full control and visibility over the specification and can tinker with it. With LLM-generated code, an increasing part of the “specification” is constituted by the code that has been generated so far, into which the “coder” has no insight. The “coder” can only try to run it to see how it behaves, but cannot reason about it like a no-code/low-code coder can about their specification.

1 comments

It may not be auditable in the same was a block-based workflow, but there's nothing stopping you from saying "hey, this code doesn't do what I want, please improve it" to the LLM.

The whole point about the article is that reasoning about the code isn't always required any more, reasoning about the output is enough.

My point is that it is not the same, in a similar sense in which testing (as a software engineering discipline) is not a substitute for proving the correctness of code. Another way in which it is different is that the “coder” cannot test hypotheses of the kind “when I prompt x, then y will happen” other than as a one-off, because that conversion is lossy, whereas in no-code/low-code “when I specify x, then y will happen” is deterministic. In other words, with no-code/low-code, the “coder” can with time learn to predict precisely and reliably what their change will do, which is not really the case with LLM-based coding, where you have to go by the “vibe”.
My point is that proving the correctness of code is not always relevant. When it is, don't use AI coding assistance, and hire smart people to do the work.

When it's not, fuck it, go ahead and produce that flight sim without researching quaternions. MOST code does not need to be provably correct, or we'd all use Ada.