One of the issues here is, I think, that the Arduino (and indeed many modern devices, like phones) are marketed as being "easy to use". For example, on the Arduino home page:
Arduino is an open-source electronics platform based on easy-to-use hardware and software. It's intended for anyone making interactive projects.
It's intended for "anyone" and is "easy-to-use". Right. So users come into it with the expectation that anyone (eg. non-programmers, people who know nothing about electronics) will find it "easy".
Second, although those of us that are used to C/C++ find it easy to read, for a newbie, it must look hopelessly confusing (as it did to me when I switched from Pascal).
Consider the brackets: { } [ ] ( ) < >
They mean something to us, but not to beginners. Why should this work:
int foo (int a)
{
b = c;
}
But not this:
int foo {int a}
(
b = c;
)
No obvious reason, it's just how things are.
Then there are the functions .
Our code is littered with "voids". Example:
void loop ()
{
foo ();
}
In other languages (eg. Lua, PHP, Javascript) they are functions:
function loop ()
{
foo ();
}
No wonder users think that we C programmers must call functions "voids" and bang on about what their void is doing.
This is not intuitive. And for people who have been told that it is "easy" they get confused, angry even.
Calling functions. In some languages (eg. Pascal) if a function call takes no arguments, you can omit the brackets.
So people write:
turnPumpOn;
And expect it to work. Now we know it doesn't but it isn't obvious why.
The bottom line is, they are seeing a different world to us. We need to be patient. Of course we wish they would read the FAQ, the posting guidelines, use code tags, and try Google before posting an obvious question. Sadly, that doesn't always happen.
PS. Moving this to Bar Sport, it isn't a programming question.