Rosetta Code/Rank languages by number of users: Difference between revisions
Content added Content deleted
(A Python implementation) |
(julia example) |
||
Line 162: | Line 162: | ||
44= 25 REXX |
44= 25 REXX |
||
</pre> |
</pre> |
||
=={{header|Julia}}== |
|||
<lang julia>""" Rank languages on Rosetta Code's site by number of users.""" |
|||
using HTTP |
|||
using JSON3 |
|||
const URI = "http://rosettacode.org/mw" |
|||
const PARAMS = [ |
|||
"action" => "query", |
|||
"format" => "json", |
|||
"formatversion" => "2", |
|||
"generator" => "categorymembers", |
|||
"gcmtitle" => "Category:Language users", |
|||
"gcmlimit" => "999", |
|||
"prop" => "categoryinfo", |
|||
"rawcontinue" => "", |
|||
] |
|||
function mediawikiquery(site=URI, type="pages", query=params, mintoshow=100) |
|||
langusers = Dict{String, Int}() |
|||
url = site * "/api.php?" * join(map(x -> x[1] * "=" * x[2], params), "&") |
|||
r = HTTP.get(url) |
|||
data = JSON3.read(String(r.body)) |
|||
for page in data["query"]["pages"] |
|||
lang = occursin("User", page["title"]) ? split(page["title"], r"\:|\sUser")[2] : |
|||
page["title"] |
|||
if haskey(page, "categoryinfo") |
|||
langusers[lang] = page["categoryinfo"]["size"] |
|||
else |
|||
langusers[lang] = 0 |
|||
end |
|||
end |
|||
for (i, p) in enumerate(sort!([lp for lp in langusers], lt = (x, y) -> x[2] > y[2])) |
|||
last(p) >= mintoshow && println(lpad(i, 2), " ", rpad(first(p), 30), last(p)) |
|||
end |
|||
end |
|||
mediawikiquery() |
|||
</lang>{{out}} |
|||
<pre> |
|||
1 C 427 |
|||
2 Java 310 |
|||
3 Python 307 |
|||
4 C++ 303 |
|||
5 JavaScript 282 |
|||
6 PHP 183 |
|||
7 Perl 182 |
|||
8 SQL 158 |
|||
9 UNIX Shell 150 |
|||
10 Pascal 131 |
|||
11 C sharp 131 |
|||
12 BASIC 130 |
|||
13 Haskell 113 |
|||
14 Ruby 104 |
|||
</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |