TITLE: Language and Thinking AUTHOR: Eugene Wallingford DATE: December 16, 2016 2:14 PM DESC: ----- BODY: Earlier this week, Rands tweeted:
Tinkering is a deceptively high value activity.
... to which I followed up:
Which is why a language that enables tinkering is a deceptively high value tool.
I thought about these ideas a couple of days later when I read The Running Conversation in Your Head and came across this paragraph:
The idea is not that you need language for thinking but that when language comes along, it sure is useful. It changes the way you think, it allows you to operate in different ways because you can use the words as tools.
This is how I think about programming in general and about new, and better, programming languages in particular. A programmer can think quite well in just about any language. Many of us cut our teeth in BASIC, and simply learning how to think computationally allowed us to think differently than we did before. But then we learn a radically different or more powerful language, and suddenly we are able to think new thoughts, thoughts we didn't even conceive of in quite the same way before. It's not that we need the new language in order to think, but when it comes along, it allows us to operate in different ways. New concepts become new tools. I am looking forward to introducing Racket and functional programming to a new group of students this spring semester. First-class functions and higher-order functions can change how students think about the most basic computations such as loops and about higher-level techniques such as OOP. I hope to do a better job this time around helping them see the ways in which it really is different. To echo the Running Conversation article again, when we learn a new programming style or language, "Something really special is created. And the thing that is created might well be unique in the universe." -----