(no title)
ebingdom | 3 years ago
That said, I'm all for anything that results in more appreciation for mathematical rigor in programming. It's like puling teeth trying to get colleagues to use tools/languages that help with reasoning about code (even just a good type system), and for a lot of programmers math seems to be an unapproachable alien language.
One thing I'd like to change about the software industry is the perception that formal verification is too hard to do in practice because you can't even write down a complete specification for the program. The misconception there is that the all of the program's behavior needs to be specified in order for formal verification to be useful. Why can't gradual formal verification be a thing?
mikedodds|3 years ago
For system reliability at scale, I think that stronger type systems and systematic testing techniques are probably the best choice. Anyway, that puts the system in a much better state if you want to apply formal verification later.
userbinator|3 years ago
is the perception that formal verification is too hard to do in practice because you can't even write down a complete specification for the program
I think the main problem is that it's too formal. Turning something that is really about simple logical deduction into thick abstract maths is sure to dissuade the majority of the people who might find it useful. The elitist gatekeeping attitude that cryptographers tend to have doesn't help either.
mecsred|3 years ago
zmgsabst|3 years ago
I think the “middle ground” between things like typing and things like fully specified programs are things like CDK apps which hook IAM policy or network reachability tools to analyze your infrastructure (and, eg, exclude open ports on the backend).
Which is slowly happening, eg AWS or Prime Video.
https://aws.amazon.com/security/provable-security/
HWR_14|3 years ago
mrslave|3 years ago
[0] https://softwarefoundations.cis.upenn.edu/
jnash|3 years ago