Social science research about programming language adoption?

I'm a former (and I hope future) CS grad student who studied programming languages, currently in an information technology studies program. For a class on "Social and Organizational Effects of Technology", I'm doing a paper on programming language adoption -- i.e., the social forces that govern decisions about what programming language to use for a project, and which new programming languages to adopt and old ones to discard, both on a micro-level (decisions within individual organizations about this) and a macro-level (larger societal trends like the rise of C in the 1970s and Java in the 1990s).

Does anyone know of any academic work, from a sociological or economic perspective, on the subject? Searching for terms like "programming language adoption", "programming language diffusion", and "programming language choice" on various journal databases has turned up very little (except for a single article in the International Journal of Technology, Policy, and Management, which my university doesn't subscribe to). And an old post on Lambda the Ultimate suggests that work on the sociology of programming languages is lacking. Am I the first person to do social research on language choice? If so, then that's good for me, I guess :-}

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I think it's interesting!

I wrote a (decidedly non-academic) article talking a bit about the economics of programming languages:

http://www.dedasys.com/articles/programming_language_economics.html

I'd be interested to see research in this area...

David, I did see your

David, I did see your article; it was one of the best things I found on the subject. As you say, it's not scholarly, but it does provide some good starting points for a more rigorous analysis.

You are certainly not the

You are certainly not the first to think about these issues, but you are correct that not alot has been done.

There are many aspects to this question. The subject was discussed here many times. For many reasons, there isn't a lot of useful research on the subject.

You should restrict your attention to a specific issue, if you want to be able to say something meaningful. This can be about language communities (a subject I raised here many times), about economic factors, or about the role of technology in general (e.g., see the Latour article I mentioned a short while ago).

Another angle might be the dynamics of penetration of new ideas in general, and how this applies to programming language research.

After you decide how to frame the question we might provide more down to earth advice.

Latour

I can't seem to locate the Latour article you mentioned; can you provide a link?

Here.

Link appears broken

I'm particularly interested in reading this paper, but the link in your original post seems to be broken now. What was the name of the paper, or is there a URL which works?

Where are the Missing

Disruptive language technologies

This can be about language communities (a subject I raised here many times), about economic factors, or about the role of technology in general (e.g., see the Latour article I mentioned a short while ago).

Another angle might be the dynamics of penetration of new ideas in general, and how this applies to programming language research.

Just to add a reference to this sparse area, Todd Proebsting's talk on "Disruptive Programming Language Technologies" at LL2 was along these lines.

Good Luck

No, I'm not being sarcastic. I think that you have your work cut out for you, because my experience has been that most programmers "in the wild" are extremely unreflective about their technology choices. Those of us who contemplate programming languages formally are a very odd, self-selecting subculture within the larger very odd self-selecting culture of programmers; the self-selection observation alone means that learning anything statistically significant about us is going to be hard.

Having said that, I think it's eminently worth doing. Our field is sufficiently mature, I believe, that it is now amenable to anthropology. We've even taken on some of the terminology of that field for our own purposes, e.g. "cargo-cult programming." It seems only reasonable to ask if that, and other, phenomena shouldn't be taken as "ha-ha only serious." Certainly anything that can serve to increase the level of discussion as to why we make the choices we make can only serve as a net-positive in the long run, even if in the short run some of the conversations continue to be acrimonious.

Reflective, just not about economics

I disagree. Programming language users are very reflective; they just aren't reflective about formal issues. Programmers -- especially early adopters -- are people who work in a field where the multiplier value of language leverage is very high and this is directly reflected in income. The multiplier achieved has much more to do with personal effectiveness than any advantage inherent in the particular language. Consequently, developers think a fair bit about what language best gets the job done for them. When given a choice, they invariably have strong language preferences, and can usually articulate rationale. Admittedly, that rationale is often post hoc and/or confabulated, but they do tend to have one.

Late adopters generally don't have a choice, so the question doesn't really arise. For that group, I do agree with Paul.

