Everyone (in middle America) gets through at least hih school algebra...but why is mathematical and logical thinking, common to programmers, so rare? Even in the sciences it's considered a specialty to be able to aggregate data and external information, or to delimit one's own data output in a way that's useful beyond a narrative paper.
I think it may just be the case that it's nigh impossible to gain these logical/abstract insights without the practical experience of simple coding. I've tried teaching many people the difference between "8" and (the literal value) 8...it never seems to stick until you write and run a simple piece of code to test it out.