はじめに
自分はいつもPythonを使ってAtCoderのコンテストに参加しています。
自分の身の周りでもPythonでAtCoderをやっている人が多いのですが、参加者全体ではどのプログラミング言語が人気なのか気になったため、調べてみました。
(本記事では、2019年1月での状況を集計しています。)
調べ方
調べ方は、次の通りです。
利用したもの
言語: Python3 (APIで情報収集, matplotで統計グラフを作成)
データ収集: AtCoder非公式API
集計方法
上記のAtCoder非公式APIで提供されているAccepted Count for each langagesを利用することで、ユーザーごとの言語別の解答提出数を取得することができます。
言語ごとに、各ユーザーの提出数を足し合わせて、言語ごとの提出数の合計を計算しました。
結果
提出数が多かった言語上位7つをグラフにして可視化しました。
1位は圧倒的にC++
一番多かったのは予想通りC++で、提出数で2位のPythonと5倍近くの差をつけての1位でした。
C++は競技プログラミングの公式言語と言えるポジションであり、実行速度が速いことや、 蟻本をはじめとした競技プログラミング関連の解説コードがC++で説明されることなどからこのような結果になったのかと思われます。(それにしても圧倒的ですね)
2位から8位の言語
C++が圧倒的に1位でしたが、次はC++を除いた2位から8位の言語を見ていきます。
2位はPythonで3位のJavaに2倍以上の差をつけていました。
3位のJavaはC++と同様に実行速度が速く,競技プログラミング関連でも利用者が多いイメージでしで、個人的にはC++についで2位にランクインすると予想していましたが、Pythonに負けていました。
Pythonは人気
C++を除いた2位から8位の言語の提出割合を円グラフで可視化しました。
2位から8位の言語では、 Pythonが45%ほどを占めています。
Pythonの人気な理由として、文法のシンプルさ、PyPyでの高速化、充実した標準ライブラリなど、初心者から中上級者まで、扱いやすい特徴を備えている点が考えられます。
今後
今回はできなかったのですが,レート別でのランキングも調べてみたいです。
おそらく、上位のレート帯ほどC++の使用割合が増え、下位になるほど多様な言語が利用されていると思われます。
[追記]2019年7月
2019年3月ごろからAtCoder人口が急増したことを踏まえ、2019年7月では、どのように変化したのかが気になったため、再度調べてみました。
提出数が急増
2019年1月時点では、1位のC++の提出数が約10万件、2位のPythonが約2万件だったのに対して、2019年1月時点では、たった半年で、C++が約16万件と1.6倍ほどに、Pythonは約5万件と、2.5倍ほどになっています。
また、Pythonを利用している人が多いようで、2019年1月時点では9位だったPyPyも7位にまで上がっています。Python自体の提出数も、3位以下の言語との差を広げています。