Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Empirical Analysis of Programming Language Adoption

2,774 views

Published on

Why some programming languages succeed and others fail. OOPSLA 2013, Best Paper.

Published in: Technology
  • Be the first to comment

Empirical Analysis of Programming Language Adoption

  1. 1. EMPIRICAL ANALYSIS OF PROGRAMMING LANGUAGE ADOPTION Leo A. Meyerovich, UC Berkeley Ariel S. Rabkin, Princeton October, 2013
  2. 2. Why Adoption? 2
  3. 3. Confession of a Language Salesman [P. Coburn] Change Function threshold to adopt: perceived adoption need perceived adoption pain > 1 FP!!! new language 3
  4. 4. Confession of a Language Salesman “From now on, my goal in life would be to also drive the denominator down to zero” - Erik Meijer Confessions of a Used Programming Language Salesman 4
  5. 5. Confession of a Language Salesman [P. Coburn] Change Function threshold to adopt: perceived adoption need perceived adoption pain FP!!! new language > 1 FP!! familiar language 5
  6. 6. Science? Adoption literature change function is switching costs Data analysis growth decision making acquisition 6
  7. 7. Our Data Sets Viral Campaign [McIver] 2 year long web survey 13,271 respondents [Patterson & Fox] 1,142 massive open online course (MOOC) survey respondents 2 week web survey 1,679 respondents software repositorie s 217,368 projects 7
  8. 8. Demographics Age: ~30 Degree: ~BS in CS Employment: ~programmer 8
  9. 9. How do languages grow? 9
  10. 10. Ecological model of adoption Use language in a niche Grow libraries and user base Spread language to more niches 10
  11. 11. Popular Languages CDF (Ohloh data) 100% 90% 80% 70% 60% 50% Cumulativ 40% e css 30% Use html c shell java javascript 20% 10% 0% c++ python make php bat sql rubyc# Half the projects use 5 languages xml Language 11
  12. 12. Popular Languages CDF (Ohloh data) 100% 90% 80% 70% 60% DSLs dominate 50% Cumulativ 40% e css 30% Use html c shell java javascript 20% 10% 0% c++ python make php bat sql rubyc# Half the projects use 5 languages xml Language 12
  13. 13. Odds for Most Languages? (PDF) 100.0000% Java for 16% of projects 10.0000% Long Tail! Supports designing for niches and then growing Proportion 1.0000% of Projects for Language 0.1000% Processing for 0.09% of projects 0.0100% 1 10 Language Rank (Decreasing) 100 13
  14. 14. [PLATEAU 2013] 200K+ Projects (2000-2010) 14
  15. 15. Popularity Across Niches 60% 40% blogging: 9% Java search: 29% Popularity 20% 0% Project categories (223) 4% 3% Popularity build tools: 1% Scheme 2% 1% 0% Project categories (223) 15
  16. 16. Popularity Across Niches 60% low dispersion 40% Popularity 20% 0% Project categories (223) 4% 3% high dispersion Popularity 2% 1% 0% Project categories (223) 16
  17. 17. Dispersion Decreases as Popularity Increases 1 Java 0.1 C# PL/SQL Assembly 0.01 Fortran Prolog 0.001 Scheme VBScript Popularity Languages grow niche by niche 0.0001 5 4 3 2 1 Dispersion across niches (σ / μ) 0 17
  18. 18. How Do Programmers Pick Languages? 18
  19. 19. P(L’ | L) p(popular) 75% Shows importance of familiarity p(repeat) 30% 19
  20. 20. How Do Languages Get Picked? Development speed? Performance? strongly disagree neutral strongly agree 20
  21. 21. Relative Importance of Language Aspects (MedStrong) 0% Open source libraries Group legacy Project legacy Self familiarity Team familiarity Target platform Performance Tooling Development speed Hiring Individual feature(s) Correctness Simplicity Commercial libraries 10% 20% 30% 40% 50% 60% 70% 80% Extrinsic niche-specific factors dominate! Intrinsics: performance, correctness, … Be Positive: Design Guides & Opportunities Slashdot survey, Companies with 1-19 employees 21
  22. 22. Learning: Shelf Life of a Programmer? “Baby Boomers and Gen Xers tend to know C# and SQL. Gen Y knows Python… and Hadoop” Recruiter 22
  23. 23. Language Users are Age-Invariant
  24. 24. Mean # Langs. known Languages are learned and forgotten Programmers have a working set that they refresh! 8 6 4 2 know slightly know well 0 20 30 40 Age 50 60
  25. 25. Median reported time required to “learn a language well” Time to learn is short compared to career 25
  26. 26. Probability of Knowing a Language All CS Major Not CS Major Taught in school Not Taught in school Functional Scheme, ML, ... 22% 24% 19% 40% 15% Assembly MIPS, … 14% 14% 14% 20% 10% Mathematic al 11% 10% 11% 31% 7% Matlab, R, CS degree unimportantbut coursework matters … 26
  27. 27. Conclusions Extrinsics dominate: Libraries and familiarity! Model: Niche-by-niche growth Intrinsics secondary: Performance, semantics, IDEs Fluidity = Hope: Programmers know few languages but can refresh within 6 months. 27
  28. 28. Looking Ahead Language Sociology Programming is done by groups; big knowledge gaps Streamline Empiricism Surveys, experiments (mining already active) Exploit MOOCs! Social Language Design Improve sharing and utilize networks 28
  29. 29. Socio-PLT www.eecs.berkeley.edu/~lmeyerov 29

×