Similar to normal language adoption

I think that programming languages are somewhat similar in ways to the adoption of naturual (spoken and written) languages except that they are one does not naturally learn them, but chooses to learn them, usually to perform a task or complete a job rather than interaction.

Since they one chooses to learn the languages, the rate of adoption can generally be traced to the amount and quality of documentation (tutorials, manuals and references) that comes with the language that is to be learned.

Another strong influence to the rate of adoption would be general familiarity with the chosen syntax and layout of the language: people that first learned C are going to be more comfortable moving forward to a language with C like syntax (or Lisp, or Algol, or whathave you). This will lessen the learning curve, thus make adoption easier.

There are also languages which are created to foster communication of higher level concepts, much like general mathematical notation and language. This currently seems to have it's place with Haskell, and fosters the exchange of ideas, rather than everyone creating more specialized languages, all slightly different. I've likened Haskell to Esperanto; a 'perfect' language of it's creators, although extremely difficult to do practical things with (mostly due to the unfamiliarity with it's newer concepts )

--
kruhft

Haskell is more like Lojban

Esperanto is more a mix of existing European languages.
I'd say Haskell is (metaphorically) a lot like Lojban (http://www.lojban.org/), which is a constructed language based on predicate logic.

Haskell is a mix

Haskell looks to me like a mix of lisp, prolog, C, shell script, ML, the lambda calculus and some others I can remember at the moment; which I would say is a pretty good mix of Western programming languages.

--
kruhft

Haskell ...

I think that programming

I think that programming languages are somewhat similar in ways to the adoption of naturual (spoken and written) languages except that they are one does not naturally learn them, but chooses to learn them, usually to perform a task or complete a job rather than interaction.

Um, you think they're somewhat similar, except for the fact that they're entirely different?

