LoginSignup
9
3

More than 1 year has passed since last update.

AtCoderにおけるプログラミング言語のシェアを調べてみた

Posted at

SupershipでVPoEをしている名畑です。2023年冬アニメが始まりましたがもういっぽん!がお気に入りです。帯をギュッとね!を思い出しました。頑張れチャンピオン、頑張れサンデー。

はじめに

先日AtCoderの誕生年毎のアクティブユーザ数を調べてみたという記事を書きました。これはAtCoderは私よりずっと若い人たちの間で盛り上がっているという私の感覚が正しいのかを確かめる目的でした。

実はもう一つ前から気になっていることがありまして、それはAtCoderにおけるプログラミング言語のシェアはどうなっているのかというものです。

C++が使用率1位であろうとか、Pythonもかなり多そうとか、そういう印象は持ってきたものの、調べたことはなかったので調べてみました。

AtCoderってなんですか?」という方はまずこちらの記事をご覧ください。

前提

過去のAtCoderの全提出データだと膨大になる上に直近の傾向を読み取りづらいと考えたため

  • AtCoder Beginner Contest(通称ABC)AtCoder Regular Contest(通称ARC)AtCoder Grand Contest(通称AGC)、それぞれ2回ずつ(各コンテストの2022年の最終開催回とその1回前)
  • コンテスト開催時間内の提出
  • 同一ユーザで複数の提出がある場合は最後の提出のみ

を対象としました。

ABC、ARC、AGC各々で取得したのはコンテストの種類による傾向を見たいためです。年末の2回を対象としたのは最近の傾向を知りたいためです。

コンテスト開催時間内に絞ったのは、アクティブなユーザのみとするためです。

同一ユーザの最後の提出のみとしたのは、同一ユーザで複数カウントされないようにするためです。

ABCの結果

ABC 283

share_abc283.png

表にすると下記です。

言語 ユーザ数(人) 割合(%)
1 C++ (GCC 9.2.1) 4,750 65.57
2 Python (3.8.2) 813 11.22
3 PyPy3 (7.3.0) 811 11.20
4 C++ (Clang 10.0.0) 197 2.72
5 Java (OpenJDK 11.0.6) 154 2.13
6 C (GCC 9.2.1) 115 1.59
7 Rust (1.42.0) 101 1.39
8 C# (.NET Core 3.1.201) 61 0.84
9 Ruby (2.7.1) 52 0.72
10 Go (1.14.1) 32 0.44
11以降 158 2.18

11位〜15位はC (Clang 10.0.0)、Java (OpenJDK 1.8.0)、JavaScript (Node.js 12.16.1)、Kotlin (1.3.71)、PHP (7.4.4)でした。

C++ (GCC 9.2.1)が65.57%、C++ (Clang 10.0.0)が2.72%でした。PythonとPyPy3が合わせて22.42%。私のイメージするAtCoderにおける言語シェアにかなり近い結果です。

ABC 282

share_abc282.png

表にすると下記です。

言語 ユーザ数(人) 割合(%)
1 C++ (GCC 9.2.1) 4,308 60.51
2 Python (3.8.2) 975 13.69
3 PyPy3 (7.3.0) 926 13.01
4 C++ (Clang 10.0.0) 185 2.60
5 Java (OpenJDK 11.0.6) 178 2.50
6 Rust (1.42.0) 115 1.62
7 C (GCC 9.2.1) 93 1.31
8 C# (.NET Core 3.1.201) 75 1.05
9 Ruby (2.7.1) 60 0.84
10 Go (1.14.1) 38 0.53
11以降 167 2.35

上位5言語はABC 282のときと同様でした。
C++ (GCC 9.2.1)が60.51%で過半数を占めています。

ARCの結果

ARC 152

  • コンテスト名:AtCoder Regular Contest 152
  • コンテスト時間:2022-11-20(日) 21:00 ~ 2022-11-20(日) 23:00 (120分)
  • 分析対象
    • ユーザ数:2,416
    • プログラミング言語数:28

share_arc152.png

表にすると下記です。

言語 ユーザ数(人) 割合(%)
1 C++ (GCC 9.2.1) 1,810 74.92
2 PyPy3 (7.3.0) 278 11.51
3 Python (3.8.2) 134 5.55
4 C++ (Clang 10.0.0) 44 1.82
5 Java (OpenJDK 11.0.6) 41 1.70
6 Rust (1.42.0) 27 1.12
7 C# (.NET Core 3.1.201) 15 0.62
8 C (GCC 9.2.1) 12 0.50
9 Ruby (2.7.1) 10 0.41
10 Kotlin (1.3.71) 6 0.25
11以降 39 1.61

