26
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AtCoderで年齢と使用プログラミング言語の相関を調べてみた

Posted at

Supershipの名畑です。うる星やつらのTVアニメ第2期は2024年なのですね。それを楽しみにしつつ2023年頑張ります。

はじめに

先月の記事「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人でした。

誕生年別の使用率をグラフにしたものが下記です。
単位は%です。

language_birth.png

青い線が 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株式会社 採用サイトよりご確認ください。

26
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?