Yes, closely related to the question why AI services insists on writing software in ineffective high level languages intended for humans to read, such as Python. Which then needs to be compiled, use large standard libraries etc. Why not output the actual software directly, intended for a computer to run directly?
Same reason humans write in higher-level languages instead of machine code? Each additional unit of program text costs energy at write time, so there's a bias toward more compact _representations_ of programs, even if they're less efficient at runtime.
Because the written code, variable names, structure, and comments also serve as context for the LLM.
This is why LLM written code is often more verbose than human written code. All of those seemingly unnecessary comments everywhere, the excessively descriptive function names, the way everything is broken down into a seemingly excessive number of logical blocks: This is all helpful to the LLM for understanding the code.
Maybe for existing models, but I don't think that's necessarily the case. AI tools that generate or manipulate images or video don't need human words in the format. Also, I'm not sure how much meaningful names help beyond a certain program size. Assembly is quite understandable locally - even for humans, but especially if you're an AI model trained specifically on it - and globally, even codebases in high-level programming languages are too large to grasp just as code.
> AI tools that generate or manipulate images or video don't need human words in the format.
AI image manipulation tools use the image as context just like text tools use text for context.
You can get an LLM to modify assembly if there’s enough context about what it’s doing, what the input means, what the output means, and so on provided manually.
A chunk of assembly by itself is missing a lot of context that is naturally embedded in higher level programming languages, though. Like variable names.
But a coding agent is free to write any relevant context elsewhere, where it is not necessarily constrained by the syntactic requirements of a programming language. When we write Assembly, we also tend to write comments. It's not like people can't program in Assembly. Most console games in the eighties were written in Assembly, for example. I used to write programs in Assembly in the early 90s.
The difficulty with Assembly is local reasoning, like register allocations (which was particularly annoying when we had few registers, some of which were specialised) and jump targets, which doesn't require a lot of context, but is still tedious compared to C. Global reasoning is pretty much identical to C.