Philosophy Asked on December 6, 2021
In computer programming, it has become fashionable for compilers (processors of computer language) to apply the following form of reasoning:
A language standard would permit a compiler to assume that a program will do X.
A compiler can determine that if a program were to receive input Y, it would not do X.
Consequently, the compiler should ignore any code that would only be relevant if the program were to receive input Y.
If one accepts that a language standard would impose no requirements upon the behavior of the system if a program fails to X, then it would likewise impose no requirements upon the behavior of the system if the program receives input Y. Something, however, still seems wrong with step #3.
Are there any disciplines other than compiler design in which permission to assume X would imply permission to disregard any evidence contrary to X?
You seem to assume that this assumption is absolute and that it allows the compilers to completely detach from reality.
I don't believe that this is the case and I am pretty sure that compiler design is as evidence-driven as all other human activities. That is, if such assumptions allow to create a compiler that, despite following the standards to the letter, will produce buggy, slow or otherwise worthless code, this compiler won't see much use and will be abandoned in favour of another one that makes more reasonable assumptions.
If my assumption is valid, this would make compiler design not particularly unique among various disciplines.
Answered by IMil on December 6, 2021
Tolerance limits might be a good example.
For example, engineers are often asked to design
shelves, that hold up to a certain weight;
electrical wires, that carry up to a certain electrical current;
web servers, that serve up to so many web clients;
towers, that withstand up to so much wind;
and other things that must work up to a certain limit. By knowing a limitation, someone designing a book shelf can ignore, say, the possibility that 10 tonnes of books might be piled on-top.
The underlying logic is that the designer (compiler, etc.) isn't held accountable for its behavior in the excluded cases, so it doesn't need to worry about them.
Answered by Nat on December 6, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP