Sapir-Whorf and Programming Polyglots, pt 2

Posted on Posted in Blog

Previously, I wrote about the Sapir-Whorf hypothesis, the idea that your perceptions of reality are influenced by the language(s) you speak. Here’s why I bring it up: programming languages, while not languages in the technical linguistic sense, are definitely wibbly-wobbly languagey-wanguagey stuff. Programming is a communicative act.

So how does Sapir-Whorf apply to programming languages? I’ve found the effect to be far more pronounced than in spoken languages. Learning new programming languages forces you to deal with new ways of labeling, ordering, grouping, and manipulating ideas. You gain insight into what are universal truths and what are merely conventions. Solving a problem in an object-oriented way looks very different than solving a problem in a functional way (and if you don’t believe me, it’s time for you to learn Scala), and depending on the problem at hand, one approach or the other might be obviously better. Or they might be more or less the same, sure; but when you can consider solutions from such different approaches you are more likely to notice things about the problem you might otherwise have missed. It has a way of exposing your assumptions and revealing unknown unknowns. In short, it makes you a better problem solver. I was monolingual in JavaScript for a brief but unfortunate period—and yes, certainly, you CAN technically build a server in Node, but… well, learning C# felt a lot like being handed 8 new color categories. It was a whole new world.

So strive to be a programming polyglot. Don’t do it because it’s good for your resume, or because it’s a fun puzzle, or for bragging rights (though these are all fine reasons in themselves). Do it because it rewires your brain to more deeply perceive reality. Learn a language that’s really different than the ones you use every day. Explore the bizarre impractical ones. Embrace the headache.