> I find it rather scary that people write code for a living without understanding concepts such as this
It's scary but the industry is full of such people. In germany here it's really bad as we have 2 ways to become a (official) professional programmer:
1) Studying CS at the University
2) A 3 year apprenticeship where you learn to be a state approved "computer scientist with a specialization".
Way 2 is still pretty popular and though not all people going way 2 are bad there's not much fundamental CS theory you learn there. You work for 3 years in a company where they teach you their way of software development (and you have blocks of school lessons every few weeks). The education is pretty lacking in fundamental theory. The people only learn either .NET or Java (depending on the shop they are working in).
It's not uncommon that people can't tell you the difference between long and double (other than that one can has a decimal point). Don't start about pointers, manual memory management or things like stack frames/stack layouts. And they don't want to know that stuff. "Why should I learn that? The compiler/runtime does it for me!" is often an answer you hear.
It's scary but the industry is full of such people. In germany here it's really bad as we have 2 ways to become a (official) professional programmer:
1) Studying CS at the University 2) A 3 year apprenticeship where you learn to be a state approved "computer scientist with a specialization".
Way 2 is still pretty popular and though not all people going way 2 are bad there's not much fundamental CS theory you learn there. You work for 3 years in a company where they teach you their way of software development (and you have blocks of school lessons every few weeks). The education is pretty lacking in fundamental theory. The people only learn either .NET or Java (depending on the shop they are working in).
It's not uncommon that people can't tell you the difference between long and double (other than that one can has a decimal point). Don't start about pointers, manual memory management or things like stack frames/stack layouts. And they don't want to know that stuff. "Why should I learn that? The compiler/runtime does it for me!" is often an answer you hear.