Supershipの名畑です。うる星やつらのTVアニメ第2期は2024年なのですね。それを楽しみにしつつ2023年頑張ります。
AtCoderについて調べてみたシリーズの過去記事
はじめに
先月の記事「AtCoderで年齢(誕生年)とレーティングや得点の相関について調べてみた」にて、タイトルの通り、AtCoderにおける年齢とレーティングの相関を調べてみました。
その記事にて年齢とプログラミング言語に相関があるのではというコメントをいただきました。ありがとうございます!!
実際に年齢と使用言語の相関を調べたみたところ、個人的には予想外な結果が出ました。
年齢が高いほどにC++の使用率が高く、低いほどにPythonの使用率が高いのだろうと予想していたのです。
対象ユーザ
- AtCoderのランキングのアクティブユーザのみ(2023年4月2日6時付)を元とする。そのため、本記事でユーザという単語が用いられた場合はアクティブユーザを示すとお考えください。アクティブユーザは過去2年以内にRatedコンテストに一度でも参加したユーザと定義されています。
- 各ユーザの使用言語はAtCoder Beginner Contest 296(ABC 296)のコンテスト時間内( 2023年4月1日21:00~22:40)での提出結果より取得しました。
- アクティブユーザでありかつABC296に提出した方は7,837人でした。
- さらにこのうちで誕生年を登録しているのは5,702人でした。今回の集計対象はこの方々となります。
- 同一ユーザが複数プログラミング言語で提出をしている場合は最後の提出に用いたプログラミング言語を対象としています。
全体でのプログラミング言語使用率
まず、対象の5,702人全員を対象としてプログラミング言語の使用率を出してみました。
1位〜20位は下記でした。
言語 | 使用率(%) | |
---|---|---|
1 | C++ (GCC 9.2.1) | 66.73 |
2 | PyPy3 (7.3.0) | 13.42 |
3 | Python (3.8.2) | 8.73 |
4 | C++ (Clang 10.0.0) | 2.75 |
5 | Java (OpenJDK 11.0.6) | 2.19 |
6 | Rust (1.42.0) | 1.42 |
7 | C (GCC 9.2.1) | 0.88 |
8 | C# (.NET Core 3.1.201) | 0.84 |
9 | Ruby (2.7.1) | 0.79 |
10 | Go (1.14.1) | 0.40 |
11 | JavaScript (Node.js 12.16.1) | 0.35 |
12 | C (Clang 10.0.0) | 0.26 |
13 | Java (OpenJDK 1.8.0) | 0.19 |
14 | Swift (5.2.1) | 0.12 |
14 | Julia (1.4.0) | 0.12 |
16 | PHP (7.4.4) | 0.11 |
17 | Kotlin (1.3.71) | 0.09 |
18 | Crystal (0.33.0) | 0.07 |
19 | Common Lisp (SBCL 2.0.3) | 0.05 |
19 | TypeScript (3.8) | 0.05 |
C++、Python並びにPyPyが多いという結果です。
今回はこのうちの10位までのプログラミング言語を対象としました。
誕生年別の使用率
誕生年は任意登録であり、特に確認もありません。
今回の対象ユーザには1921年〜2023年がいたのですが、このうちの1977年〜2013年のみをグラフにしました。1977年が14人、2013年は23人であり、この期間はどの年についても10人以上のユーザがいます。1976年は8人、2014年は3人で一桁でした。
最も多いのは2002年で732人でした。
誕生年別の使用率をグラフにしたものが下記です。
単位は%です。
青い線が C++ (GCC 9.2.1) 、オレンジの線が PyPy3 (7.3.0) 、灰色の線が Python (3.8.2) となります
端的に言えば、1997年辺りを境として若い人ほどC++の使用率が増加傾向、Pythonの使用率が減少傾向でした。
表にすると下記です。
年 | C++ (GCC 9.2.1) | PyPy3 (7.3.0) | Python (3.8.2) | C++ (Clang 10.0.0) | Java (OpenJDK 11.0.6) | Rust (1.42.0) | C (GCC 9.2.1) | C# (.NET Core 3.1.201) | Ruby (2.7.1) | Go (1.14.1) |
---|---|---|---|---|---|---|---|---|---|---|
1977 | 35.71 | 50.00 | 7.14 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 7.14 |
1978 | 52.63 | 15.79 | 10.53 | 0.00 | 5.26 | 10.53 | 0.00 | 5.26 | 0.00 | 0.00 |
1979 | 20.00 | 50.00 | 0.00 | 0.00 | 0.00 | 10.00 | 0.00 | 0.00 | 20.00 | 0.00 |
1980 | 22.22 | 25.93 | 14.81 | 0.00 | 3.70 | 3.70 | 0.00 | 11.11 | 7.41 | 0.00 |
1981 | 11.11 | 33.33 | 11.11 | 0.00 | 0.00 | 16.67 | 5.56 | 11.11 | 0.00 | 0.00 |
1982 | 28.57 | 28.57 | 19.05 | 0.00 | 4.76 | 14.29 | 0.00 | 0.00 | 0.00 | 0.00 |
1983 | 31.25 | 12.50 | 18.75 | 6.25 | 18.75 | 6.25 | 0.00 | 6.25 | 0.00 | 0.00 |
1984 | 35.71 | 17.86 | 14.29 | 3.57 | 7.14 | 3.57 | 7.14 | 3.57 | 0.00 | 7.14 |
1985 | 23.53 | 14.71 | 23.53 | 2.94 | 2.94 | 5.88 | 0.00 | 0.00 | 5.88 | 5.88 |
1986 | 53.57 | 25.00 | 7.14 | 0.00 | 7.14 | 0.00 | 0.00 | 0.00 | 3.57 | 0.00 |
1987 | 18.75 | 25.00 | 21.88 | 0.00 | 3.13 | 3.13 | 6.25 | 9.38 | 0.00 | 3.13 |
1988 | 24.24 | 27.27 | 15.15 | 6.06 | 0.00 | 12.12 | 0.00 | 3.03 | 3.03 | 6.06 |
1989 | 31.71 | 24.39 | 14.63 | 7.32 | 9.76 | 7.32 | 0.00 | 0.00 | 2.44 | 0.00 |
1990 | 48.89 | 31.11 | 2.22 | 4.44 | 2.22 | 4.44 | 2.22 | 0.00 | 4.44 | 0.00 |
1991 | 32.50 | 32.50 | 15.00 | 0.00 | 7.50 | 2.50 | 0.00 | 2.50 | 2.50 | 0.00 |
1992 | 43.48 | 30.43 | 8.70 | 1.45 | 2.90 | 0.00 | 0.00 | 2.90 | 2.90 | 1.45 |
1993 | 26.26 | 39.39 | 13.13 | 0.00 | 6.06 | 3.03 | 0.00 | 4.04 | 3.03 | 1.01 |
1994 | 41.67 | 25.00 | 15.63 | 1.04 | 4.17 | 3.13 | 0.00 | 0.00 | 4.17 | 0.00 |
1995 | 43.64 | 22.73 | 13.64 | 3.64 | 0.91 | 8.18 | 0.00 | 1.82 | 0.00 | 1.82 |
1996 | 50.00 | 24.60 | 8.73 | 1.59 | 4.76 | 4.76 | 0.79 | 0.79 | 0.00 | 0.00 |
1997 | 41.38 | 26.72 | 12.93 | 2.59 | 3.45 | 2.59 | 0.86 | 1.72 | 3.45 | 0.86 |
1998 | 49.77 | 23.08 | 13.12 | 2.71 | 1.81 | 3.62 | 0.45 | 0.90 | 1.81 | 0.45 |
1999 | 52.11 | 23.19 | 15.06 | 1.20 | 3.31 | 0.60 | 0.90 | 1.20 | 0.30 | 0.90 |
2000 | 59.64 | 18.14 | 12.93 | 2.95 | 1.36 | 1.59 | 0.23 | 1.13 | 0.68 | 0.23 |
2001 | 65.64 | 14.01 | 10.36 | 2.69 | 2.30 | 0.77 | 0.58 | 0.38 | 0.96 | 0.19 |
2002 | 78.14 | 8.47 | 5.19 | 1.64 | 2.87 | 0.68 | 1.23 | 0.14 | 0.00 | 0.27 |
2003 | 78.66 | 7.33 | 6.68 | 2.93 | 1.47 | 0.16 | 1.63 | 0.00 | 0.00 | 0.00 |
2004 | 76.65 | 4.82 | 5.84 | 6.85 | 1.52 | 0.51 | 1.78 | 1.02 | 0.25 | 0.25 |
2005 | 80.65 | 8.06 | 4.84 | 3.23 | 0.81 | 0.00 | 0.81 | 0.81 | 0.00 | 0.00 |
2006 | 83.04 | 4.68 | 6.43 | 2.34 | 1.17 | 0.00 | 0.58 | 0.00 | 0.00 | 0.00 |
2007 | 92.67 | 2.67 | 2.67 | 0.67 | 0.67 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
2008 | 84.80 | 3.51 | 6.43 | 4.09 | 0.00 | 0.00 | 0.00 | 0.58 | 0.58 | 0.00 |
2009 | 94.15 | 0.00 | 2.13 | 3.72 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
2010 | 91.06 | 1.68 | 1.12 | 5.03 | 0.00 | 0.00 | 0.00 | 0.56 | 0.00 | 0.00 |
2011 | 96.26 | 0.00 | 0.00 | 2.80 | 0.00 | 0.00 | 0.93 | 0.00 | 0.00 | 0.00 |
2012 | 86.36 | 3.03 | 4.55 | 6.06 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
2013 | 78.26 | 4.35 | 13.04 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
推測
結果について推測してみました。
- 年齢が高いほどに書きやすいとされるプログラミング言語を選んでいるのかもしれない。
- 年齢が低いほどに競技プログラミングで有利とされるプログラミング言語を選んでいるのかもしれない。
- 「AtCoderアクティブユーザの各世代における「国と地域」の割合を調べてみた」で触れたように、そもそもとして世代毎に国の偏りがある。国の偏りが言語の偏りに関連しているのかもしれない。
実際にC++が競技プログラミングで有利か、Pythonが書きやすいかというのは異論もあるでしょうが、一般論なのではないかと思っています。そんなことない?
「若ければ若いほどに競技プログラミングを競技としてとらえている」「年齢が高いほどにC++に対して難しいというイメージを持ってしまっている」などなど、推測だけならいくらでもできますね。
最後に
予想していたのと完全に逆の結果が出て、思い込みはよろしくないと強く感じました。
宣伝
SupershipのQiita Organizationを合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。
Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方はSupership株式会社 採用サイトよりご確認ください。