
Ömer Sinan Ağacan
Hi all,
I recently got myself thinking about programming languages and their effects on programmers. I already knew that concept of "linguistic relativity" ( http://en.wikipedia.org/wiki/Linguistic_relativity ) and I was thinking that this may be relevant with programming too, although I don't have any concrete evidence. I was wondering if anyone else also find that idea of programming language's effect of the programmer interesting. Do we have any research on that kinds of things?
The Stanford Encyclopedia of Philosophy has a pretty good page about the "linguistic relativity hypothesis." Here's a quote from Sapir in 1929 followed by some random thoughts of mine on your (very interesting) question: "Human beings do not live in the objective world alone, nor alone in the world of social activity as ordinarily understood, but are very much at the mercy of the particular language which has become the medium of expression for their society." I think our tendency to form communities (societies?) around programming languages is interesting in this context. Rubyists, Pythonistas, Schemers, hackathons, mailing lists & IRC, conferences, books, and so on. Without considering community, it seems hard to say even what a programming language is. Are "idioms" part of language, for example? In natural language, we can't judge fluency based on adherence to a formal grammar; we need to consider dialectal (even "sociolectal") competence, range of vocabulary, and so on. In programming, we are bound by formal grammars, but they still don't capture the whole thing. (That language and culture are hard to tease apart seems like a commonplace notion. I think it's one reason why the concept of "linguistic relativity" seems somehow vacuous or at least hard to pin down in a productive way. It's one of those "controversial" ideas, right? -- that nobody really knows what to do with, or whether it's even falsifiable, and so on.) So given that involvement with a programming language is to some extent inextricable from community involvement, I think we can look there for some interesting effects. When someone becomes interested in Haskell and later develops a taste for algebra and starts spending weekends reading abstract math textbooks, that's a pretty significant influence, right? There's an interesting meme in the Haskell world, which I think I first heard in a talk by Simon Peyton-Jones, that laziness -- though sometimes useful in itself -- is mostly a way to keep up a demand for pure semantics, which is what's really important. So that's a formal language feature consciously designed to influence our behavior as a community, to make sure we don't stray from the pure vision of our ancestors (so to speak). It's a kind of metaprogramming -- the language programs us! It'd be interesting to read stories and research about individuals or even groups who have for some reason switched from one primary programming language to another. What happened? There are a lot of applicable Dijkstra quotes. For example the classic: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." Similar reasons are given for why university programs should begin with teaching a functional language, to instill certain good habits and values. Anyway, sorry for the longwindedness; I don't really have a thesis to drive, just writing down some thoughts. It's fun to think about the topic but it's so huge! -- Mikael Brockman (@mbrock)