empirical analysis of programming language adoption

29
Leo A. Meyerovich, UC Berkeley Ariel S. Rabkin, Princeton October, 2013 EMPIRICAL ANALYSIS OF PROGRAMMING LANGUAGE ADOPTION

Upload: leo-meyerovich

Post on 14-Nov-2014

2.105 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Empirical Analysis of Programming Language Adoption

Leo A. Meyerovich, UC Berkeley Ariel S. Rabkin, PrincetonOctober, 2013

EMPIRICAL ANALYSIS

OF PROGRAMMING

LANGUAGE ADOPTION

Page 2: Empirical Analysis of Programming Language Adoption

2

Why Adoption?

Page 3: Empirical Analysis of Programming Language Adoption

3

Confession of a Language Salesman

Change Function threshold to adopt:

[P. Coburn]

perceived adoption needperceived adoption pain > 1

FP!!!new language

Page 4: Empirical Analysis of Programming Language Adoption

4

- Erik Meijer

“From now on, my goal in life would be to also drive the denominator down to zero”

Confessions of a Used Programming Language Salesman

Confession of a Language Salesman

Page 5: Empirical Analysis of Programming Language Adoption

5

Change Function threshold to adopt:

perceived adoption needperceived adoption pain > 1

FP!!!new language

FP!!familiar

language

[P. Coburn]

Confession of a Language Salesman

Page 6: Empirical Analysis of Programming Language Adoption

6

Science?

Adoption literaturechange function is switching

costs

Data analysisgrowth

decision making acquisition

TODAY

Page 7: Empirical Analysis of Programming Language Adoption

7

Our Data Sets

2 year long web survey

13,271 respondents

massive open online

course (MOOC) survey

1,142 respondents

software repositor

ies217,368 projects

2 week web survey1,679

respondents

[McIver]

[Patterson & Fox]

Viral Campaign

Page 8: Empirical Analysis of Programming Language Adoption

8

Demographics

Age: ~30

Degree: ~BS in CS

Employment: ~programmer

Page 9: Empirical Analysis of Programming Language Adoption

9

How do languages grow?

Page 10: Empirical Analysis of Programming Language Adoption

10

Ecological model of adoption

Use languagein a niche Grow libraries

and user base

Spread language to more niches

Page 11: Empirical Analysis of Programming Language Adoption

110%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

xml

html

cssjavascript

javashell

cmake

pythonc++

phprubyc# sql bat

Popular Languages CDF (Ohloh data)

Language

Cumu-lativeUse

Half the projectsuse 5 languages

Page 12: Empirical Analysis of Programming Language Adoption

120%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

xml

html

cssjavascript

javashell

cmake

pythonc++

phprubyc# sql bat

Popular Languages CDF (Ohloh data)

Language

Cumu-lativeUse

DSLsdominate

Half the projectsuse 5 languages

Page 13: Empirical Analysis of Programming Language Adoption

13

0.127 1.27 12.7 1270.0100%

0.1000%

1.0000%

10.0000%

100.0000%

Language Rank (Decreasing)

Propor-tion of Projects

for Lan-

guage

Odds for Most Languages? (PDF)

Long Tail!Supports designing for niches and then

growing

Java for 16% of projects

Processing for 0.09% of projects

Page 14: Empirical Analysis of Programming Language Adoption

14

Projects (2000-2010)200K+[PLATEAU 2013]

Page 15: Empirical Analysis of Programming Language Adoption

-20%

0%

20%

40%

60% Java

Project categories (223)

0%

1%

2%

3%

4%

Scheme

Project categories (223)

Popularity Across Niches

15

blogging: 9%

search: 29%

build tools: 1%

Popularity

Popularity

Page 16: Empirical Analysis of Programming Language Adoption

-20%

0%

20%

40%

60%

Project categories (223)

0%

1%

2%

3%

4%

Project categories (223)

Popularity Across Niches

16

high dispersion

low dispersion

Popularity

Popularity

Page 17: Empirical Analysis of Programming Language Adoption

17

00.511.522.533.544.5

PrologVBScriptScheme

Fortran

PL/SQLAssemblyC#

Java

Dispersion across niches(σ / μ)

Pop

ula

rity

Dispersion Decreases as Popularity Increases

Languages grow niche by niche

Page 18: Empirical Analysis of Programming Language Adoption

18

How Do Programmers Pick Languages?

Page 19: Empirical Analysis of Programming Language Adoption

19

P(L’ | L)

p(popular)75%

p(repeat)30%

Shows importance of

familiarity

Page 20: Empirical Analysis of Programming Language Adoption

20

How Do Languages Get Picked?

strongly agreestrongly disagree neutral

Development

speed?

Performance?

Page 21: Empirical Analysis of Programming Language Adoption

21

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

0% 10% 20% 30% 40% 50% 60% 70% 80%

Relative Importance of Language Aspects (Med-Strong)

Slashdot survey, Companies with 1-19 employees

Intrinsics:performance,correctness,

Extrinsic niche-specific factors dominate!

Be Positive: Design Guides & Opportunities

Page 22: Empirical Analysis of Programming Language Adoption

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

Page 23: Empirical Analysis of Programming Language Adoption

Language Users are Age-Invariant

Page 24: Empirical Analysis of Programming Language Adoption

Languages are learned and forgotten

Programmershave a working setthat they refresh!

Page 25: Empirical Analysis of Programming Language Adoption

25

Median reported time requiredto “learn a language well”

Time to learn is short compared to career

Page 26: Empirical Analysis of Programming Language Adoption

26

Probability of Knowing a Language

AllCS

Major

Not CS

Major

Taught in

school

Not Taught

in school

Functional Scheme, ML, ...

22% 24% 19% 40% 15%

AssemblyMIPS, … 14% 14% 14% 20% 10%

Mathematical Matlab, R, …

11% 10% 11% 31% 7%CS degree unimportant

but coursework matters

Page 27: Empirical Analysis of Programming Language Adoption

27

ConclusionsExtrinsics 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.

Page 28: Empirical Analysis of Programming Language Adoption

28

Looking AheadLanguage SociologyProgramming is done by groups; big knowledge gaps

Streamline EmpiricismSurveys, experiments (mining already active)Exploit MOOCs!

Social Language DesignImprove sharing and utilize networks

Page 29: Empirical Analysis of Programming Language Adoption

29

Socio-PLTwww.eecs.berkeley.edu/~lmeyerov