プログラミングの学習曲線とは、経過時間と生産性の高さの関係をグラフ化したもの。これが様々なプログラミング言語ごとにどう異なっているのか比較するグラフ「Learning Curves」が公開され、話題となっています(Reddit、Hacker News)。
例えば上のグラフはJavaScriptの学習曲線を表現したもの。青い線「Productivity」は客観的な生産性を表し、赤い線「Self-Assessment」は自己評価を表現しています。
JavaScriptの場合、Callbackを学ぶと、自分ではものすごく出来るプログラマになったように思えるものの、実際の生産性は下がってるよといったことを表現しているみたいです。
ではその他のプログラミング言語はどうなっているでしょうか?
Java
デザインパターンを学ぶと、自己評価は上がるものの、生産性はあまり変わらないようです。
C++
テンプレートの概念で自己評価が打撃を受けるものの、生産性はあまり変わらないようです。
Python
ユニットテストで生産性が向上し、Decoratorを知ることで自己評価が上がっています。
Lisp
全体的に、時間とともに右肩上がりです(Macroは無関係?)。
Haskell
これは危険!?初期段階でかなり精神的なダメージを受けているようです(汗
PHP
一直線でいくら時間を書けてもかわらないことを表現しています。
まとめ
もちろんこのグラフはエンターテイメントであり、実証に基づくものではないと注意書きがあります。各言語のプログラマーはそれを踏まえた上で楽しむことをオススメします。