2 ms·
With regards to static-analysis capability as an aid to developer productivity, I agree with you: find the compromise that best suits your preference. With reg
by zbentley 9y ago
With regards to static-analysis capability as an aid to developer productivity, I agree with you: find the compromise that best suits your preference.
With regards to static-analysis capability as a means of ensuring code reliability, I don't agree. Some people (I'm not characterizing you here since I am unsure if this is your position) consider static analyzability to be equivalent to a strong type system or various safety guarantees with regards to making code's behavior verifiable and/or predictable.
If you subscribe to that belief, having an 'escape hatch' that lets you use features of a platform that violate the analyzability guarantees is a virtual guarantee of trouble. I'm put in mind of Rust's "unsafe" areas (there are many other examples of this phenomenon): not only do people routinely overuse them (out of ignorance or misplaced, incorrect, and unverified assertions of "elegance" or "performance"), but their existence at all compromises the ability to verify even small subparts of the greater program: https://news.ycombinator.com/item?id=15146330 https://news.ycombinator.com/item?id=15146330
Having analyzability/guarantees with an escape hatch is better than having none at all, but a lot of people don't understand the tradeoff there.
- paulgb 9y agoThat's a good distinction, I agree with you. I hope that some day it's practical write code for browsers that is statically analyzable. I feel like the programming community was quick to give up static typing when CPUs got fast enough that the performance hit was irrelevant (for many uses), and now we are starting to realize that types were a good idea for correctness too.