Empirical analysis of programming language adoption

Some programming languages become widely popular while others fail to grow beyond their niche or disappear altogether. This paper uses survey methodology to identify the factors that lead to language adoption. We analyze large datasets, including over 200,000 SourceForge projects, 590,000 projects tracked by Ohloh, and multiple surveys of 1,000-13,000 programmers. We report several prominent findings. First, language adoption follows a power law; a small number of languages account for most language use, but the programming market supports many languages with niche user bases. Second, intrinsic features have only secondary importance in adoption. Open source libraries, existing code, and experience strongly influence developers when selecting a language for a project. Language features such as performance, reliability, and simple semantics do not. Third, developers will steadily learn and forget languages. The overall number of languages developers are familiar with is independent of age. Finally, when considering intrinsic aspects of languages, developers prioritize expressivity over correctness. They perceive static types as primarily helping with the latter, hence partly explaining the popularity of dynamic languages.

[1]  Ronald Dattero,et al.  Programming languages and gender , 2004, CACM.

[2]  Mark E. J. Newman,et al.  Power-Law Distributions in Empirical Data , 2007, SIAM Rev..

[3]  S. Sutton Predicting and Explaining Intentions and Behavior: How Well Are We Doing? , 1998 .

[4]  Leo A. Meyerovich,et al.  How not to survey developers and repositories: experiences analyzing language adoption , 2012, PLATEAU '12.

[5]  Harald C. Gall,et al.  A study of language usage evolution in open source software , 2011, MSR '11.

[6]  Fred D. Davis,et al.  Explaining Software Developer Acceptance of Methodologies: A Comparison of Five Theoretical Models , 2002, IEEE Trans. Software Eng..

[7]  E. Rogers,et al.  Diffusion of innovations , 1964, Encyclopedia of Sport Management.

[8]  Ali Mili,et al.  An empirical study of programming language trends , 2005, IEEE Software.

[9]  Jan Vitek,et al.  The Eval That Men Do - A Large-Scale Study of the Use of Eval in JavaScript Applications , 2011, ECOOP.

[10]  Emerson R. Murphy-Hill,et al.  Java generics adoption: how new features are introduced, championed, or ignored , 2011, MSR '11.

[11]  Danny Dig,et al.  How do developers use parallel libraries? , 2012, SIGSOFT FSE.

[12]  Leo A. Meyerovich,et al.  Socio-PLT: principles for programming language adoption , 2012, Onward! 2012.

[13]  Mary Shaw,et al.  Estimating the numbers of end users and end user programmers , 2005, 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05).

[14]  M. Glickman Parameter Estimation in Large Dynamic Paired Comparison Experiments , 1999 .

[15]  Stefan Hanenberg,et al.  Faith, hope, and love: an essay on software science's neglect of human factors , 2010, OOPSLA.

[16]  Ritu Agarwal,et al.  A field study of the adoption of software process innovations by information systems professionals , 2000, IEEE Trans. Engineering Management.

[17]  Dawn Patitucci,et al.  Gender and Programming Language Preferences of Computer Programming Students at Moraine Valley Community College , 2005 .

[18]  Gordon B. Davis,et al.  User Acceptance of Information Technology: Toward a Unified View , 2003, MIS Q..

[19]  Fred D. Davis,et al.  User Acceptance of Computer Technology: A Comparison of Two Theoretical Models , 1989 .

[20]  Jan Vitek,et al.  Evaluating the Design of the R Language - Objects and Functions for Data Analysis , 2012, ECOOP.

[21]  Bill C. Hardgrave,et al.  Toward an information systems development acceptance model: the case of object-oriented systems development , 2003, IEEE Trans. Engineering Management.