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. 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. 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
10. Ecological model of adoption
Use language
in a niche
Grow libraries
and user base
Spread language to more niches
10
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. 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. 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
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. Median reported time required
to “learn a language well”
Time to learn is short compared to career
25
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. 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. 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