
Falsehoods programmers believe about programming - semanticist
http://www.sicpers.info/2017/12/falsehoods-programmers-believe-about-programming/
======
spookylukey
> There is some innate affinity for computer programming which you must be
> born with, and cannot be taught.

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.

~~~
beisner
Nobody will argue that there are certain things you must be born with in order
to learn to program. If you are born without a brain - literally without the
brain organ - you likely will not end up a successful programmer. This is an
absurd reduction, but the point is that there is a necessarily a set of
physiological properties one must possess to program. The question is then
whether a small group of people possess them, or whether a much larger group
do. I err on the side of the latter; while there are definitely aspects of
programming today that are pretty inaccessible (I’m looking at you, arcane
Unix shell conventions and invocations), the fundamental practice of reducing
abstract tasks into fundamental steps is a skill that I believe most humans
have the ability to learn.

------
spicymaki
I have this hypothesis that everything I believe is wrong. Probably best not
to cling too tightly to beliefs.

~~~
logicallee
I thought you were going to end your sentence like this:

>I have this hypothesis that everything I believe is wrong. Probably best not
to cling too tightly to that hypothesis.

~~~
mchahn
Maybe unrelated, but one of my favorite sayings is "moderation in all things,
including moderation".

------
0xcde4c3db
> Compiled languages are always faster.

More like: there is such a thing as a "compiled language".

~~~
roryisok
That points to an article saying java is sometimes faster than c++. Maybe I'm
just being dumb but isn't java compiled too?

~~~
jghn
You see some people refer to Java as a compiled language because of its
compilation to byte code

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

------
catnaroek
> at least the outcome of _integer_ maths is always defined.

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.

~~~
mcphage
> Assuming you mean “integer arithmetic”, the answer is a resounding yes, it's
> well-defined.

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...](https://en.wikipedia.org/wiki/Non-
standard_model_of_arithmetic)

~~~
catnaroek
> However, even in the case of mathematics, this isn't true—there are a lot of
> non-standard models of arithmetic

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.

~~~
mcphage
> Meaning is to be found in the axioms themselves, not in models.

Yep, and all of them are incomplete.

~~~
catnaroek
[https://en.wikipedia.org/wiki/True_arithmetic](https://en.wikipedia.org/wiki/True_arithmetic)
would like to have a word with you.

(Of course, it's not recursively axiomatizable.)

~~~
mcphage
> Of course, it's not recursively axiomatizable.

Then again, who is these days?

~~~
catnaroek
> 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.)

------
b4lancesh33t
List of article themes that are played out

------
known
Reminds me
[http://programmer.97things.oreilly.com/wiki/index.php/Write_...](http://programmer.97things.oreilly.com/wiki/index.php/Write_Code_for_Humans_not_Machines)

------
ryanmarsh
_bug-free computer hardware is completely deterministic_

This. The CPU has been a chaos box for at least the past 17 years. If not
longer.

------
jimmaswell
Not a good sign when the very first item is entirely subjective.

~~~
zAy0LfpBZLC8mAC
So, you think it is entirely subjective that programming has an ethical
impact, and objectively it doesn't?

~~~
jimmaswell
A classic way it's phrased is "is a gun manufacturer responsible for murder?"
It's an age old debate with a lot of people arguing either side.

~~~
zAy0LfpBZLC8mAC
... which is just an idiotic question to ask. The answer is ultimately
uninteresting because it is essentially nothing more than a reflection of the
definitions used in evaluating the question.

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.

------
IshKebab
Terrible list. Lots of things are straw men, or just wrong. And do we _really_
need another one of these lists? Next we'll be back to "X considered harmful".
Ugh.

~~~
dang
Could you please not respond to what you feel is a bad article by posting a
bad comment? I understand the temptation, but there's no information here, and
we're hoping for a little better than "ugh".

~~~
IshKebab
I don't see why I should have to really. Have you heard the argument that
bullshit is a lot easier to create than to refute?

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.

------
apple4ever
"Swift is a good language"

