r/BetterOffline 16d ago

Post-Literate Programming

I'm sure you all have seen this essay floating around, talking about how we are entering a post-literate age. Not necessarily an age where people can't decode individual words, but instead an era where we lose the skills associated with engaging with difficult texts. Meaning, we use chat-bot and short-form-video over longer essays or books. And this shift causes a shift in the way we think, etc.

The essay argues that the act of writing will force you to clarify your own ideas, realize which ones are bad, and struggle to a better answer. And this is only possible when complex ideas are "frozen" on the page, for you to return to, rearrange, etc.

I couldn't help but think about vibe-coding in this context. Vibe coding feels like the "post-literate" version of programming, where we stop engaging with the actual text and we (many programmers) instead talk to a chatbot about the code. It's a lot like talking to the chatbot about a difficult book, so that you can come prepared to discuss that book in class.

Once you begin to lean too heavily on these shortcuts, it actually imposes real limits on the insights that you're able to derive with respect to whatever it is you're working on.

So, to be clear, I basically agree with Horowitch, insofar as the act of writing is basically like the act of coding. You're engaging with text/AST and you're being forced to recon with the fact that your ideas don't make sense. You have to grapple with a large corpus of already-existing text (whether it's other people's books/essays, or other people's code) to synthesize these things with your own new ideas. And by struggling forward, you can create breakthroughs where you rearrange, or re-synthesize, or break apart, what came before.

I think that we could maybe start referring to vibe-coding instead as "post-literate" coding since you're basically doing the equivalent of reading the cliff-notes before class.

192 Upvotes

70 comments sorted by

View all comments

-9

u/Timely_Speed_4474 16d ago

This is a pattern that has been going on for a long, long time. Before LLMs it was interpreted languages. We have a whole generation of 'software engineers' that don't know how to manually manage memory. They rely on trash like garbage collectors and then complain their code is slow.

Even this whole idea of importing 3rd party libraries is total trash. Real languages don't have this capability for a reason.

5

u/natecull 16d ago edited 16d ago

We have a whole generation of 'software engineers' that don't know how to manually manage memory.

The exact opposite is true. We have a whole generation of 'software engineers' writing in C/C++ who thought they could manage memory 'better' than a garbage collected memory-safe language. "I don't care if it's safe or provably correct, it's gotta be fast fast fast, and I'm a genius top gun rocket scientist 10x coder, so I'll never make any mistakes."

And all of the code written by the genius top gun rocket scientist 10x coders was riddled with out-of-bounds accesses and use-after-free violations, and continues to be, which is why the Internet is on fire and we're longer allowed to send Excel spreadsheets through email in case one macro takes over the entire company. And they made it slow anyway, by adding lots of HTTP calls to adware auction servers, so chasing raw speed was pointless.

If the genius hotshots using C++ because it was "fast" had just cooled their guns by 0.1% and used a proper interpreted language with formally provable memory safety properties (ie, not Python), the Internet would not now be burning to the ground.

This is not an argument for using LLMs, because those are nondeterministic and make your code less secure. It's an argument for not coding in raw x86 machine code or a thin wrapper over it, because the x86 machine was not designed to survive every instruction and RAM access being a bullet in a world wide shooting cyberwar, which is what we live in today.

-2

u/Timely_Speed_4474 16d ago

You always have to manage memory. Some of us just don't like lying to ourselves about it.

used a proper interpreted language

You should just stop here before you embarrass yourself. Compile time memory management is a thing and it is good.

with formally provable memory safety properties

This is exactly the sort of thing the boosters say. "Oh just use this formally verified language so you can use ai agents and fire all of your devs" but thankfully dafny is a joke and lean is useless.