zlacker

[return to "My AI skeptic friends are all nuts"]
1. parado+4u[view] [source] 2025-06-03 00:29:20
>>tablet+(OP)
I like Thomas, but I find his arguments include the same fundamental mistake I see made elsewhere. He acknowledged that the tools need an expert to use properly, and as he illustrated, he refined his expertise over many years. He is of the first and last generation of experienced programmers who learned without LLM assistance. How is someone just coming out of school going to get the encouragement and space to independently develop the experience they need to break out of the "vibe coding" phase? I can almost anticipate an interjection along the lines of "well we used to build everything with our hands and now we have tools etc, it's just different" but this is an order of magnitude different. This is asking a robot to design and assemble a shed for you, and you never even see the saw, nails, and hammer being used, let alone understand enough about how the different materials interact to get much more than a "vibe" for how much weight the roof might support.
◧◩
2. SpicyL+Hu[view] [source] 2025-06-03 00:35:10
>>parado+4u
I suppose the counterargument is, how many experienced programmers today have seen a register or a JMP instruction being used?
◧◩◪
3. weikju+hy[view] [source] 2025-06-03 01:08:35
>>SpicyL+Hu
Your compiler does not hallucinate registers or JMP instructions
◧◩◪◨
4. zdragn+AA[view] [source] 2025-06-03 01:31:10
>>weikju+hy
Doesn't it? Many compilers offer all sorts of novel optimizations for operations that end up producing the same result with entirely different runtime characteristics than the source code would imply. Going further, turn on gcc fast math and your code with no undefined behavior suddenly has undefined behavior.

I'm not much of a user of LLMs for generating code myself, but this particular analogy isn't a great fit. The one redeeming quality is that compiler output is deterministic or at least repeatable, whereas LLMs have some randomness thrown in intentionally.

With that said, both can give you unexpected behavior, just in different ways.

◧◩◪◨⬒
5. skydha+cD[view] [source] 2025-06-03 01:56:26
>>zdragn+AA
> With that said, both can give you unexpected behavior, just in different ways.

Unexpected as in "I didn't know" is different than unexpected as in "I can't predict". GCC optimizations is in the former camp and if you care to know, you just need to do a deep dive in your CPU architecture and the gcc docs and codebase. LLMs is a true shot in the dark with a high chance miss and a slightly lower chance of friendly fire.

◧◩◪◨⬒⬓
6. Dylan1+bi1[view] [source] 2025-06-03 09:26:57
>>skydha+cD
And every single developer is supposed to memorize GCC's optimizations so they never make a change that will optimize wrong?

Nah, treating undefined behavior as predictable is a fool's errand. It's also a shot in the dark.

◧◩◪◨⬒⬓⬔
7. skydha+Gq2[view] [source] 2025-06-03 17:24:48
>>Dylan1+bi1
What is that about memorization? I just need to know where the information is so I can refer to it later when I need it (and possibly archive them if they're that important).
◧◩◪◨⬒⬓⬔⧯
8. Dylan1+DB2[view] [source] 2025-06-03 18:28:34
>>skydha+Gq2
If you're not trying to memorize the entirety of GCC's behavior (and keeping up with its updates), then you need to check if your UB is still doing what you expect every single time you change your function. Or other functions near it. Or anything that gets linked to it.

It's effectively impossible to rely on. Checking at the time of coding, or occasionally spot checking, still leaves you at massive risk of bugs or security flaws. It falls under "I can't predict".

◧◩◪◨⬒⬓⬔⧯▣
9. skydha+NP2[view] [source] 2025-06-03 19:51:59
>>Dylan1+DB2
In C, strings are just basic arrays which themselves are just pointers. There’s no safeguards there like we have in Java, so we need to write the guardrails ourselves, because failure to do so result in errors. If you didn’t know about it, a buffer overflow may be unexpected, but you don’t need to go and memorize the entire gcc codebase to know. Just knowing the semantics is enough.

The same thing happens with optimization. They usually warns about the gotchas, and it’s easy to check if the errors will bother you or not. You dont have to do an exhaustive list of errors when the classes are neatly defined.

[go to top]