Hacker News new | ask | show | jobs
by ChrisLTD 3 days ago
How can the code no longer matter? It literally is the logic (not to mention performance, and reliability) of the software.
1 comments

You might say in the same way that machine code stopped mattering when programming languages gained in popularity. Almost nobody will ever review machine code. I anticipate 90% of all programmers today wouldn't even know how. The move again is towards a higher level of abstraction; this time validation. Instead of describing how the program is to function, you define the properties of the system and let the fancy compiler figure out what the code should look like. If that means something that a human would call spaghetti, oh well.
I can be 99.99999999% certain when I write an if statement like "if (x > 1) do y" that the compiler will turn that into the equivalent machine code. So, yes, unless I hit some crazy performance bottleneck, I'm not concerned about reviewing the machine code.

However, LLM outputs change with slight re-wording of prompts and with each new model release. I could hand write a test that says if x > 1 make sure y happens, but then what productivity was gained?

Just like you can be 99.99999999% certain that your properties will eventually be satisfied when the fancy compiler turns it into equivalent code.

If your program is truly nothing more than that "if" statement then there is unlikely to be any productivity gain, just as there is no real productivity gain using a programming language over flipping toggle switches for something so simple. Programming languages would have never been invented if that bit of logic summed up the entirety of computer science. In the real world, the calculus starts to change when you are trying to solve bigger problems. A lot of solutions require way more code to implement than to describe the necessary properties of. That is where you can gain some huge productivity gains by being able to focus on declaring the properties over having to define the full implementation.

But, again, it is not a panacea. No such thing exists. Every abstraction brings its own set of tradeoffs. Your job is to find the tradeoffs you can accept for your unique circumstances. What others are doing is irrelevant to your situation, but it remains that others are doing things and it can be fun to learn about it.

You're over-indexing on the (erroneous) idea that my example meant that the program would be a single if statement.

> A lot of solutions require way more code to implement than to describe the necessary properties of.

That's true to an extent, the additional code often define the emergent and undiscovered properties of a system.

> the additional code often define the emergent and undiscovered properties of a system.

That's the cost of abstraction. Everything has tradeoffs.