Post

A friend was a TA for an intro programming class that was heavy on the AI, and students didn’t understand why their code worked at the end, even though they had complete programs. Scary to think about a generation of programmers working in this way.

Okay so the real talk here is that people used to say this about assembly when it was new. ā€œThey don’t even understand the machine code they generate anymore. Look how bad and wasteful their programs are.ā€ Yet, we continued.

I think it’s a mistake to compare this to C++/assembly. In those cases we got better abstractions, but people still had to understand what they were doing. Now we are saying ā€œyou can just keep typing prompts in until it does what you wantā€. IMO that is not a new abstraction.

something I’ve been nibbling on the edges of: there’s (at least some) work as imagined of programming that leads to a mental model of ā€œwrite instructions, computer executes themā€ that, in modern practice, isn’t quite true. It’s already a bit like plinko as code descends through abstraction layers

not _really_ plinko, but from a code authoring standpoint, unless I am one of the most sophisticated and well versed in the field, imagining how my lines of code become processor instructions… is a lot, and not really my primary mode of thinking

yes, exactly! and even then: do you think about the way that your processor's cache coherency works, at all times? no! or how the electricity makes the hardware function to do those jobs? not at all. it's always been a fuzzy understanding

do you consider code not a language? that is, what is the distinction you're drawing between english and javascript (or whatever)? we use the same tools to talk about both: grammar, structure, semantics...

Code is not a language in the same way English is a language. One is for making transistors flip in the right order, another is for people to express their hopes, dreams, ideas, longings. I think it’s a mistake to say an LLM is ā€œtranslatingā€ from English to python.

gotcha. i feel very differently, personally. but i also know that i tend to have a broader view of compilers than a lot of people (I think 'transpiler' is nonsense, for example)

coming from a language/psych background, something that I think underpins this is, while English and Python can both be languages, the way we use English is different. we are not just ā€œcompilingā€ or even decoding English, we negotiate, a lot, to develop and refine models of meaning

we do a little of this with programming languages, developing mental models of how a compiler works, for example, but it’s not as fast, iterative, recursive, or as multi-faceted as human-to-human language, because each individual is perceiving and interpreting differently, from moment to moment

The job of a programming language is to allow humans to easily tell computers precisely what to do. If you need a translation layer from your thoughts to that language it’s a sign that either the programming language is not doing its job or that your brain is broken. :)

Because you can still formulate your thoughts fine, let’s rule out that something is wrong with you. Hence, there must be something wrong with the programming language or environment. And unfortunately there’s so much wrong with programming these days; mainly it is needless complexity.

This is one of the main things that bother me about using LLMs as a generalized ā€œsearch engine and code generationā€ tool. It’s a bad solution to a problem that could be much better fixed in other ways. But now it’s probably never going to get fixed be side it would go against strong interests.

0 reposts0 likes

No replies yet.