2. Humans don't mean what they say.
Compilers are of course perfectly literal. They don't care at all what you mean, they are always hung up on precisely what you say.
Even if you didn't start off life as an anal-retentive git, you'll slowly gain the requisite faculties over years of trying to please a compiler.
The art of trying to please a compiler consists of the ability to logically, dispassionately, analyse what you've said, to discover and remove any mistake or ambiguity - to always produce an output that is perfectly comprehensible to the strictest of master.
Trying being like that around real people. Just try it.