[ Content | View menu ]

Sapir-Whorf Hypothesis

Mark Mzyk | February 27, 2009

The Sapir-Whorf hypothesis says that a person’s language affects how they think.  Recently, at RubyRX, I heard Neal Ford speak.  He brought this idea up, only he didn’t apply it to spoken languages, but to programming languages.  His assertion was that:

More powerful programming languages give you new and different abstractions to work with so that you think about problems in different ways, ways that you would never have considered in a less powerful language.

Following from this, Neal also asserted that:

In a more powerful language you can mimic the features of less powerful languages.

To prove his point, he took Ruby and used it to implement and enforce Java features, such as immutable strings.

I agree with Neal on these points and I think they explain why I find myself enjoying my work in Ruby and Erlang, but disliking PHP.  PHP simply doesn’t have the power of the other two.

Returning to the Sapir-Whorf hypothesis, assuming it’s true, it then follows that learning a new language opens up new modes of communicaiton and thought – both in programming and in the spoken word.  This is why you should learn a new language every year.

Filed in: Programming.


  1. Comment by Dan Bernier:

    The Sapir-Whorf hypothesis is currently pretty contested, because we can’t figure out the relationship between thought and language. Personally, I think that’s because we use human language to represent the very real world around us, and there’s always a mis-match between a model & reality.

    I think Sapir-Whorf applies much more neatly to programming languages, because the language IS the reality — within the formal system of the language, the concepts and entities you use (variables, functions, classes, modules, whatever) aren’t representing the “real thing” somewhere else, they ARE the real thing.

    February 27, 2009 @ 08:43
  2. Comment by Mark:

    Very interesting Dan. I couldn’t agree more and don’t have anything to add to what you said. Thanks for the insight on the hypothesis being contested, as I didn’t have any idea as to it’s acceptance.

    February 27, 2009 @ 23:56
  3. Comment by Chris Ess:

    I keep wanting to refute the application of the Sapir-Whorf hypothesis to programming languages (at least based on my understanding of it) but, in the end, I can’t.

    What I take away from the Sapir-Whorf hypothesis is that one’s native language shapes one’s patterns of thoughts and, therefore, one’s perception of the world. I find linguistic determinism to be largely separate from the hypothesis, which means that I could be completely wrong about it.

    Even with that limited viewpoint, I think it still applies. Imperative languages, e.g. C or Ruby, make the most sense to a lot of programmers. Seen through the Sapir-Whorf lens, this is probably because most programmers start out on imperative languages. This could be the part of the root of the C vs. Lisp holy war of old.

    I think linguistic determinism is the more significant reason to learn new programming languages. I find particularly apt Wittgenstein’s “The limits of my language mean the limits of my world.” in different ways. The limitations of programming languages limit what the programmer can do with them. The limitations of the programmer’s knowledge, in particuar, the limits of the languages known, limits the possibilities of what can be implemented.

    If we do not have a means to express a given construct, we cannot implement it. (We may not even realize that we are unable to express that construct since we’d likely not think of trying to use it.) Learning new languages exposes us to new constructs. Once we understand those new constructs, we can attempt to implement it in our other languages. (Or sometimes we find that the new constructs in a language are implemented in ones we already use but never needed to know them. For example, in the process of writing this response, I discovered that Ruby’s Array#map and Array#inject are already implemented in PHP as array_map() and array_reduce().)

    This is a really interesting topic and I could write more on it. Once I finish Wittgenstein’s Tractatus Logico-Philosophicus (and possibly his Philosophical Investigations as well), I probably will.

    March 4, 2009 @ 13:41
  4. Comment by Dan Bernier:


    S-W comes in strong and weak forms, the strong being the position that language determines thought, and you can’t conceive of something your language doesn’t have words for. This is generally the most contested part of S-W.

    It applies to computers and their languages, if you think of the computer’s “thoughts” as its interpretation (or compilation) of your code — like you said, the computer simply cannot interpret something that’s not supported by the language.

    Your comment made me realize, though, that S-W still doesn’t apply that neatly to programmers: a programmer can know a language, and want to do something that the language prohibits. This is especially true if the programmer is cheating, and knows other languages with different constructs — I see this all the time with C#, because I know Ruby.

    The S-W is about language shaping our thoughts. Strong S-W fits perfectly, when applied to _computers_, but it still doesn’t apply that well to humans.

    March 4, 2009 @ 16:39
  5. Comment by Chris Ess:

    Dan (may I call you Dan?),

    Applying S-W to computers is completely valid but strikes me as being common sense. If anything, computers are the ideal proof for S-W because they simply are incapable of doing anything outside of their given “language.” A computer can only do what its hardware is capable of. A compiler or interpreter can only process the specific input it has been programmed to handle.

    On review, my previous assertion about linguistic determinalism applying to programming and programmers may not be valid. My primary assertion (“If we do not have a means to express a given construct, we cannot implement it.”) is valid but this is not necessarily a limitation based on known programming languages as much as just knowledge in general. (And if it’s just knowledge, this assertion is common sense.)

    A lot of the useful literature (books, white papers, blog posts, etc.) on programming out there is language agnostic (or can be made to be). Despite not being about specific languages, these give us more information that allows us to express constructs. (While most language agnostic constructs are derived from existing languages and can be expressed in terms of those languages, if we have not done the derivation ourselves, we may not have the ability to express the construct before reading about it.not done the derivation, we may not know how to express it before having read about it.)

    The information we gain from new programming languages is often not new constructs as much as new approaches or even just more succinct ways to express a construct. For example, Array#map and Array#reduce are nothing new but they provide better ways to express the constructs. (If nothing else, they are easier ways to express them. Having an easier way in one language creates a desire to find or create an easier way in others.)

    I think that what you refer to as “cheating” is the point behind learning new programming languages. Since Ruby has introduced you to given constructs, you know these constructs and can apply these to any problems you encounter. The more constructs you know, the more ways you have to solve a problem (or implement a solution). Even if a language doesn’t implement a construct itself, you can still use that construct as long as the language provides other constructs you can use to implement it.

    March 5, 2009 @ 12:03
  6. Comment by Mark:

    So here is an interesting question for both of you (Dan and Chris): if thinking is limited because a language doesn’t have the ability to represent a construct, then how does society gain new constructs? Are all new constructs just combinations of older constructs, or are there ways to invent new constructs that don’t use old ones?

    It seems to me that S-W can’t be completely valid, because at some point there was no language, and yet language then developed, so at the very least, it must be possible to represent very basic constructs without language.

    March 8, 2009 @ 17:39
  7. Comment by Dan Bernier:

    You’re right, Mark, people can think outside their language. If I tell you about my brother-in-law, you know I can mean either my sister’s husband, or my wife’s brother. I hear that in Russian, they have different words for these relationships. If strong S-W was true, we English speakers couldn’t know the difference, but we do. That’s a pretty simple rebuttal of strong S-W.

    Strong S-W asks, does language limit thinking? The answer depends on who’s interpreting the language. Humans can think outside of language. A code interpreter can’t think outside the language, but it’s not thinking anyway, it’s just following rules. People can think outside of formal systems, but a code interpreter automates one particular formal system.

    Which brings up another interesting point: human language isn’t a formal system anyway!

    The first few chapters of Gödel, Escher, Bach should be enjoyable to read in this light:

    March 9, 2009 @ 08:09
  8. Comment by Mark:

    All very interesting. I’ve now had Gödel, Escher, and Bach recommended to me several times. I’ll have to finally pick it up and give it read.

    Thanks Dan and Chris for the insightful comments. Please share any other thoughts you might have.

    March 9, 2009 @ 08:44
  9. Comment by Chris Ess:


    Short of defining a new language, I don’t think society can create new constructs that do not build on old ones. Numerous constructs were added to the English language as a result of Shakespeare, Lewis Carroll, and George Orwell. However, all of these build upon existing constructs or borrow constructs from other languages.

    Part of the validity of S-W for human language would depend on whether or not languages can have non-verbal components. If language can contain gesture or other non-verbal elements, there is conceivably not a time that humans lacked language. If language is restricted to words, then yes, at some point on our distant past, someone had to invent to word for “sun.”


    I’m not sure I agree with your example. I think that strong S-W is not necessarily incompatible with ambiguity.

    Languages that rely on context to provide meaning encourage contextual thinking. Languages that rely on clear linguistic delineation do not. I think that throwing someone of the latter camp into a context-sensitive language would have issues adjusting, at least initially.

    I’ll add Godel, Escher, and Bach to my list of books to look at if it’s not already there. It sounds interesting.

    March 9, 2009 @ 14:55
  10. Comment by Cynthia Simmons:

    A very interesting discussion. As a linguistics PhD candidate and an amateur programmer and computing hobbyist, I’d like to throw my very unprofessional two-cents in. Language is the egg and thought the hen. There are brain structures that are required for language use (neurological mechanisms) that if not present because of some genetic anomaly, do not significantly affect the individual’s capacity to learn or reason, even though they may never learn to speak any language. Even with some small influence by lexicon and the informal syntax of spoken language, humans always exceed the “programming” of social construction and the SWH. Artificial languages, by their very nature, are constructed for specified environments for specified tasks and thus “seem” to support the SWH but in reality the mechanism without the language and the language without the mechanism are both useless. Gesture is incomplete communication and less expressive than the spoken word, as the written word is more “programmatic” than the spoken and as others have pointed out, both “seem” to construct reality, but in truth they only describe it. Thanks for letting me join in and for a well thought-out and informative discussion.

    October 22, 2009 @ 11:31
  11. Comment by Mark Mzyk:

    Thank you Cynthia. You’re welcome to join in any time.

    I suspect that as a linguistics PhD candidate you have more experience in this area than I certainly do. You present an interesting perspective that I have to agree with, which is that the SWH is a hen and egg problem. I suspect that no clear answer will ever be given, although from what I gather most scientists agree that the SWH is not correct. I have to agree, as I think you do as well. However, thinking about the SWH does bring up interesting questions that are certainly worth pondering – or are at least fun to ponder.

    October 22, 2009 @ 13:19