logoalt Hacker News

FjordWardentoday at 3:04 AM3 repliesview on HN

That is not what the text is arguing for and it has many good ideas, dropping the abstractions but keeping the test harness is one of them. I've worked on many aspect of programming language implementation through the years and I would struggle with the abstractions of parser-generators and bytecode designed by committee like an enterprise Java developer struggles with the Hibernate ORM. Dunno what people are putting in their prompts but ask LLM to roofline and it will pursue that target like a bloodhound.


Replies

socketclustertoday at 3:21 AM

Many abstractions we encounter in software industry are poor abstractions which are counter-productive. I agree that we should drop those...

But we can't drop all abstractions. It's not physically possible. The AI agent is going to break logic up into files... The AI will create/impose an abstraction for each piece of logic whether we like it or not.

So saying "drop abstractions" is actually saying "let the AI decide what the abstractions should be" and unfortunately because LLMs are trained on average code, those abstractions are often pretty poor.

Coming up with the right abstractions is actually one of the main skills which AI hasn't automated and where the human brings the most value. It affects maintainability directly; including when using AI.

I've worked on projects with poor abstractions and ones with good abstractions using AI. The ones with poor abstractions require 10x to 100x more tokens and time to solve problems and implement new features. You're constantly fighting it to prevent it from coming up with nasty hacks and workarounds. Poor abstractions create the need for hacks and workarounds.

AdieuToLogictoday at 4:00 AM

Software abstractions are a reification of problem domain understanding. They embody a solution within the mathematical constraints of a programming language such that the collaborations, when done properly, appropriately reflect said understanding.

Discarding abstractions is nothing more than rediscovery of a Big Ball of Mud[0].

0 - https://www.laputan.org/mud/mud.html

vatsachaktoday at 3:18 AM

Abstractions aren't a burden though, they are more like a support. A good abstraction let's you write 10 programs in the time it would have taken to write one. Also, we now have "production" languages with generics and monomorphization so abstraction is easier than ever.

Djikstra has a great article as to why English language programming will always be second to a programming language. A "formal system" (edited from regular language) is the most precise way to specify things. An "abstraction" is basically a domain specific language.

The way I like to use LLMs is to build abstractions. I like to build mathematical code and ask the LLM to use it. I think that LLMs are very mathematical thinkers and they like it when they see Semigroup<T>. And it's not hifalutin either, I'm processing calculations along DAGs with a million+ nodes in milliseconds, thanks to abstractions

show 1 reply