“A language that doesn’t affect the way you think about programming is not worth knowing.” — A. Perlis
Sapir-Whorf hypothesis (aka linguistic relativity hypothesis) asserts lanugage influences how you think, that “different language patterns yield different patterns of thought.” It seems like the Heisenberg uncertainty principal, where measuring a particle also affects it. Dave Astels refers to the Sapir-Whorf theory in his talk on behavior driven development. He describes that Sapir-Whorf “challenges the possibility of perfectly representing the world with language, because it implies that the mechanisms of any language condition the thoughts of its speaker community.” Dave argues that the use of the word “test” in test-driven development (TDD) causes programmers to focus on validating the inner state of their code rather than in verifying the expected result, as in behavior-driven development (BDD). In large part changing the language we use to describe how we validate out code leads us to develop a more effective and resilient form of code validation.
While wikipedia cites some arguments against this theory, it seems intuitive to me. In fact whether learning a spoken language or a programming language I have found that the language I am thinking in does in fact change how I think. For a spoken language, specific words will have different connotations. In a different language, I’ll use different idioms and patterns of words that lead me to express a subtly different meaning, to focus on a specific aspect of what I am seeking to communicate. For programming, the choice of language will influence how I solve a specific problem. It makes sense to pick a specific language for a task in order to influence the flavor of solution that results.