Falsehoods programmers believe about programming
sicpers.info
sicpers.info
This being a falsehood is a matter of considerable debate, and it's impossible to prove (There are certainly some people with very low ability for computer programming, to the point of effectively useless. How would you prove this was entirely nurture and not nature?). This is a not a good candidate for a "list of falsehoods" article.
"No, we're definitely not doing that."
"But boss, the vendor just announced (xyz tidbit)".
"Okay, we are definitely doing that."
So it was "strong" because of the word "definite" (it was clear a decision was made) but in fact was open to change in light of the new information? (because it only took a small tidbit to change it)Is this what you're describing?
For example, we might have the opinion at our company that REST is the way to build communications over a stateless connection. If a team presents a reason to build RPC and makes a case, it’s allowed to do it.
Another example might be style conventions. Strong opinions here lead to consistently written code. But in some cases a new style will work better and we can change direction. Or a different style fits this file better than all others.
We don’t want to be so hemmed in by our opinions so as to be inflexible to different approaches to the same problem. But that doesn’t mean having no opinion.
I think actually both examples you gave show that the opinion was not "weakly" held: for REST, you mention "if a team presents a reason... and makes a case". For style conventions, likewise, "we can change direction" but the whole point of a uniform style guide is that the style convention itself has huge momentum and can be changed only if there is a very specific case where it "fits better" (your words).
So it seems what we're really saying is something like "we know what we think, but we think about what we 'know'." (I tried to be pithy but came up a bit short.)
Is that a fair summary? That it's about both assertively knowing something, but also being ready to rethink it (if there is a case)?
(Substitute decision with belief)
>I have this hypothesis that everything I believe is wrong. Probably best not to cling too tightly to that hypothesis.
“Everything you know is wrong, but some of it is useful for approximation.”
More like: there is such a thing as a "compiled language".
But the article isn't talking about that. It's referring to the canonical implementations used by each language, which is occasionally, but rarely, both compiled and non-compiled.
Interesting... very meta :-)
You see other people point out that Java is not a compiled language as it’s only converted to byte code.
This is one of the few tech pedantic debates where I’ve chosen to not pick sides
Assuming you mean “integer arithmetic”, the answer is a resounding yes, it's well-defined. Of course, so-called “machine integers” are not a faithful model of the integers, and, in particular, so-called “signed integers” in C aren't a faithful model of anything nice.
Hint: There's no such thing as a “minimum integer”.
Given that the topic of this article was falsehoods about programming—no, the author did not mean "integer arithmetic".
However, even in the case of mathematics, this isn't true—there are a lot of non-standard models of arithmetic, and which you choose depends on what you're trying to do with it: https://en.wikipedia.org/wiki/Non-standard_model_of_arithmet...
Believe it or not, there are people who use actual integers in computer programming. Not everyone is stuck with C and its ilk.
> However, even in the case of mathematics, this isn't true—there are a lot of non-standard models of arithmetic
Meaning is to be found in the axioms themselves, not in models.
Yep, and all of them are incomplete.
(Of course, it's not recursively axiomatizable.)
Then again, who is these days?
I have no idea what you mean by “who”. In any case, let's trace the conversation back to the original topic:
(0) Integer arithmetic is well-defined. Nonstandard models of arithmetic are just that - models. The well-definedness of a theory doesn't depend on the existence of a unique model.
(1) The fact you're programming a computer doesn't magically change the properties of the integers. It is even possible to have a data type for integers! (Not in C, though.)
This. The CPU has been a chaos box for at least the past 17 years. If not longer.
The interesting question is whether the decisions and actions of a gun manufacturer can influence the well-being of humans, and even more importantly, how they do so, as it is just obvious that they can, and in the consequence how gun manufacturers should behave if they are to maximize their positive impact on humanity.
Anyway fine:
> There is some innate affinity for computer programming which you must be born with, and cannot be taught.
Clearly true. Anyone who has been to a non-profit educational school knows there are some people you simply could not reach to program. Of course more people could program than do, but that isn't what he said.
> Compiled languages are always faster
Nobody sane would claim this. People say compiled languages are generally faster, which is true. Besides his link refuting this is to Java, which is compiled! (Just In Time).
> at least the outcome of integer maths is always defined
Yes it is in nearly every programming language.
> every computer on sale today (2017) uses two’s complement notation for negative numbers.
To a rounding error, yes this is true. His link is to a computer from the 60s. Seriously.
> every computer on sale today uses a register width that’s a multiple of eight bits.
Again, probably 99.9999999% do. Actually... Probably more.
I could go on.