4 ms·
If you simplify a correct program, it will most likely still be correct. If you "correct" a simple program, it probably becomes complicated.
by the_gipsy 3y ago
If you simplify a correct program, it will most likely still be correct. If you "correct" a simple program, it probably becomes complicated.
- kazinator 3y agoIf you algebraically simplify a correct program it will be correct. But the simplicity which is at play in the context of "worse is better" is simplicity of requirement specifications themselves, before any code is written. (I think I'm the one who muddied the waters here by insinuating that correctness is a matter of debugging an incorrect program against a correct specification.) In projects that value simplicity over correctness, what that means is that what is considered correct (as in the requirement we shall implement) is the simpler requirements, which are regarded as incorrect by other projects. Programs that implement the complex requirements are vanishingly improbable to be simplified into programs that implement simple requirements, simply because those are breaking changes. E.g. you can't take a database engine that provides certain consistency guarantees and make it have weaker guarantees in the next version (for the sake of simplicity), without breaking all the applications that depend on the current guarantees. Correctness can be added --- including at the requirements level, not only debugging. It can be because it's often backwards compatible. E.g. adding handling for cases that were previously ignored.