8 ms·
It is actually a nice informative video, but the title is as dumb as dumbness itself. Software should not be perfect. It should be useful. In places where perfe
by avip 8y ago
It is actually a nice informative video, but the title is as dumb as dumbness itself. Software should not be perfect. It should be useful. In places where perfection increases usefulness (s.a autopilot), go ahead make it perfect. In most cases, striving for "perfection" is a profound misallocation of resources.
- dj-wonk 8y agoUpvoted since this is a useful comment and worth mentioning. I'd expect some downvotes are based on negative reactions to this part of the comment: "the title is as dumb as dumbness itself." (Dear avip: if your comment said "the title is off-base" you would have made your point just as effectively and without the downvotes.)
- avip 8y agoThanks, I really appreciate that (the message, not the upvote).
- vortico 8y agoYes, it gives the impression that the author thinks memory allocation errors are the only type of bug. Obviously there are thousands more, so it's kind of odd.
- dj-wonk 8y agoWell said. There are many kinds of behavior that may be considered "out of specification" or not adhering to a contract. Here are just four: * https://en.wikipedia.org/wiki/Undefined_behavior https://en.wikipedia.org/wiki/Undefined_behavior * https://en.wikipedia.org/wiki/Timing_attack https://en.wikipedia.org/wiki/Timing_attack * https://en.wikipedia.org/wiki/Thread_safety https://en.wikipedia.org/wiki/Thread_safety * https://en.wikipedia.org/wiki/Privilege_escalation https://en.wikipedia.org/wiki/Privilege_escalation Some of these probably don't come to everyone's minds right away. Please share your favorites. The behavior(s) that a particular language guarantees is a design question. Once those guarantees are specified, we can objectively evaluate a particular language in terms of how well it does according to its own standards.
- _cs2017_ 8y agoAgreed. However, I interpret the message from the video as "Let's make it really easy to achieve perfection". In other words if we keep improving development tools and technologies, we may eventually be able to achieve perfection in each individual project nearly for free. Whether this is realistic or not, I do not know.
- dj-wonk 8y agoI'll put it this way: "perfection" is too overloaded of a word to be particularly useful in this context. I prefer to say it this way: I want software to adhere to a contract. That implies that we want people that use the software to understand that contract. To be more precise, I'd say that: (1) a good contract defines the scope of correct behavior. (2) a contract may (or may not) give some bounds (or constraints) about what happens outside of the scope of correct behavior