Quantcast
Channel: 連想配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 121

Qiitaに掲載されているプログラミング言語別の記事数を調べてみた

$
0
0

はじめに

今年2020年に、Qiitaでどんなプログラミング言語の記事が書かれたか、興味本位で調べてみました。
せっかく調べたので、集計結果を紹介したいと思います。

その前に、TIOBE INDEXについて

TIOBE INDEXは、プログラミング言語の人気度を独自の集計法で、毎月発表しているサイトです。
あくまで一つの目安と思っていますが、ついつい見ています。

ちなみに、TIOBE INDEXでのD言語は、20位台を行ったり来たりです。
一時的に、2020年1月前後の数か月は10位台に入っていました。:wink:
tiobe202001.jpg
ただ、2020年12月時点では20位台に戻ったという状況です。
tiobe202012-1.jpg
tiobe202012-2.jpg

参考:TIOBE INDEXでのD言語の推移

TIOBE INDEXは、その時々の人気度を集計する仕組みだからか、毎月順位が大きく変動します。
よくよく考えると、数百種類あるといわれるプログラミング言語の中で、D言語が20位台とは結構な上位ですよね。
本当のところはどうなんだろう?
また、日本と海外とでは、人気度は違うのかなと思いました。
そんなこんなで、自分でも何か調べられないかと思い、この記事に至りました。

集計方法とソースコード

TIOBE INDEXで集計しているプログラミング言語とQiita Advent Calendar 2020にエントリーされたプログラミング言語を参考にQiitaでの記事数を取得する処理をD言語で書きました。
プログラミング言語ではないと思われるものは、対象外にしました。

検索条件のtag:にプログラミング言語が含まれるもの、さらにcreated:>2020-01を加えることで、今年の記事数に絞りました。
集計結果が0件となったものは、出力対象外にしました。

qiitacount.d
importstd.algorithm.sorting;importstd.conv;importstd.net.curl;importstd.stdio;importstd.string;importstd.uri;voidmain(){string[]language=["ABAP","ABC","ActionScript","Ada","Apex","Applescript","Assembly/アセンブラ/アセンブリ/アセンブリ言語","AutoLISP","Awk","Bash/Shell","Befunge","C","C#","C++","CL","Clojure","COBOL","CoffeeScript","Common-lisp/Lisp","Crystal","Dart","Delphi/ObjectPascal/Pascal","Deno","Dlang/D言語","Elixir","Elm","Erlang","F#","Factor","Forth","Fortran","Go","GoogleAppsScript","Groovy","Hack/Hacklang/HHVM","Haskell","IchigoJam","Icon","Idris","Io","J","Java","JavaScript","Julia","Kotlin","LabVIEW","Logo","Lua","MATLAB/Simulink","Mind","ML","MQL4","NATURAL","Neon","Nim","ObjectiveC/Objective-C","OCaml","OpenCL","Oz","Perl","PHP","PLSQL","PowerShell","Prolog","Python","Q","R","REXX","Ring","RPG","Ruby","Rust","SAS","Scala","Scheme","Scratch","Smalltalk","Solidity","SPARK","SPSS","SQL","Stan","Stata","Svelte","Swift","Tcl","Transact-SQL","TypeScript","Vala/Genie","VBScript","Verilog/SystemVerilog","VHDL","VisualBasic/VB/VB.Net","Vvvv","Wenyan/文言","なでしこ",];int[string]counter;foreach(s;language){intc=getCount(s);if(c>0){counter[s]=c;}}writefln("|プログラミング言語|件数|");writefln("|:-----------------|---:|");foreach(lang;counter.keys.sort!((a,b){returncounter[a]>counter[b];})){writefln("|%s|%s|",lang,counter[lang]);}}intgetCount(stringlang){lang=lang.replace("/"," OR created:>2020-01 tag:");stringsUrl="https://qiita.com/search?q=created%3A>2020-01+tag%3A"~lang.encodeComponent;autohttp=HTTP();stringresponse=cast(string)get(sUrl,http);stringkeyword1=`<span class="badge">`;stringkeyword2=`</span>`;intind1=indexOf(response,keyword1);intind2=indexOf(response,keyword2,ind1);return(response[(ind1+keyword1.length)..ind2].to!int);}