ABCに比べるとC++ (GCC 9.2.1)の割合が高まっています。

Python (3.8.2)の低下具合が顕著で、PyPy3 (7.3.0)が2位に上がっています。やはり速度を考えるとPythonではなくPyPyを選ぶというのが常道なんですかね。私もそうですし。ただ、PyPyよりPythonの方が速いケースもありますし、処理量と時間をきちんと意識するという本質を踏まえたコードを書けって話ですね(to 自分)。

ARC 151

  • コンテスト名:AtCoder Regular Contest 151
  • コンテスト時間:2022-10-16(日) 21:00 ~ 2022-10-16(日) 23:00 (120分)
  • 分析対象
    • ユーザ数:2,519
    • プログラミング言語数:28

share_arc151.png

表にすると下記です。

言語 ユーザ数(人) 割合(%)
1 C++ (GCC 9.2.1) 1,854 73.60
2 PyPy3 (7.3.0) 302 11.99
3 Python (3.8.2) 162 6.43
4 C++ (Clang 10.0.0) 38 1.51
5 Java (OpenJDK 11.0.6) 37 1.47
6 Rust (1.42.0) 34 1.35
7 C# (.NET Core 3.1.201) 25 0.99
8 C (GCC 9.2.1) 15 0.60
9 Ruby (2.7.1) 8 0.32
10 JavaScript (Node.js 12.16.1) 7 0.28
11以降 37 1.47

ABCと比べてC++ (GCC 9.2.1)の比率が高まり、Python (3.8.2)の比率が低下するという傾向はARC 152と同様です。
9位までの言語もARC 152と同様です。

AGCの結果

AGC 060

  • コンテスト名:AtCoder Grand Contest 060
  • コンテスト時間:2022-12-25(日) 21:00 ~ 2022-12-26(月) 00:00 (180分)
  • 分析対象
    • ユーザ数:972
    • プログラミング言語数:21

share_agc060.png

表にすると下記です。

言語 ユーザ数(人) 割合(%)
1 C++ (GCC 9.2.1) 786 80.86
2 PyPy3 (7.3.0) 84 8.64
3 Python (3.8.2) 24 2.47
4 C++ (Clang 10.0.0) 17 1.75
5 Java (OpenJDK 11.0.6) 14 1.44
6 Rust (1.42.0) 13 1.34
7 C# (.NET Core 3.1.201) 7 0.72
8 C (GCC 9.2.1) 7 0.72
9 Go (1.14.1) 3 0.31
10 Crystal (0.33.0) 3 0.31
11以降 14 1.44

C++ (GCC 9.2.1)の割合がさらに高まりました。速度を突き詰めるほどにC++が有利になっていくということなのか、競プロにおけるライブラリやノウハウが揃っているからか、あるいは速度を突き詰める人たちにC++ユーザーが多いのか。
Python (3.8.2)はさらに低下しています。

AGC 059

  • コンテスト名:AtCoder Grand Contest 059
  • コンテスト時間:2022-12-04(日) 21:00 ~ 2022-12-05(月) 00:00 (180分)
  • 分析対象
    • ユーザ数:1,239
    • プログラミング言語数:22

share_agc059.png

表にすると下記です。

言語 ユーザ数(人) 割合(%)
1 C++ (GCC 9.2.1) 965 77.89
2 PyPy3 (7.3.0) 129 10.41
3 Python (3.8.2) 32 2.58
4 C++ (Clang 10.0.0) 29 2.34
5 Java (OpenJDK 11.0.6) 27 2.18
6 Rust (1.42.0) 15 1.21
7 C# (.NET Core 3.1.201) 8 0.65
8 C (GCC 9.2.1) 7 0.56
9 Ruby (2.7.1) 4 0.32
10 Text (cat 8.28) 3 0.24
11以降 20 1.61

AGC 060と同様の傾向でした。ABC、ARCと比べてC++ (GCC 9.2.1)の割合が高いです。
8位まではAGC 060と同言語です。

最後に

AtCoderにおける主流がC++であるという想定通りの結果になりました。やはりコンテストのレベルが上がる毎にC++ユーザの割合も増えるのですね。

言語については速度などもいずれもう少し深掘りしてみたいなと思います。

それと、余談ですが、AtCoderから言語アップデートを予定している旨が発表されましたね。
楽しみです。

宣伝

SupershipのQiita Organizationを合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方はSupership株式会社 採用サイトよりご確認ください。

9
3
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
9
3