> -- Donald Knuth (if I recall that exact quote correctly)
Just because you have proven the correctness of your code, that does not mean that it is infallible. Especially -- as a lot of HN users point out -- there's intricate complexity that is likely to cause erroneous behavior if several interfaces/complexities get combined. And those might be caused, for example by a 'user' setting the driver to 'db.backend.sqlite' instead of 'db.backend.sqlite3'; and then you have suddenly an unexpected configuration.
[–] phorkyas82 3 days ago
[–] raphlinus 3 days ago
[–] Loquebantur 3 days ago
That's why it doesn't suffice for only LLMs to know the relevant stuff.
You can't have a zoo run by animals.
[–] Revanche1367 3 days ago
[–] gfody 3 days ago
[–] sach1 3 days ago
[–] devonzh 3 days ago
[–] 59percentmore 3 days ago
On that note, "Esoteric Superweapon Monopoly Corp" would also make a great band name.
[–] prcrstntr 3 days ago
[–] LeFantome 3 days ago
[–] hinkley 3 days ago
[–] socalgal2 3 days ago
[–] ourmandave 2 days ago
Can god make a zero-day even he can't find?
[–] ElectricalUnion 2 days ago
[–] svachalek 3 days ago
[–] hinkley 3 days ago
Inconclusive tests to increase automation and coverage accomplish less than nothing. The opportunity cost, the loss of trust, the conflation of the manual testing surface area, are all worse than doing nothing.
The point of testing is to establish a level of trust. That level doesn’t need to be 100%. It can’t be 100% regardless. So you do what you can, and you solve the remaining problem a different way. But you need to know it’s there to address it, and the smoke and mirrors fight that.
[–] annzabelle 3 days ago
Every 6 months there was a new testing initiative, which seemed to all be responded to by writing wrappers that returned true to the test automation system we were ordered to use.
[–] hinkley 2 days ago
[–] latentsea 3 days ago
[–] hinkley 2 days ago
[–] latentsea 2 days ago
[–] gopher_space 1 day ago
A base exercise in this vein would be asking someone to describe how a failure state they're checking for could come to exist in your current system.
[–] skydhash 3 days ago
All languages are built on top of an ISA, whether directly (assembler), or by mapping it to an abstract machine. The you have the dreaded “eval” function. Then because a lot of software lives on top of an OS, there’s all the virtualization that is going on (timesharing, virtual memory, filesystems,…). Memory safety is nice, but it doesn’t help you when the attacker send valid, but malicious data from a compromised source, or by exploiting a logic error.
And for kernel code, where everything is accessible to everyone, it’s much a matter of discipline, especially with so much hardware interrupts and syscalls from userspace going around. Most kernel code has very short lifecycle, it’s the data that is long lived, and it’s a shapeless blob in memory that you have to trust the other party kept in good shape.
[–] eru 3 days ago
[–] jopsen 3 days ago
There will also be compiler bugs, etc.
The point is fewer bugs.
[–] kolinko 3 days ago
[–] hinkley 3 days ago
Anyone who has ever wielded a wrench should know that implicitly.
[–] MisterMunchkin 3 days ago
That’s the whole point, you can find all of these things which would take far too much manual effort.
[–] wolrah 3 days ago
https://en.wikipedia.org/wiki/Zero-one-infinity_rule
The rule is about data structures but I feel it has wider applicability user choices in software. You should either give the user no choices, give them individual binary choices, or let them pick anything that could theoretically be valid and design your system to assume they'll sometimes pick invalid options which will need to be handled appropriately.
[–] telebub 3 days ago
[–] hinkley 3 days ago
Is that what you intended to type?
Software is not required to support the requirements of every potential user. Only the ones they mean to support. That’s why Porsche and BMW ignore people complaining about how expensive they are. You aren’t their customer and they don’t want you.
[–] telebub 3 days ago
[–] hinkley 3 days ago
[–] telebub 3 days ago
[–] timschmidt 3 days ago
[–] solyin 3 days ago
[–] wizzwizz4 2 days ago
[–] timschmidt 2 days ago
[–] eru 3 days ago
Yes, but it gets you pretty far already.
[–] casey2 3 days ago
[–] moomin 3 days ago
Personally I think proving Kubernetes, for instance, would be an exercise in pure frustration. There’s just too much to do.
[–] hinkley 3 days ago
I say that as someone who sees Knuth as problematic in other respects starting in the 2010’s. Physics governs so much of computational complexity now that I think the idealized form he presents has transitioned from merely holding us back to being crippling. Only game designers, hyperscalers, and an esoteric few of the rest of us seem to understand the vast gulf between theory and practice that has developed in the five orders of magnitude that compute power has experienced since his first edition.
Many, many things that are considered constant in his world are instead logarithmic to the size of the data being managed, or in the case of very large data sets, order n^1/2 because of speed of light and thermodynamics. That vastly reorders the toolbox, because second shelf algorithms now rival or beat the top shelf ones and some options even farther down now become interesting for novel situations.
[–] Quimoniz 3 days ago
Regarding your remark "[...] because second shelf algorithms now rival or beat the top shelf ones [...]". That is honestly something I would never have believed back in the 2000s, Windows XP era:
I thought we needed more than the classic mathematical operations and if/else for an operating system that drives the modern world like it had been envisioned by sci-fi in the past 100 years.
That turned out to be wrong: Your modern android with a couple of simple apps is everything a man from 1900 might ever conceivably want from technology.
And it is all if/else/while and mathematical operations.
It turned out you just needed enough of these, to get everything working nicely.
Watching in awe. Watching in awe.
[–] 27183 3 days ago
[–] devin 3 days ago
[–] 27183 3 days ago
I do think that most software out there is unsafe. That doesn't make it useless, but if the effort required to exploit vulnerabilities is decreasing we will probably need to stop building things that way.
Or the second one, that I would have attributed to Dijkstra, too: “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.” C.A.R. Hoare, The 1980 ACM Turing Award Lecture