Hacker News new | past | comments | ask | show | jobs | submit

Why writing correct software is hard and why math (alone) won’t help us (2016)

https://pron.github.io/posts/correctness-and-complexity
loading story #50465825
loading story #50471641
loading story #50466743
loading story #50466500
loading story #50474108
loading story #50472826
loading story #50473663
loading story #50465517
loading story #50475115
loading story #50475076
loading story #50467752
loading story #50465768
loading story #50467151
loading story #50472185
loading story #50472939
loading story #50466103
loading story #50468753
loading story #50466253
loading story #50466682
loading story #50474648
loading story #50466406
loading story #50471040
loading story #50468198
loading story #50470341
loading story #50474390
loading story #50470320
loading story #50472962
loading story #50470212
loading story #50468895
loading story #50468732
loading story #50467586
Sometimes I wonder whether Silicon Valley programmers take this kind of difficult programming as a given. I tend to think in terms of simple programs, and while formal verification isn't bad, I question whether that's really software development.

I know that in the AI era, with code being generated in enormous quantities, formal verification is important. It is effective to some degree, but in my view, software that requires provable correctness is only a subset of all software, and I agree with the author that a kind of empiricism is the right approach. Because most of it is based on understanding a customer's "requirements." And if we consider that not all requirements can be formally proven mathematically, then in practice the line between where formal verification is used and where it isn't will become clearly drawn.

Formal specification is the work of deciding where the target is, and formal verification is the work of hitting that target with an arrow. But most of software development is the work of deciding where the target ought to be. Formal specification is like shooting an arrow at a moving target and hitting the bullseye, but figuring out where to pin that target down is software development, and honestly, most of software development spends more time pinning the target's position. Especially in the AI era, even more so.

loading story #50468139
loading story #50468423
loading story #50471089
loading story #50468522
loading story #50468396
loading story #50465860
loading story #50467003
loading story #50466662