連想配列のソート

D言語は言語仕様として、連想配列が用意されています。
ソースコードqiitacount.dで宣言しているint[string] counterが連想配列です。プログラミング言語(string型)をキーに、記事の件数(int型)をとして、集計結果をセットしています。
連想配列をソートすることができます。
キーの昇順にソートする場合と、値の昇順にソートする場合の例を紹介します。

sample.d
importstd.stdio;importstd.algorithm;voidmain(){immutablestring[string]colors=["red":"akairo","pink":"momoiro","yellow":"kiiro","purple":"murasakiiro","blue":"aoiro"];autokeys=colors.keys;writeln("キー順にソート");keys.sort!("a < b");foreach(key;keys){autovalue=colors[key];writefln("%-10s=> %s",key,value);}writeln;writeln("値順にソート");keys.sort!((a,b){returncolors[a]<colors[b];});foreach(key;keys){autovalue=colors[key];writefln("%-10s=> %s",key,value);}}
実行結果
キー順にソート
blue      => aoiro
pink      => momoiro
purple    => murasakiiro
red       => akairo
yellow    => kiiro

値順にソート
red       => akairo
blue      => aoiro
yellow    => kiiro
pink      => momoiro
purple    => murasakiiro

集計結果

qiitacount.dの実行結果(2020/12/26 20:10頃実行)は、Markdownなので、そのまま貼り付けます。2020年はあと数日ありますが、傾向はつかめるかと思います。
私自身、プログラミング言語の種類には詳しくないです。ということもあって、プログラミング言語のタグが複数に分かれているとせっかくの記事が見つけられずにもったいないなと感じました。(VB.Netとか、アセンブラとか。他にも取りこぼしがありそう)
D言語では、dlangD言語DlanguageDd_langのタグが使われていましたが、最近の記事はdlangD言語のいずれかのタグが付いているようです。
改めてQiitaにはいろんな記事が書かれているんだなと、ただただ感心しました。世の中は広いです。

プログラミング言語件数
Python14926
JavaScript9475
Ruby7398
PHP4433
Java3562
Swift3048
C#2429
TypeScript2414
Go2009
C++1774
Kotlin1310
SQL1199
Bash/Shell956
Rust899
GoogleAppsScript863
R776
C634
PowerShell626
Dart583
Elixir408
MATLAB/Simulink306
Scala276
Julia251
Haskell193
Perl174
Deno156
ObjectiveC/Objective-C133
VisualBasic/VB/VB.Net133
SPARK108
Apex103
Elm95
VBScript93
Svelte90
Delphi/ObjectPascal/Pascal89
Assembly/アセンブラ/アセンブリ/アセンブリ言語85
Fortran84
Nim75
Common-lisp/Lisp74
ABC69
Awk64
F#62
Verilog/SystemVerilog61
Solidity58
Lua56
Scratch54
Dlang/D言語54
Applescript50
なでしこ49
Prolog45
SAS41
PLSQL41
Scheme41
SPSS39
Erlang36
Groovy35
OCaml33
Mind32
Neon30
COBOL30
Stan29
Clojure27
ABAP26
AutoLISP26
VHDL23
ML22
J20
OpenCL19
MQL415
Tcl14
Wenyan/文言14
IchigoJam13
Hack/Hacklang/HHVM12
RPG12
Icon11
ActionScript10
Crystal10
CL9
Vala/Genie9
CoffeeScript9
Forth8
Smalltalk8
Transact-SQL5
Befunge5
Io5
LabVIEW4
Idris3
Logo2
Q2
Vvvv1
Stata1

Viewing all articles
Browse latest Browse all 121

Trending Articles