2 ms·
This "falsehoods programmers believe" is fundamentally different from the more classic ones (e.g. "about names") because its topic is also wholly controlled by
by morelisp 6y ago
This "falsehoods programmers believe" is fundamentally different from the more classic ones (e.g. "about names") because its topic is also wholly controlled by programmers. That means in the end it doesn't share much with those documents, but can instead also be characterized as "just" a list of bugs in other programs.
If a program doesn't handle my name, that's a problem with the program. My name is my name; the program doesn't decide that. Depending on the context some government might; the program also generally isn't supposed to decide for the government. Often in practice the program controls both of us; this is the core complaint of "falsehoods" articles, that a program artifact is overstepping its ethical/legal/otherwise extra-computational authority.
But there's no moral demand that e.g. a program exit with 0 status even when it's failed, or that build trees should be cyclic. These are tools by programmers and for programmers concerning programs and when we run into issues it's usually because we chose a poor modeling tool (e.g. a build system should not be ideal to calculate the fixed point of a data processing pipeline, independent of any cycles) or because of a flat-out mistake (there's no reason a compiler can't be given some output directive other than inventor oversight).
Other "falsehoods" are criticism of the software encoding the falsehood, but I read probably 90% of the complaints here as equal or greater failings on the tools invoked. Not only for the sake of my build system do I want DAG pipelines, updated timestamps, or meaningful exit codes - if anything these are the demands I wish to place on other software for the sake of my brain! More like "falsehoods compilers believe about their primacy in program generation."
Or as one of the comments suggests,
>
build systems are a symptom of software languages that are not designed to build software systems