← Back to context

Comment by archagon

2 hours ago

What is an abstraction? An abstraction is far more than a black box. From a previous comment:

> High-level programming languages use well-defined, limited syntax to encode program behavior in a deterministic way. Compilers translate these directions into programs that should have identical behavior between compiler runs and between different compilers. (If they don't, that's a compiler bug, or else an artifact of UB.) This means you can structurally and provably rely on the high-level programming layer without worrying about what's underneath: the assembly is abstracted away. You also get the massive benefit of being able to tweak and improve the assembly layer independently of the programming language layer, so long as the contract between language and compiler is not violated.

> If AI is a "layer of abstraction," so is working with a bunch of contractors to make your app. The definition is broadened to the point of absurdity. (Solely: "I don't have to think about code anymore," which only touches on the most superficial aspect of an abstraction.)

With a good high-level abstraction, I can mostly think on the level of the abstraction, but I can also dive down through the layers and figure out what's actually going on in each one.

> Would you look at a piece of code elegantly using high-level abstractions to model some problem written by a human and go "see, look, code is beautiful"... and then look at the exact same code written by an LLM and say "this is slop"?

Using is one thing; inventing is another. I have seen no evidence that LLMs have the capacity to discover and leverage new abstractions. To me, that's the most exciting part of programming: finding ways to reify powerful concepts and then turn complex tasks into simple ones, ad infinitum.