Using Programming Language Concepts to Teach General Thinking Skills (2008) [pdf]
While I think programming can be a good way to teach general thinking skills like perspective, clarity, precision, and abstraction, I'm dubious about the claim that it is the best way to do so (§2.1).Perspective - does learning multiple programming languages engender more awareness of different perspectives than say, learning multiple foreign natural languages?Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?Precision and clarity - does learning programming languages develop better precision and clarity than studying philosophy and logic?These are all empirical questions and no empiric data is provided.  The lack of support in the argument for the conclusion given also hints that maybe learning programming isn't _the best_ way to learn clarity & precision after all.Where I thinking learning to program stands out as superior is that it teaches a skill that is currently in high demand - programming.