I've likened Haskell to Esperanto; a 'perfect' language of it's creators, although extremely difficult to do practical things with (mostly due to the unfamiliarity with it's newer concepts)

But Esperanto is an artificial language, not a natural one. The community of Esperanto speakers exists for the purpose of speaking Esperanto. Contrast with the community of English speakers, which simply exists.

[reply]

Um, you think they're somewhat similar, except for the fact that they're entirely different?

Similar in that they are languages, not in how or why they are learned. (A) Language is used to express ideas, it doesn't matter what the intended purpose (or desire to execute the idea) is.

But Esperanto is an artificial language, not a natural one. The community of Esperanto speakers exists for the purpose of speaking Esperanto. Contrast with the community of English speakers, which simply exists.

So are programming languages, and I compare Haskell to Experanto with the expectation that I do realize that one is a programming language and one is a human language. I compare them from a design standpoint, where Haskell was a constructed language to solve algorithms based on the knowledge that has been learned over the years of constructing algorithm solving languages; Esperanto evolved during the time when people were deconstructing naturual languages, and thus it was created to be a perfect communicatory language, similar to Haskell.

--
kruhft

That was the point

...as far as I have been able to tell. Esperanto was picked up by many to create a 'level playing field' for those that wished to communicate but were not born with the same first language; when nobody learned it as a child, everyone was at an equal disadvantage. It also lacks the body of work to express nuance or subtle concepts, which will change as more literature is created/translated.

The reason I bring natural languages up in this discussion is that when *any* language is created, it is "perfect" (enough) to it's creator to release in the wild, after which it is used by people other than the creator, which generally have a different idea of perfect or desire to use it in ways that were not intended, thus causing evolution through either vocuabulary (libraries in programming terms) or form/syntax to allow the language to handle the needed tasks. The easier it is and how familiar it is to existing paradigms will effect the rate of adoption by new users.

--
kruhft

Esperanto is very expressive

I learned Esperanto when I was 12. I studied French and German extensively in high school and college; I have studied Dutch, Italian, and Spanish outside of academia (either by self-study or with tutors).

Esperanto is pretty useless from a tourist perspective, but it is absolutely fantastic from a pedagogical perspective -- much like LISP. The chances of being able to get a job programming in LISP are probably only slightly higher than your chance of being able to order in Esperanto in a restaurant, but learning either will help you understand languages much better than learning most other languages.

I also feel that Esperanto is the *most* expressive of the languages that I have learned. In Esperanto, not only are there very few formal rules, but also very few informal rules. For example, there is no formal rule saying whether you have to put adjectives before the noun or after. You could imagine that there would be social conventions to always put it before, but in fact there is not. It is perfectly okay to put the words pretty much wherever you want them.

This means that there are very few things that you are not allowed to say, so the universe of things that you can say is bigger. For example, verbing nouns is discouraged in English. In Esperanto, it is totally fine to verb nouns. In fact, words have no part of speech until you put an ending on them, so it almost doesn't make sense to talk about changing the part of speech.

Esperanto allows rich combinations -- especially with things normally used as affixes -- that (because you aren't forbidden from anything) allows you great nuance. For example, in English it is difficult to distinguish between something being neutral and something being opposite. You can say "I don't like X" or "I dislike X", but both carry the connotation that you dislike X. In Esperanto, "mi ne shatas" is distinctly different from "mi malshatas". "Mi ne shatas X" means that I am neutral about it: I don't like it, I don't dislike it. "Mi malshatas X" means that I dislike it, which you could translate as "I hate it", but that would be too strong. To express hatred, you would put the enlarging suffix on it: "me malshategas X."

There are words in English for the opposite of liking (dislike or hate), but there are not opposites for most words. For example, there is no word for the opposite of sitting. You might wish to distinguish between a neutral not-sitting (I happen to be standing, lying, walking, whatever, not that important) and anti-sitting (I am actively avoiding sitting, perhaps because my butt is sore). You can do that in Esperanto very easily.

You can get the fine distinctions across in English, but you have to work at it. To capture the fine gradations, you have to say things like "I can take it or leave it", "I'm not fond of it", "I'm neutral towards it", "I'd prefer something else", etc. Esperanto captures the nuance much more simply and cleanly.

This is also completely orthogonal to another form of expressiveness: just the ability to learn the language. After seven semesters equivalent of college French, I was able to speak about as well as a relatively stupid 9 year old native speaker. I estimate that equivalent fluency in Esperanto would take six months or less. In some sense, it doesn't matter how expressive the language is if you can't ever *get* to that level of fluency.

The only thing that I can see as a "problem" is that it might be harder to be ambiguous. In English, because the structure of the language makes nuance more cumbersome to express, it is perhaps easier to be ambiguous. Does "I don't like it" mean dislike or neutrality? I see this as a feature in Esperanto, not a bug: I would rather have to put effort into being ambiguous and have clarity be easy than have to put effort into clarity and have ambiguity be easy.

Disclaimer: I haven't spoken much Esperanto in 30 years. This is based on my memories of a summer of pretty intensive Esperanto when I was 12, including a week at an Esperanto summer camp.

Stop in the name of linguistics!

Esperanto is very expressive

I'm afraid that I must use my powers of citizen arrest to put this post in the LtU clink. It is hereby charged with two offenses: i) inaccurate claims about natural language and ii) (a much more serious felony here on LtU) using those inaccurate claims to make substantive claims about the relationship between programming languages.

In Esperanto, not only are there very few formal rules, but also very few informal rules.

First a relatively small point, but one that has an important impact if translated to PLs.

The studies of Esperanto speakers I have seen shows that, though the conscious rules of Esperanto are fairly small, individual Esperanto speakers have a strong tendency to rely on the implicit rules of their own native language to fill in the blanks, much as second language speakers do in general.

Since there are no native Esperanto speakers to tell them they are "wrong", this seems like greater freedom, but it ignores both the large body of native language knowledge that each of us already has, and also the difficulties that would arise if native speakers of different languages actually tried to use it a common language for non-trivial purposes.

verbing nouns is discouraged in English

This is false. There are many words that are used unchanged as nouns and verbs in English, e.g. "map" and many other nouns that can be made verbal with a suffix, e.g. "productize", "codify".

in English it is difficult to distinguish between something being neutral and something being opposite.

This is point is more vague, but I think on balance it is false. Though there is no single morphological means to consistently make this distinction across verbs (though, I don't see why we need this), I'm completely able to say things like: "I despise that", "I don't care for that", "I generally prefer that", "I love that", "I would fight to the death for that", and a whole bunch of gradations even more fine than the one that Esperanto "makes easy".

After seven semesters equivalent of college French, I was able to speak about as well as a relatively stupid 9 year old native speaker. I estimate that equivalent fluency in Esperanto would take six months or less.

Apples and oranges. Given that everyone who speaks Esperanto is a second-language speaker, and the social uses of Esperanto are so limited, it is unreasonable to say that anyone ever gets beyond the level of a 9-year-old native speaker of any other language.

Real languages get used in very wide range of registers and circumstances, and in contexts with a large amount of social and cultural knowledge. Furthermore, they have native speakers with normative opinions about what is "correct" who will make judgments about you based on your usage . Taking those away doesn't make a language "easier to learn", it just sets the bar lower on what level of competence we will accept in assessing when we have "learned" it.

The only thing that I can see as a "problem" is that it might be harder to be ambiguous.

This is false in two ways.

First, human beings are masters of social ambiguity. I'm quite sure that if someone wants to be ambiguous in Esperanto (or any other language) they will find a way to do it.

Second, if you really claimed that a language was "incapable of ambiguity", it would be the natural language equivalent to saying that that language was "not Turing complete", and you would once again be comparing apples and oranges.

(All the critiques made here of your position on human languages (natural and artificial) have applications to our understanding of PL communities as well, but I leave those and an exercise for the reader. ;-))

Having made my case, I anticipate the post will be found guilty as charged, but I will recommend leniency and a suspended sentence, on the grounds that it is a first infraction. ;-)

welcome to LtU

Hi Ducky, long time no see. Hope you're doing well. I enjoyed your Esperanto comments and didn't see anything very objectionable, but your new arrival might make folks unsure of your programming background. I'm only barely familiar with Esperanto myself, beyond what I read in the 80's when I was looking at artificial languages. So it's nice to hear comments from someone who actually studied it some.

Language is Culture

To create a successful language of any kind, you must also tap into or create a culture that reflects it. It doesn't matter what a language allows you to do, or how it requires you to go about it, only that it reflects the values of the culture. And a MAJORITY of those values will have absolutly nothing to do with programming!

Culture is all about HOW things are done, not what gets accomplished.

For many programmers, writing code in their choosen language IS the goal, as opposed to the task the program they are writing is designed to address. As Marshall McLuhan said, "The Medium is the Message".

I believe it's this cultural aspect that most language designers miss, and even when they don't, it's extremely difficult to successfully include.

{Agile,Pair} Programming is related.

I'd suggest Laurie Williams' research into pair programming. Agile programming is often concerned with intra- and inter- team communication. For example, Alistair Cockburn has a nice story from his Software Development as Community Poetry Writing article about a Russian team that was asked to stack, take down, and restack a bunch of tables. The confusion at the beginning was replaced by silent coordination, rather than the instant hierarchy you might get from a programming team in the USA.

Another point made on Ward's Wiki long ago was that Smalltalk is easy to teach to others, but hard to learn for yourself.

Surprisingly, merciless refactoring was given as one of the biggest problems. When you have a large number of three line methods, it's hard to know which one you should use to do what, unless you know the entire codebase.
I use this to explain the success of PHP, it has just a few large pieces, like a child's collection of building blocks.


Similarly, I've wished for a spoken programming language for communication advantages, ie. you could describe quicksort to a newbie over lunch without requiring a computer.