<story><title>Using Programming Language Concepts to Teach General Thinking Skills (2008) [pdf]</title><url>https://people.csail.mit.edu/rinard/paper/wowcs08.pdf</url></story><parent_chain><item><author>davekinkead</author><text>While I think programming can be a good way to teach general thinking skills like perspective, clarity, precision, and abstraction, I&amp;#x27;m dubious about the claim that it is the best way to do so (§2.1).&lt;p&gt;Perspective - does learning multiple programming languages engender more awareness of different perspectives than say, learning multiple foreign natural languages?&lt;p&gt;Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?&lt;p&gt;Precision and clarity - does learning programming languages develop better precision and clarity than studying philosophy and logic?&lt;p&gt;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&amp;#x27;t _the best_ way to learn clarity &amp;amp; precision after all.&lt;p&gt;Where I thinking learning to program stands out as superior is that it teaches a skill that is currently in high demand - programming.</text></item></parent_chain><comment><author>TeMPOraL</author><text>Well, I think practical experience in programming can be[0] unparalleled in teaching one &lt;i&gt;precision&lt;/i&gt; and clarity of thought. One could think that any hard science or engineering discipline would do, but the truth is, programming is unique - because as they say, you can&amp;#x27;t bullshit the compiler. You have to get the details perfectly right at all levels, or else your program either won&amp;#x27;t compile or won&amp;#x27;t work. In math, it&amp;#x27;s easy to just not realize your reasoning doesn&amp;#x27;t make sense. In science, it&amp;#x27;s easy to bullshit yourself with data. In engineering, well... you can&amp;#x27;t argue with nature, but your feedback loop is still much slower than in software.&lt;p&gt;I&amp;#x27;d definitely say programming will teach you precision and clarity way better than logic and philosophy, because it&amp;#x27;s grounded in reality. If you want to build something cool and&amp;#x2F;or get paid, you have to &lt;i&gt;actually&lt;/i&gt; think things through; the compiler won&amp;#x27;t be impressed by your long paper loaded with smart-sounding words.&lt;p&gt;Also, a side benefit here is that some time spent thinking about representing real world in programs lets one discover just how imprecise, messy and ad hoc everything is - doubly so if it involves humans. I&amp;#x27;m sure I wouldn&amp;#x27;t internalize ideas like &amp;quot;map != territory&amp;quot; as well as I did if not for spending time thinking about modelling real world concepts in a computer program, and in the process realizing the &amp;quot;territory&amp;quot; they taught me in school was &lt;i&gt;just a map&lt;/i&gt; (and a pretty shitty one).&lt;p&gt;&amp;gt; &lt;i&gt;Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?&lt;/i&gt;&lt;p&gt;I don&amp;#x27;t know. I haven&amp;#x27;t done much mathematics at the level when it gets interesting. I know algebra feels to me to require very similar kind of thinking as a lot of programming work.&lt;p&gt;--&lt;p&gt;[0] - I say &amp;quot;can be&amp;quot;, not &amp;quot;is&amp;quot;, because I&amp;#x27;ve seen plenty of people who write code for a living, and yet their thoughts are as precise and reasoning as subtle as the Tsar Bomba. Somehow, some people don&amp;#x27;t seem to realize that the cognitive discipline they use when programming can, and &lt;i&gt;should&lt;/i&gt; be applied to &amp;quot;normal life&amp;quot; too.</text></comment>
<story><title>Using Programming Language Concepts to Teach General Thinking Skills (2008) [pdf]</title><url>https://people.csail.mit.edu/rinard/paper/wowcs08.pdf</url></story><parent_chain><item><author>davekinkead</author><text>While I think programming can be a good way to teach general thinking skills like perspective, clarity, precision, and abstraction, I&amp;#x27;m dubious about the claim that it is the best way to do so (§2.1).&lt;p&gt;Perspective - does learning multiple programming languages engender more awareness of different perspectives than say, learning multiple foreign natural languages?&lt;p&gt;Abstraction - does learning programming languages develop better use of conceptual abstraction than say, mathematics?&lt;p&gt;Precision and clarity - does learning programming languages develop better precision and clarity than studying philosophy and logic?&lt;p&gt;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&amp;#x27;t _the best_ way to learn clarity &amp;amp; precision after all.&lt;p&gt;Where I thinking learning to program stands out as superior is that it teaches a skill that is currently in high demand - programming.</text></item></parent_chain><comment><author>seanmcdirmid</author><text>It is difficult to gather empirical data on human behavior and efficiency, so I wouldn&amp;#x27;t ding Rinard points for that (as a systems PL researcher from MIT, he surely knows how to measure numbers). You&amp;#x27;ll find the lack of useful empirical data for most any pedagogic technique (what we can measure is performance in simple tasks, by this doesn&amp;#x27;t scale up).&lt;p&gt;Math and philosophy are hella abstract, while learning through programming at least has the learner building something concrete that can be more gratifying. When maintaining the student&amp;#x27;s interest is much of the battle, it might not matter as programming is not better than the other approaches, it only needs to be good enough.</text></comment>