Earlier quoted context omitted.
>We have some formal verification, it's called typed systems. Very limited, I know. Very limited. In my many years of experience doing software professionally, the serious bugs, that is, the ones that took us more than one day of debugging (after such a bug was able to be reproduced), were the ones that had nothing to do with types but with * bad understanding of the business rules * bad fundamental implementation of…
> In my many years of experience doing software professionally, the serious bugs... > This is not just a claim, this is my personal experience after about 23 years of programming where 90% of those years were spent using statically typed systems. If most of your experience was with statically typed systems, it's just logical you would have very little experience with bugs that are prevented by statically typed system…
And then, when I used a dynamically typed language (Python) for serious stuff for the first time, I didn't miss those checks. Sincerely, the great majority of those "bugs that are prevented by statically typed systems" are bugs that only a novice programmer would make.
Moreover, a dynamically typed language with strong typing (Python & and many others) would prevent those bugs anyway; the only difference is that the check is done at runtime, not at compile-time. You do need to test the system at runtime anyways (no matter what language), so it isn't a big deal.
It's only dynamically typed languages with WEAK typing the ones that give "dynamically typed" a bad name. (In)famous examples: Javascript and PHP. Perhaps your experience of dynamically typed languages has been with Javascript?