Upvote but I’m not sure I understand or agree with the thesis. Programming in C is already pretty niche, and the amount of code that is worth the tradeoff to hyper-optimize (cost to do, to maintain, to re-optimize with new host architectures or microcode optimizations, etc.) is absolultely tiny, and getting smaller all the time.
For most of the tasks where this would be beneficial, the focus has shifted over the last few decades from performance to correctness. The move isn’t from C to ASM, but from C to Rust or from validation in C (TLA+ for design, bounded model checker for code).
There still is a place for human optimization based on use cases the compiler-optimizer can’t see, but it’s small and shrinking.
I haven’t seen any papers on this, but I’d expect modern coding agents to write ASM that’s more correct AND more performant for optimized subroutines than the vast majority of humans. Really, any optimization for something small enough that you can write benchmarks for and measure improvements, automation is going to win.
My thesis is approximately “we don’t write assembly because it usually doesn’t provide much practical benefit and also it’s obnoxious to do”. This is in opposition to the thesis “we don’t write assembly because computers have surpassed the abilities of all but the best humans and so human intervention would only make the output worse”.
I think this is an important point because some people seem to be under the impression that “LLMs can write better code than pretty much all humans” is a necessary prerequisite for “it’s usually not worth it for a human to write code”, and also operating under the model of “once LLMs write most code, there will be nothing left to do for the people with software development skills”.
“once LLMs write most code, there will be nothing left to do for the people with software development skills”.
is a mismatch of quantifiers. If LLMs write most code, there’s no need for most of the people with those software development skills that are necessary and which LLMs can do well enough. That doesn’t say ANYTHING about the software development skills which LLM’s cannot do well enough.
I can’t tell if you’re just saying “LLMs can’t do this part well, yet”, or if you’re asserting that humans have some ability in assembler that LLMs won’t match in the foreseeable future.
The point with assembler in drawing the analogy “assembly programmers : optimizing compilers :: programmers-in-general : scaffolded LLMs”. The post was not about any particular opinions I have[1] about how LLMs will or won’t interact with assembly code.
As optimizing compilers became popular, assembly programmers found that their particular skill of writing assembly code from scratch was largely obsolete. They didn’t generally beome unemployed as result though. Instead, many of the incidental skills they picked up along the way[2] went from.”incidental side skill” to “main value proposition”.
I do have such opinions, namely “LLMs mostly won’t write as for basically the same reasons humans don’t write much asm”. But that opinion isn’t super relevant here.
e.g. knowing how to read a crash dump or which memory access patterns are good or just general skill at translating high-level descriptions of program behavior into a good data model and code the correctly operate on those data structures
Upvote but I’m not sure I understand or agree with the thesis. Programming in C is already pretty niche, and the amount of code that is worth the tradeoff to hyper-optimize (cost to do, to maintain, to re-optimize with new host architectures or microcode optimizations, etc.) is absolultely tiny, and getting smaller all the time.
For most of the tasks where this would be beneficial, the focus has shifted over the last few decades from performance to correctness. The move isn’t from C to ASM, but from C to Rust or from validation in C (TLA+ for design, bounded model checker for code).
There still is a place for human optimization based on use cases the compiler-optimizer can’t see, but it’s small and shrinking.
I haven’t seen any papers on this, but I’d expect modern coding agents to write ASM that’s more correct AND more performant for optimized subroutines than the vast majority of humans. Really, any optimization for something small enough that you can write benchmarks for and measure improvements, automation is going to win.
My thesis is approximately “we don’t write assembly because it usually doesn’t provide much practical benefit and also it’s obnoxious to do”. This is in opposition to the thesis “we don’t write assembly because computers have surpassed the abilities of all but the best humans and so human intervention would only make the output worse”.
I think this is an important point because some people seem to be under the impression that “LLMs can write better code than pretty much all humans” is a necessary prerequisite for “it’s usually not worth it for a human to write code”, and also operating under the model of “once LLMs write most code, there will be nothing left to do for the people with software development skills”.
is a mismatch of quantifiers. If LLMs write most code, there’s no need for most of the people with those software development skills that are necessary and which LLMs can do well enough. That doesn’t say ANYTHING about the software development skills which LLM’s cannot do well enough.
I can’t tell if you’re just saying “LLMs can’t do this part well, yet”, or if you’re asserting that humans have some ability in assembler that LLMs won’t match in the foreseeable future.
The point with assembler in drawing the analogy “assembly programmers : optimizing compilers :: programmers-in-general : scaffolded LLMs”. The post was not about any particular opinions I have[1] about how LLMs will or won’t interact with assembly code.
As optimizing compilers became popular, assembly programmers found that their particular skill of writing assembly code from scratch was largely obsolete. They didn’t generally beome unemployed as result though. Instead, many of the incidental skills they picked up along the way[2] went from.”incidental side skill” to “main value proposition”.
I do have such opinions, namely “LLMs mostly won’t write as for basically the same reasons humans don’t write much asm”. But that opinion isn’t super relevant here.
e.g. knowing how to read a crash dump or which memory access patterns are good or just general skill at translating high-level descriptions of program behavior into a good data model and code the correctly operate on those data structures