Rosetta Code/Rank languages by number of users

You are encouraged to solve this task according to the task description, using any language you may know.
- Task
Sort most popular programming languages based on the number of users on Rosetta Code.
Show the languages with at least 100 users.
- A method to solve the task
Users of a computer programming language X are those referenced in the page:
https://rosettacode.org/wiki/Category:X_User, or preferably: https://rosettacode.org/mw/index.php?title=Category:X_User&redirect=no to avoid re-directions.
In order to find the list of such categories, it's possible to first parse the entries of:
http://rosettacode.org/mw/index.php?title=Special:Categories&limit=5000.
Then download and parse each computer language users category to find the number of users of that computer language.
Sample output on 18 February 2019:
Language Users -------------------------- C 391 Java 276 C++ 275 Python 262 JavaScript 238 Perl 171 PHP 167 SQL 138 UNIX Shell 131 BASIC 120 C sharp 118 Pascal 116 Haskell 102
A Rosetta Code user usually declares using a language with the mylang template. This template is expected to appear on the User page. However, in some cases it appears in a user Talk page. It's not necessary to take this into account. For instance, among the 373 C users in the table above, 3 are actually declared in a Talk page.
package main
import (
"fmt"
"io/ioutil"
"net/http"
"regexp"
"sort"
"strconv"
)
type Result struct {
lang string
users int
}
func main() {
const minimum = 25
ex := `"Category:(.+?)( User)?"(\}|,"categoryinfo":\{"size":(\d+),)`
re := regexp.MustCompile(ex)
page := "http://rosettacode.org/mw/api.php?"
action := "action=query"
format := "format=json"
fversion := "formatversion=2"
generator := "generator=categorymembers"
gcmTitle := "gcmtitle=Category:Language%20users"
gcmLimit := "gcmlimit=500"
prop := "prop=categoryinfo"
rawContinue := "rawcontinue="
page += fmt.Sprintf("%s&%s&%s&%s&%s&%s&%s&%s", action, format, fversion,
generator, gcmTitle, gcmLimit, prop, rawContinue)
resp, _ := http.Get(page)
body, _ := ioutil.ReadAll(resp.Body)
matches := re.FindAllStringSubmatch(string(body), -1)
resp.Body.Close()
var results []Result
for _, match := range matches {
if len(match) == 5 {
users, _ := strconv.Atoi(match[4])
if users >= minimum {
result := Result{match[1], users}
results = append(results, result)
}
}
}
sort.Slice(results, func(i, j int) bool {
return results[j].users < results[i].users
})
fmt.Println("Rank Users Language")
fmt.Println("---- ----- --------")
rank := 0
lastUsers := 0
lastRank := 0
for i, result := range results {
eq := " "
rank = i + 1
if lastUsers == result.users {
eq = "="
rank = lastRank
} else {
lastUsers = result.users
lastRank = rank
}
fmt.Printf(" %-2d%s %3d %s\n", rank, eq, result.users, result.lang)
}
}
- Output:
Rank Users Language ---- ----- -------- 1 397 C 2 278 C++ 2 = 278 Java 4 266 Python 5 240 JavaScript 6 171 Perl 7 168 PHP 8 139 SQL 9 131 UNIX Shell 10 121 C sharp 11 120 BASIC 12 118 Pascal 13 102 Haskell 14 93 Ruby 15 81 Fortran 16 70 Visual Basic 17 65 Prolog 18 61 Scheme 19 59 Common Lisp 20 58 AWK 20= 58 Lua 22 52 HTML 23 46 Batch File 24 45 Assembly 24= 45 X86 Assembly 26 43 Bash 27 40 Erlang 27= 40 MATLAB 29 39 Lisp 30 38 Forth 31 36 Visual Basic .NET 31= 36 Delphi 33 35 APL 33= 35 J 35 34 Tcl 35= 34 Brainf*** 37 33 Objective-C 38 32 COBOL 38= 32 R 40 30 Go 40= 30 Mathematica 42 29 Perl 6 43 27 Clojure 44 25 OCaml 44= 25 AutoHotkey 44= 25 REXX
Works with jq, the C implementation of jq
Works with gojq, the Go implementation of jq
jq does not currently provide support for retrieving content from the Internet, but is intended to interoperate with standard command-line tools, so for this example we'll assume a command line invocation along the lines of the following:
curl -sS "https://rosettacode.org/w/api.php?action=query&format=json&formatversion=2&generator=categorymembers&gcmtitle=Category:Language%20users&gcmlimit=500&rawcontinue&prop=categoryinfo" | jq -rf users.jq
where "users.jq" contains the jq program shown below.
def rpad($len): tostring | ($len - length) as $l | . + (" " * $l);
def lpad($len): tostring | ($len - length) as $l | (" " * $l) + .;
def cat: sub("Category:";"") | sub(" User$";"");
"As of \(now | strftime("%A %B %d, %Y %Z %H:%M") ):",
"\n\("Language" | rpad(30)) Users",
"_" * 36,
([.query.pages[] | {title, n: .categoryinfo.size}]
| sort_by(.n)
| reverse[]
| select(.n>100)
| "\(.title | cat | rpad(30)) \(.n|lpad(5))" )- Output:
As of Tuesday June 25, 2024 EST 06:52: Language Users ____________________________________ C 468 Python 344 Java 343 C++ 330 JavaScript 307 PHP 200 Perl 195 SQL 177 UNIX Shell 160 Pascal 139 BASIC 138 C sharp 137 Haskell 116 Ruby 111
""" Rank languages on Rosetta Code's site by number of users."""
using Dates
using HTTP
using JSON3
const URL = "https://rosettacode.org/w/api.php?"
const PARAMS = ["action" => "query", "format" => "json", "formatversion" => "2", "generator" => "categorymembers",
"gcmtitle" => "Category:Language%20users", "gcmlimit" => "500", "rawcontinue" => "", "prop" => "categoryinfo"]
const resp = HTTP.get(URL * join(map(p -> p[1] * (p[2] == "" ? "" : ("=" * p[2])), PARAMS), "&"))
const counts = Pair{Int, String}[]
for p in JSON3.read(String(resp.body)).query.pages
contains(p.title, "Category") && push!(counts, p.categoryinfo.size => p.title)
end
println("Date: ", now(), "\nLanguage Users\n----------------------")
for p in sort!(filter(p -> p[1] >= 100, counts), rev = true)
println(rpad(replace(p[2], r"Category:(.+) User" => s"\1"), 16), lpad(p[1], 4))
end
- Output:
Date: 2022-09-03T21:17:29.428 Language Users ---------------------- C 441 Java 321 Python 319 C++ 314 JavaScript 291 PHP 190 Perl 186 SQL 167 UNIX Shell 151 Pascal 133 C sharp 132 BASIC 132 Haskell 115 Ruby 107
import algorithm, httpclient, json, strformat, strscans, strutils
const
Action = "action=query"
Format = "format=json"
FormatVersion = "formatversion=2"
Generator = "generator=categorymembers"
GcmTitle = "gcmtitle=Category:Language%20users"
GcmLimit = "gcmlimit=500"
Prop = "prop=categoryinfo"
Page = "http://rosettacode.org/w/api.php?" &
[Action, Format, Formatversion, Generator, GcmTitle, GcmLimit, Prop].join("&")
type Counts = tuple[lang: string, count: int]
proc cmp(a, b: Counts): int =
## Compare two count tuples. Place the one with greater count field first and when
## count fields are equal, place the one with the first name in alphabetic order.
result = cmp(b.count, a.count)
if result == 0: result = cmp(a.lang, b.lang)
var client = newHttpClient()
var counts: seq[Counts]
var url = Page
while true:
# Access to the page and load the JSON representation.
let response = client.get(url)
if response.status != $Http200: break
let root = response.body.parseJson()
# Extract language names and number of users.
for node in root{"query", "pages"}:
var lang: string
if node["title"].getStr().scanf("Category:$+ User", lang):
let count = node{"categoryinfo", "size"}.getInt()
counts.add (lang, count)
if "continue" notin root: break
# Load continuation page.
let gcmcont = root{"continue", "gcmcontinue"}.getStr()
let cont = root{"continue", "continue"}.getStr()
url = Page & fmt"&gcmcontinue={gcmcont}&continue={cont}"
# Sort and display.
counts.sort(cmp)
var rank, lastCount = 0
for i, (lang, count) in counts:
if count != lastCount:
rank = i + 1
lastCount = count
echo &"{rank:3} {count:4} - {lang}"
- Output:
1 451 - C 2 331 - Java 3 328 - Python 4 321 - C++ 5 295 - JavaScript 6 194 - PHP 7 188 - Perl 8 170 - SQL 9 154 - UNIX Shell 10 136 - Pascal 11 135 - C sharp 12 134 - BASIC 13 115 - Haskell 14 109 - Ruby 15 94 - Fortran 16 76 - Visual Basic 17 73 - Scheme 18 70 - Prolog 19 68 - AWK 19 68 - Lua 21 66 - Common Lisp 22 62 - HTML 23 56 - X86 Assembly 24 50 - Forth 25 49 - Batch File 26 47 - Assembly 26 47 - Bash 28 45 - MATLAB 29 42 - Lisp 30 41 - APL 30 41 - Delphi 30 41 - Erlang 30 41 - Go 34 40 - R 35 39 - J 35 39 - Tcl 35 39 - Visual Basic .NET 38 38 - COBOL 39 37 - Objective-C 39 37 - Smalltalk 41 35 - Brainf*** 42 33 - Clojure 42 33 - Mathematica 44 30 - OCaml 45 28 - LaTeX 45 28 - REXX 47 27 - AutoHotkey 47 27 - Emacs Lisp 47 27 - PostScript 50 26 - Scala 50 26 - Sed 50 26 - VBScript 53 25 - 6502 Assembly 53 25 - CSS 53 25 - Perl 6 53 25 - Racket 57 24 - MySQL 57 24 - XSLT 59 22 - Rust 60 21 - 8086 Assembly 60 21 - Logo 60 21 - VBA 60 21 - Z80 Assembly 64 19 - Apex 64 19 - F Sharp 64 19 - Julia 64 19 - Make 68 18 - AppleScript 68 18 - Factor 68 18 - PL/I 68 18 - TI-83 BASIC 72 17 - D 72 17 - Standard ML 74 16 - Modula-2 74 16 - PowerShell 76 15 - ARM Assembly 76 15 - ActionScript 76 15 - Icon 76 15 - Nim 80 14 - Maxima 80 14 - SNOBOL4 82 13 - 80386 Assembly 82 13 - Befunge 82 13 - Euphoria 85 12 - CoffeeScript 85 12 - Unicon 87 11 - Eiffel 87 11 - Elixir 87 11 - Groovy 87 11 - Korn Shell 87 11 - MIPS Assembly 87 11 - Octave 87 11 - PARI/GP 87 11 - TypeScript 87 11 - UnixPipes ... 394 0 - Vorpal 394 0 - Vox 394 0 - Wrapl 394 0 - Zonnon
use strict;
use warnings;
use JSON;
use URI::Escape;
use LWP::UserAgent;
my $client = LWP::UserAgent->new;
$client->agent("Rosettacode Perl task solver");
my $url = 'http://rosettacode.org/mw';
my $minimum = 100;
sub uri_query_string {
my(%fields) = @_;
'action=query&format=json&formatversion=2&' .
join '&', map { $_ . '=' . uri_escape($fields{$_}) } keys %fields
}
sub mediawiki_query {
my($site, $type, %query) = @_;
my $url = "$site/api.php?" . uri_query_string(%query);
my %languages = ();
my $req = HTTP::Request->new( GET => $url );
my $response = $client->request($req);
$response->is_success or die "Failed to GET '$url': ", $response->status_line;
my $data = decode_json($response->content);
for my $row ( @{${$data}{query}{pages}} ) {
next unless defined $$row{categoryinfo} && $$row{title} =~ /User/;
my($title) = $$row{title} =~ /Category:(.*?) User/;
my($count) = $$row{categoryinfo}{pages};
$languages{$title} = $count;
}
%languages;
}
my %table = mediawiki_query(
$url, 'pages',
( generator => 'categorymembers',
gcmtitle => 'Category:Language users',
gcmlimit => '999',
prop => 'categoryinfo',
rawcontinue => '',
)
);
for my $k (sort { $table{$b} <=> $table{$a} } keys %table) {
printf "%4d %s\n", $table{$k}, $k if $table{$k} > $minimum;
}
- Output:
397 C 278 Java 278 C++ 266 Python 240 JavaScript 171 Perl 168 PHP 139 SQL 131 UNIX Shell 121 C sharp 120 BASIC 118 Pascal 102 Haskell
See Rank languages by popularity, just set output_users to true.
- Output:
1: 397 - C 2: 278 - C++ =: 278 - Java 4: 266 - Python 5: 240 - JavaScript 6: 171 - Perl 7: 168 - PHP 8: 139 - SQL 9: 131 - UNIX Shell 10: 121 - C sharp 11: 120 - BASIC 12: 118 - Pascal 13: 102 - Haskell 14: 93 - Ruby 15: 81 - Fortran 16: 70 - Visual Basic 17: 65 - Prolog 18: 61 - Scheme 19: 59 - Common Lisp 20: 58 - AWK
"""Rank languages by number of users. Requires Python >=3.5"""
import requests
# MediaWiki API URL.
URL = "http://rosettacode.org/mw/api.php"
# Query string parameters
PARAMS = {
"action": "query",
"format": "json",
"formatversion": 2,
"generator": "categorymembers",
"gcmtitle": "Category:Language users",
"gcmlimit": 500,
"prop": "categoryinfo",
}
def fetch_data():
counts = {}
continue_ = {"continue": ""}
# Keep making HTTP requests to the MediaWiki API if more records are
# available.
while continue_:
resp = requests.get(URL, params={**PARAMS, **continue_})
resp.raise_for_status()
data = resp.json()
# Grab the title (language) and size (count) only.
counts.update(
{
p["title"]: p.get("categoryinfo", {}).get("size", 0)
for p in data["query"]["pages"]
}
)
continue_ = data.get("continue", {})
return counts
if __name__ == "__main__":
# Request data from the MediaWiki API.
counts = fetch_data()
# Filter out languages that have less than 100 users.
at_least_100 = [(lang, count) for lang, count in counts.items() if count >= 100]
# Sort languages by number of users
top_languages = sorted(at_least_100, key=lambda x: x[1], reverse=True)
# Pretty print
for i, lang in enumerate(top_languages):
print(f"{i+1:<5}{lang[0][9:][:-5]:<20}{lang[1]}")
- Output:
1 C 423 2 Java 308 3 C++ 301 4 Python 301 5 JavaScript 279 6 PHP 182 7 Perl 181 8 SQL 158 9 UNIX Shell 149 10 Pascal 130 11 C sharp 130 12 BASIC 129 13 Haskell 111 14 Ruby 102
Note: the implementation is very similar to Rank languages by popularity.
#lang racket
(require racket/hash
net/url
json)
(define limit 64)
(define (replacer cat) (regexp-replace #rx"^Category:(.*?) User$" cat "\\1"))
(define category "Category:Language users")
(define entries "users")
(define api-url (string->url "http://rosettacode.org/mw/api.php"))
(define (make-complete-url gcmcontinue)
(struct-copy url api-url
[query `([format . "json"]
[action . "query"]
[generator . "categorymembers"]
[gcmtitle . ,category]
[gcmlimit . "200"]
[gcmcontinue . ,gcmcontinue]
[continue . ""]
[prop . "categoryinfo"])]))
(define @ hash-ref)
(define table (make-hash))
(let loop ([gcmcontinue ""])
(define resp (read-json (get-pure-port (make-complete-url gcmcontinue))))
(hash-union! table
(for/hash ([(k v) (in-hash (@ (@ resp 'query) 'pages))])
(values (@ v 'title #f) (@ (@ v 'categoryinfo (hash)) 'size 0))))
(cond [(@ resp 'continue #f) => (λ (c) (loop (@ c 'gcmcontinue)))]))
(for/fold ([prev #f] [rank #f] #:result (void))
([item (in-list (sort (hash->list table) > #:key cdr))] [i (in-range limit)])
(match-define (cons cat size) item)
(define this-rank (if (equal? prev size) rank (add1 i)))
(printf "Rank: ~a ~a ~a\n"
(~a this-rank #:align 'right #:min-width 2)
(~a (format "(~a ~a)" size entries) #:align 'right #:min-width 14)
(replacer cat))
(values size this-rank))
- Output:
Rank: 1 (402 users) C Rank: 2 (283 users) Java Rank: 3 (281 users) C++ Rank: 4 (270 users) Python Rank: 5 (243 users) JavaScript Rank: 6 (175 users) Perl Rank: 7 (171 users) PHP Rank: 8 (142 users) SQL Rank: 9 (134 users) UNIX Shell Rank: 10 (123 users) C sharp Rank: 10 (123 users) BASIC Rank: 12 (119 users) Pascal Rank: 13 (105 users) Haskell Rank: 14 (94 users) Ruby Rank: 15 (83 users) Fortran Rank: 16 (71 users) Visual Basic Rank: 17 (67 users) Prolog Rank: 18 (63 users) Scheme Rank: 19 (61 users) Common Lisp Rank: 20 (59 users) AWK Rank: 20 (59 users) Lua Rank: 22 (52 users) HTML Rank: 23 (46 users) X86 Assembly Rank: 23 (46 users) Batch File Rank: 23 (46 users) Assembly Rank: 26 (44 users) Bash Rank: 27 (40 users) Erlang Rank: 27 (40 users) MATLAB Rank: 29 (39 users) Forth Rank: 29 (39 users) Lisp Rank: 31 (37 users) Visual Basic .NET Rank: 32 (36 users) APL Rank: 32 (36 users) Tcl Rank: 32 (36 users) Delphi Rank: 35 (35 users) J Rank: 36 (34 users) Brainf*** Rank: 37 (33 users) COBOL Rank: 37 (33 users) Objective-C Rank: 39 (32 users) Go Rank: 39 (32 users) R Rank: 41 (30 users) Mathematica Rank: 42 (29 users) Perl 6 Rank: 43 (28 users) Clojure Rank: 44 (25 users) OCaml Rank: 44 (25 users) AutoHotkey Rank: 44 (25 users) REXX Rank: 47 (24 users) PostScript Rank: 48 (23 users) Sed Rank: 48 (23 users) Emacs Lisp Rank: 48 (23 users) LaTeX Rank: 51 (22 users) VBScript Rank: 51 (22 users) CSS Rank: 51 (22 users) MySQL Rank: 51 (22 users) Scala Rank: 55 (20 users) XSLT Rank: 55 (20 users) Racket Rank: 57 (19 users) 6502 Assembly Rank: 58 (18 users) Z80 Assembly Rank: 58 (18 users) Logo Rank: 60 (17 users) Factor Rank: 60 (17 users) Make Rank: 60 (17 users) 8086 Assembly Rank: 60 (17 users) F Sharp Rank: 64 (16 users) PL/I
(formerly Perl 6)
Use the mediawiki API rather than web scraping since it is much faster and less resource intensive. Show languages with more than 25 users since that is still a pretty short list and to demonstrate how tied rankings are handled. Change the $minimum parameter to adjust what the cut-off point will be.
This is all done in a single pass; ties are not detected until a language has the same count as a previous one, so ties are marked by a T next to the count indicating that this language has the same count as the previous.
use HTTP::UserAgent;
use URI::Escape;
use JSON::Fast;
my $client = HTTP::UserAgent.new;
my $url = 'https://rosettacode.org/w';
my $start-time = now;
say "========= Generated: { DateTime.new(time) } =========";
my $lang = 1;
my $rank = 0;
my $last = 0;
my $tie = ' ';
my $minimum = 25;
.say for
mediawiki-query(
$url, 'pages',
:generator<categorymembers>,
:gcmtitle<Category:Language users>,
:gcmlimit<350>,
:rawcontinue(),
:prop<categoryinfo>
)
.map({ %( count => .<categoryinfo><pages> || 0,
lang => .<title>.subst(/^'Category:' (.+) ' User'/, ->$/ {$0}) ) })
.sort( { -.<count>, .<syntaxhighlight lang="text"> } )
.map( { last if .<count> < $minimum; display(.<count>, .<syntaxhighlight lang="text">) } );
say "========= elapsed: {(now - $start-time).round(.01)} seconds =========";
sub display ($count, $which) {
if $last != $count { $last = $count; $rank = $lang; $tie = ' ' } else { $tie = 'T' };
sprintf "#%3d Rank: %2d %s with %-4s users: %s", $lang++, $rank, $tie, $count, $which;
}
sub mediawiki-query ($site, $type, *%query) {
my $url = "$site/api.php?" ~ uri-query-string(
:action<query>, :format<json>, :formatversion<2>, |%query);
my $continue = '';
gather loop {
my $response = $client.get("$url&$continue");
my $data = from-json($response.content);
take $_ for $data.<query>.{$type}.values;
$continue = uri-query-string |($data.<query-continue>{*}».hash.hash or last);
}
}
sub uri-query-string (*%fields) {
join '&', %fields.map: { "{.key}={uri-escape .value}" }
}
- Output:
========= Generated: 2022-09-02T20:59:20Z ========= # 1 Rank: 1 with 441 users: C # 2 Rank: 2 with 321 users: Java # 3 Rank: 3 with 319 users: Python # 4 Rank: 4 with 314 users: C++ # 5 Rank: 5 with 291 users: JavaScript # 6 Rank: 6 with 190 users: PHP # 7 Rank: 7 with 186 users: Perl # 8 Rank: 8 with 167 users: SQL # 9 Rank: 9 with 151 users: UNIX Shell # 10 Rank: 10 with 133 users: Pascal # 11 Rank: 11 with 132 users: BASIC # 12 Rank: 11 T with 132 users: C sharp # 13 Rank: 13 with 115 users: Haskell # 14 Rank: 14 with 107 users: Ruby # 15 Rank: 15 with 94 users: Fortran # 16 Rank: 16 with 75 users: Visual Basic # 17 Rank: 17 with 72 users: Scheme # 18 Rank: 18 with 70 users: Prolog # 19 Rank: 19 with 68 users: AWK # 20 Rank: 19 T with 68 users: Lua # 21 Rank: 21 with 66 users: Common Lisp # 22 Rank: 22 with 61 users: HTML # 23 Rank: 23 with 55 users: X86 Assembly # 24 Rank: 24 with 50 users: Forth # 25 Rank: 25 with 49 users: Batch File # 26 Rank: 26 with 47 users: Assembly # 27 Rank: 27 with 45 users: Bash # 28 Rank: 27 T with 45 users: MATLAB # 29 Rank: 29 with 42 users: Lisp # 30 Rank: 30 with 41 users: APL # 31 Rank: 30 T with 41 users: Erlang # 32 Rank: 32 with 40 users: Delphi # 33 Rank: 32 T with 40 users: R # 34 Rank: 34 with 39 users: J # 35 Rank: 34 T with 39 users: Visual Basic .NET # 36 Rank: 36 with 38 users: Go # 37 Rank: 36 T with 38 users: Tcl # 38 Rank: 38 with 37 users: COBOL # 39 Rank: 39 with 36 users: Smalltalk # 40 Rank: 40 with 35 users: Brainf*** # 41 Rank: 40 T with 35 users: Objective-C # 42 Rank: 42 with 34 users: Clojure # 43 Rank: 43 with 33 users: Mathematica # 44 Rank: 44 with 30 users: OCaml # 45 Rank: 45 with 28 users: LaTeX # 46 Rank: 46 with 27 users: AutoHotkey # 47 Rank: 46 T with 27 users: Emacs Lisp # 48 Rank: 46 T with 27 users: PostScript # 49 Rank: 46 T with 27 users: REXX # 50 Rank: 50 with 26 users: Perl 6 # 51 Rank: 50 T with 26 users: Sed # 52 Rank: 52 with 25 users: CSS # 53 Rank: 52 T with 25 users: Scala # 54 Rank: 52 T with 25 users: VBScript ========= elapsed: 1.48 seconds ========= ========= elapsed: 1.45 seconds =========
(Native) REXX doesn't support web-page reading, so the mentioned Rosetta Code categories and
Rosetta Code Languages were downloaded to local files.
This program reads the Languages file (looking for a language user) and uses the contents of
that file for a validation of the categories file.
This essentially is a perfect filter for the Rosetta Code categories file.
The catHeap variable in the REXX program is just a long string of all the records in the web-file of the
Rosetta Code categories, with a special character (sep) that separates each count of users
for a computer programming language entry (name).
The mechanism is to use a (sparse) stemmed array which holds only the names of languages which
(for most REXXes) uses a hashing algorithm to locate the entry (which is very fast).
Programming note: (REXX doesn't handle Unicode characters) some special cases that are translated:
- ╬£C++ translated into µC++ [Greek micro]
- ╨£╨Ü-61/52 translated into MK-61/52 [Cyrillic МК-61/52])
- ??-61/52 translated into MK-61/52 [Cyrillic МК-61/52])
- D├⌐j├á Vu translated into Déjà Vu
- Cach├⌐ translated into Caché
- F┼ìrmul├ª translated into Fôrmulæ
- உயிர்/Uyir translated into Uyir
- МiniZinc translated into MiniZinc
(The 3rd entry is most likely caused by the inability to render unsupported glyphs when it was first used to add that language.)
Code was added to support the renaming of the computer programming language Perl 6 ──► Raku.
Note that this REXX example properly ranks tied languages.
/*REXX program reads 2 files & displays a ranked list of Rosetta Code languages by users*/
parse arg catFID lanFID outFID . /*obtain optional arguments from the CL*/
call init /*initialize some REXX variables. */
call get /*obtain data from two separate files. */
call eSort #,0 /*sort languages along with members. */
call tSort /* " " that are tied in rank.*/
call eSort #,1 /* " " along with members. */
call out /*create the RC_USER.OUT (output) file.*/
exit 0 /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
commas: parse arg _; do jc=length(_)-3 to 1 by -3; _= insert(",",_,jc); end; return _
s: if arg(1)==1 then return arg(3); return word(arg(2) 's',1) /*pluralizer.*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
eSort: procedure expose #. @. !tr.; arg N,p2; h= N /*sort: number of members*/
do while h>1; h= h % 2 /*halve number of records*/
do i=1 for N-h; j= i; k= h + i /*sort this part of list.*/
if p2 then do while !tR.k==!tR.j & @.k>@.j /*this uses a hard swap ↓*/
@= @.j; #= !tR.j; @.j= @.k; !tR.j= !tR.k; @.k= @; !tR.k= #
if h>=j then leave; j= j - h; k= k - h
end /*while !tR.k==···*/
else do while #.k<#.j /*this uses a hard swap ↓*/
@= @.j; #= #.j; @.j= @.k; #.j= #.k; @.k= @; #.k= #
if h>=j then leave; j= j - h; k= k - h
end /*while #.k<···*/
end /*i*/ /*hard swaps needed for embedded blanks.*/
end /*while h>1*/; return
/*──────────────────────────────────────────────────────────────────────────────────────*/
get: langs= 0; call rdr 'languages' /*assign languages ───► L.ααα */
call rdr 'categories' /*append categories ───► catHeap */
#= 0
do j=1 until catHeap=='' /*process the heap of categories. */
parse var catHeap cat.j (sep) catHeap /*get a category from the catHeap. */
parse var cat.j cat.j '<' "(" mems . /*untangle the strange─looking string. */
cat.j= space(cat.j); ?=cat.j; upper ? /*remove any superfluous blanks. */
if ?=='' | \L.? then iterate /*it's blank or it's not a language. */
if pos(',', mems)\==0 then mems= space(translate(mems,,","), 0) /*¬commas.*/
if \datatype(mems, 'W') then iterate /*is the "members" number not numeric? */
#.0= #.0 + mems /*bump the number of members found. */
if u.?\==0 then do; do f=1 for # until ?==@u.f
end /*f*/
#.f= #.f + mems; iterate j /*languages in different cases.*/
end /* [↑] handle any possible duplicates.*/
u.?= u.? + 1; #= # + 1 /*bump a couple of counters. */
#.#= #.# + mems; @.#= cat.j; @u.#=? /*bump the counter; assign it (upper).*/
end /*j*/
!.=; @tno= '(total) number of' /*array holds indication of TIED langs.*/
call tell right(commas(#), 9) @tno 'languages detected in the category file'
call tell right(commas(langs),9) ' " " " " " " " language "'
call tell right(commas(#.0), 9) @tno 'entries (users of lanugages) detected', , 1
term= 0
return /*don't show any more msgs──►term. [↑] */
/*──────────────────────────────────────────────────────────────────────────────────────*/
init: sep= '█'; L.=0; #.=0; u.=#.; catHeap=; term=1; old.= /*assign some REXX vars*/
if catFID=='' then catFID= "RC_USER.CAT" /*Not specified? Then use the default.*/
if lanFID=='' then lanFID= "RC_USER.LAN" /* " " " " " " */
if outFID=='' then outFID= "RC_USER.OUT" /* " " " " " " */
call tell center('timestamp: ' date() time("Civil"),79,'═'), 2, 1; return
/*──────────────────────────────────────────────────────────────────────────────────────*/
out: w= length( commas(#) ); rank= 0 /* [↓] show by ascending rank of lang.*/
do t=# by -1 for #; rank= rank + 1 /*bump rank of a programming language. */
call tell right('rank:' right(commas(!tR.t), w), 20-1) right(!.t, 7),
right('('commas(#.t) left("entr"s(#.t, 'ies', "y")')', 9), 20) @.t
end /*#*/ /* [↑] S(···) pluralizes a word. */
call tell left('', 27) "☼ end─of─list. ☼", 1, 2; return /*bottom title.*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
rdr: arg which 2; igAst= 1 /*ARG uppers WHICH, obtain the 1st char*/
if which=='L' then inFID= lanFID /*use this fileID for the languages. */
if which=='C' then inFID= catFID /* " " " " " categories. */
Uyir= 'உயிர்/Uyir' /*Unicode (in text) name for Uyir */
old.0= '╬£C++' ; new.0= "µC++" /*Unicode ╬£C++ ───► ASCII─8: µC++ */
old.1= 'UC++' ; new.1= "µC++" /*old UC++ ───► ASCII─8: µC++ */
old.2= '╨£╨Ü-' ; new.2= "MK-" /*Unicode ╨£╨Ü─ ───► ASCII-8: MK- */
old.3= 'D├⌐j├á' ; new.3= "Déjà" /*Unicode ├⌐j├á ───► ASCII─8: Déjà */
old.4= 'Cach├⌐' ; new.4= "Caché" /*Unicode Cach├⌐ ───► ASCII─8: Caché */
old.5= '??-61/52' ; new.5= "MK-61/52" /*somewhere past, a mis─translated: MK-*/
old.6= 'F┼ìrmul├ª' ; new.6= 'Fôrmulæ' /*Unicode ───► ASCII─8: Fôrmulæ */
old.7= '╨£iniZinc' ; new.7= 'MiniZinc' /*Unicode ───► ASCII─8: MiniZinc*/
old.8= Uyir ; new.8= 'Uyir' /*Unicode ───► ASCII─8: Uyir */
old.9= 'Perl 6' ; new.9= 'Raku' /* (old name) ───► (new name) */
do recs=0 while lines(inFID) \== 0 /*read a file, a single line at a time.*/
$= translate( linein(inFID), , '9'x) /*handle any stray TAB ('09'x) chars.*/
$$= space($); if $$=='' then iterate /*ignore all blank lines in the file(s)*/
do v=0 while old.v \== '' /*translate Unicode variations of langs*/
if pos(old.v, $$) \==0 then $$= changestr(old.v, $$, new.v)
end /*v*/ /* [↑] handle different lang spellings*/
if igAst then do; igAst= pos(' * ', $)==0; if igAst then iterate; end
if pos('RETRIEVED FROM', translate($$))\==0 then leave /*pseudo End─Of─Data?.*/
if which=='L' then do; if left($$, 1)\=="*" then iterate /*lang ¬legitimate?*/
parse upper var $$ '*' $$ "<"; $$= space($$)
if $$=='' then iterate
$$= $$ 'USER'
L.$$= 1
langs= langs + 1 /*bump # of languages/users found.*/
iterate
end /* [↓] extract computer language name.*/
if left($$, 1)=='*' then $$= sep || space( substr($$, 2) )
catHeap= catHeap $$ /*append to the catHeap (CATegory) heap*/
end /*recs*/
call tell right( commas(recs), 9) 'records read from file: ' inFID
return
/*──────────────────────────────────────────────────────────────────────────────────────*/
tell: do '0'arg(2); call lineout outFID," " ; if term then say ; end
call lineout outFID,arg(1) ; if term then say arg(1)
do '0'arg(3); call lineout outFID," " ; if term then say ; end
return /*show BEFORE blank lines (if any), message, show AFTER blank lines.*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
tSort: tied=; r= 0 /*add true rank (tR) ───► the entries. */
do j=# by -1 for #; r= r+1; tR= r; !tR.j= r; jp= j+1; jm= j-1
if tied=='' then pR= r; tied= /*handle when language rank is untied. */
if #.j==#.jp | #.j==#.jm then do; !.j= '[tied]'; tied= !.j; end
if #.j==#.jp then do; tR= pR; !tR.j= pR; end
else pR= r
end /*j*/; return
- output when using the default inputs:
═════════════════════════timestamp: 7 Apr 2021 6:44pm═════════════════════════
1,094 records read from file: RC_USER.LAN
7,641 records read from file: RC_USER.CAT
474 (total) number of languages detected in the category file
835 " " " " " " " language "
6,057 (total) number of entries (users of lanugages) detected
rank: 1 (424 entries) C User
rank: 2 (309 entries) JAVA User
rank: 3 (302 entries) C++ User
rank: 4 (299 entries) Python User
rank: 5 (280 entries) JavaScript User
rank: 6 (183 entries) PHP User
rank: 7 (181 entries) Perl User
rank: 8 (158 entries) SQL User
rank: 9 (151 entries) UNIX Shell User
rank: 10 (132 entries) C Sharp User
rank: 11 [tied] (130 entries) BASIC User
rank: 11 [tied] (130 entries) Pascal User
rank: 13 (111 entries) Haskell User
rank: 14 (102 entries) Ruby User
rank: 15 (96 entries) FORTRAN User
rank: 16 (73 entries) Visual Basic User
rank: 17 [tied] (70 entries) Prolog User
rank: 17 [tied] (70 entries) Scheme User
rank: 19 (69 entries) AWK User
rank: 20 (66 entries) LUA User
rank: 21 (62 entries) Common Lisp User
rank: 22 (51 entries) X86 Assembly User
rank: 23 [tied] (50 entries) Batch File User
rank: 23 [tied] (50 entries) FORTH User
rank: 25 [tied] (47 entries) Assembly User
rank: 25 [tied] (47 entries) MATLAB User
rank: 27 (45 entries) LISP User
rank: 28 [tied] (40 entries) ADA User
rank: 28 [tied] (40 entries) Delphi User
rank: 28 [tied] (40 entries) Erlang User
rank: 28 [tied] (40 entries) TCL User
rank: 32 (39 entries) R User
rank: 33 [tied] (38 entries) COBOL User
rank: 33 [tied] (38 entries) Visual Basic .NET User
rank: 35 [tied] (37 entries) APL User
rank: 35 [tied] (37 entries) J User
rank: 37 [tied] (36 entries) Objective-C User
rank: 37 [tied] (36 entries) SmallTalk User
rank: 39 (35 entries) Go User
rank: 40 (34 entries) Brainf*** User
rank: 41 [tied] (32 entries) Clojure User
rank: 41 [tied] (32 entries) Mathematica User
rank: 43 (30 entries) Raku User
rank: 44 [tied] (29 entries) OCaml User
rank: 44 [tied] (29 entries) REXX User
rank: 46 (27 entries) PostScript User
rank: 47 [tied] (26 entries) Emacs Lisp User
rank: 47 [tied] (26 entries) LaTeX User
rank: 47 [tied] (26 entries) Sed User
rank: 50 (25 entries) AutoHotkey User
rank: 51 [tied] (24 entries) 6502 Assembly User
rank: 51 [tied] (24 entries) MySQL User
rank: 53 [tied] (23 entries) Racket User
rank: 53 [tied] (23 entries) Scala User
rank: 53 [tied] (23 entries) VBScript User
rank: 53 [tied] (23 entries) XSLT User
rank: 57 (21 entries) 8086 Assembly User
rank: 58 (20 entries) F Sharp User
rank: 59 [tied] (19 entries) Rust User
rank: 59 [tied] (19 entries) TI-83 BASIC User
rank: 59 [tied] (19 entries) VBA User
rank: 59 [tied] (19 entries) Z80 Assembly User
rank: 63 [tied] (18 entries) Factor User
rank: 63 [tied] (18 entries) Logo User
rank: 63 [tied] (18 entries) Make User
rank: 63 [tied] (18 entries) PowerShell User
rank: 67 [tied] (17 entries) Apex User
rank: 67 [tied] (17 entries) PL/I User
rank: 67 [tied] (17 entries) Standard ML User
rank: 67 [tied] (17 entries) Swift User
rank: 71 [tied] (16 entries) D User
rank: 71 [tied] (16 entries) Julia User
rank: 71 [tied] (16 entries) Modula-2 User
rank: 74 [tied] (15 entries) ARM Assembly User
rank: 74 [tied] (15 entries) ActionScript User
rank: 74 [tied] (15 entries) AppleScript User
rank: 74 [tied] (15 entries) Icon User
rank: 78 [tied] (14 entries) Maxima User
rank: 78 [tied] (14 entries) SNOBOL4 User
rank: 80 [tied] (13 entries) Befunge User
rank: 80 [tied] (13 entries) CoffeeScript User
rank: 80 [tied] (13 entries) Nim User
rank: 83 [tied] (12 entries) 80386 Assembly User
rank: 83 [tied] (12 entries) Euphoria User
rank: 83 [tied] (12 entries) Unicon User
rank: 86 [tied] (11 entries) Eiffel User
rank: 86 [tied] (11 entries) Elixir User
rank: 86 [tied] (11 entries) Groovy User
rank: 86 [tied] (11 entries) Octave User
rank: 86 [tied] (11 entries) PARI/GP User
rank: 91 [tied] (10 entries) Dc User
rank: 91 [tied] (10 entries) MIPS Assembly User
rank: 91 [tied] (10 entries) PL/SQL User
rank: 91 [tied] (10 entries) SAS User
rank: 91 [tied] (10 entries) UnixPipes User
rank: 96 [tied] (9 entries) AutoIt User
rank: 96 [tied] (9 entries) BBC BASIC User
rank: 96 [tied] (9 entries) JCL User
rank: 96 [tied] (9 entries) M4 User
rank: 96 [tied] (9 entries) Oz User
rank: 96 [tied] (9 entries) Processing User
rank: 96 [tied] (9 entries) REBOL User
rank: 96 [tied] (9 entries) TypeScript User
rank: 104 [tied] (8 entries) 68000 Assembly User
rank: 104 [tied] (8 entries) Gnuplot User
rank: 104 [tied] (8 entries) LabVIEW User
rank: 104 [tied] (8 entries) POV-Ray User
rank: 104 [tied] (8 entries) PicoLisp User
rank: 109 [tied] (7 entries) ALGOL 68 User
rank: 109 [tied] (7 entries) ASP User
rank: 109 [tied] (7 entries) DCL User
rank: 109 [tied] (7 entries) Liberty BASIC User
rank: 109 [tied] (7 entries) MUMPS User
rank: 109 [tied] (7 entries) Maple User
rank: 109 [tied] (7 entries) Mercury User
rank: 109 [tied] (7 entries) PDP-11 Assembly User
rank: 109 [tied] (7 entries) PowerBASIC User
rank: 109 [tied] (7 entries) PureBasic User
rank: 109 [tied] (7 entries) Scratch User
rank: 109 [tied] (7 entries) VHDL User
rank: 121 [tied] (6 entries) Applesoft BASIC User
rank: 121 [tied] (6 entries) Bc User
rank: 121 [tied] (6 entries) ColdFusion User
rank: 121 [tied] (6 entries) Commodore BASIC User
rank: 121 [tied] (6 entries) Dart User
rank: 121 [tied] (6 entries) HyperTalk User
rank: 121 [tied] (6 entries) Io User
rank: 121 [tied] (6 entries) Joy User
rank: 121 [tied] (6 entries) Modula-3 User
rank: 121 [tied] (6 entries) Pike User
rank: 121 [tied] (6 entries) Self User
rank: 121 [tied] (6 entries) Vim Script User
rank: 133 [tied] (5 entries) 8080 Assembly User
rank: 133 [tied] (5 entries) ABAP User
rank: 133 [tied] (5 entries) ALGOL 60 User
rank: 133 [tied] (5 entries) CMake User
rank: 133 [tied] (5 entries) Clipper User
rank: 133 [tied] (5 entries) FreeBASIC User
rank: 133 [tied] (5 entries) GML User
rank: 133 [tied] (5 entries) Haxe User
rank: 133 [tied] (5 entries) Inform 7 User
rank: 133 [tied] (5 entries) Integer BASIC User
rank: 133 [tied] (5 entries) K User
rank: 133 [tied] (5 entries) Kotlin User
rank: 133 [tied] (5 entries) NSIS User
rank: 133 [tied] (5 entries) NewLISP User
rank: 133 [tied] (5 entries) Q User
rank: 133 [tied] (5 entries) REALbasic User
rank: 133 [tied] (5 entries) TI-89 BASIC User
rank: 133 [tied] (5 entries) VB6 User
rank: 133 [tied] (5 entries) Verilog User
rank: 133 [tied] (5 entries) XQuery User
rank: 153 [tied] (4 entries) 360 Assembly User
rank: 153 [tied] (4 entries) BCPL User
rank: 153 [tied] (4 entries) C Shell User
rank: 153 [tied] (4 entries) FALSE User
rank: 153 [tied] (4 entries) GAP User
rank: 153 [tied] (4 entries) GolfScript User
rank: 153 [tied] (4 entries) HQ9+ User
rank: 153 [tied] (4 entries) Locomotive Basic User
rank: 153 [tied] (4 entries) M680x0 User
rank: 153 [tied] (4 entries) OoRexx User
rank: 153 [tied] (4 entries) PIR User
rank: 153 [tied] (4 entries) PlainTeX User
rank: 153 [tied] (4 entries) PowerPC Assembly User
rank: 153 [tied] (4 entries) QBASIC User
rank: 153 [tied] (4 entries) Run BASIC User
rank: 153 [tied] (4 entries) Scilab User
rank: 153 [tied] (4 entries) TorqueScript User
rank: 153 [tied] (4 entries) Vala User
rank: 153 [tied] (4 entries) ZX Spectrum Basic User
rank: 172 [tied] (3 entries) 6800 Assembly User
rank: 172 [tied] (3 entries) ALGOL User
rank: 172 [tied] (3 entries) ASP.Net User
rank: 172 [tied] (3 entries) Dylan User
rank: 172 [tied] (3 entries) Egison User
rank: 172 [tied] (3 entries) Falcon User
rank: 172 [tied] (3 entries) Fantom User
rank: 172 [tied] (3 entries) Free Pascal User
rank: 172 [tied] (3 entries) Frink User
rank: 172 [tied] (3 entries) GW-BASIC User
rank: 172 [tied] (3 entries) HLA User
rank: 172 [tied] (3 entries) IDL User
rank: 172 [tied] (3 entries) LFE User
rank: 172 [tied] (3 entries) MMIX User
rank: 172 [tied] (3 entries) N/t/roff User
rank: 172 [tied] (3 entries) NetRexx User
rank: 172 [tied] (3 entries) Nial User
rank: 172 [tied] (3 entries) Oberon-2 User
rank: 172 [tied] (3 entries) Object Pascal User
rank: 172 [tied] (3 entries) Occam User
rank: 172 [tied] (3 entries) PL/pgSQL User
rank: 172 [tied] (3 entries) Pure User
rank: 172 [tied] (3 entries) RPG User
rank: 172 [tied] (3 entries) SPARC Assembly User
rank: 172 [tied] (3 entries) SPARK User
rank: 172 [tied] (3 entries) Sather User
rank: 172 [tied] (3 entries) SequenceL User
rank: 172 [tied] (3 entries) Shen User
rank: 172 [tied] (3 entries) Snobol User
rank: 172 [tied] (3 entries) Teco User
rank: 172 [tied] (3 entries) Transact-SQL User
rank: 172 [tied] (3 entries) VAX Assembly User
rank: 172 [tied] (3 entries) Wolfram Language User
rank: 172 [tied] (3 entries) X86-64 Assembly User
rank: 172 [tied] (3 entries) Xojo User
rank: 207 [tied] (2 entries) Agena User
rank: 207 [tied] (2 entries) Alice ML User
rank: 207 [tied] (2 entries) AmigaE User
rank: 207 [tied] (2 entries) AspectJ User
rank: 207 [tied] (2 entries) BASIC256 User
rank: 207 [tied] (2 entries) BaCon User
rank: 207 [tied] (2 entries) Basic09 User
rank: 207 [tied] (2 entries) Bracmat User
rank: 207 [tied] (2 entries) Burlesque User
rank: 207 [tied] (2 entries) C++/CLI User
rank: 207 [tied] (2 entries) CHR User
rank: 207 [tied] (2 entries) CLIPS User
rank: 207 [tied] (2 entries) Caché ObjectScript User
rank: 207 [tied] (2 entries) Casio BASIC User
rank: 207 [tied] (2 entries) Chef User
rank: 207 [tied] (2 entries) Coq User
rank: 207 [tied] (2 entries) Crystal User
rank: 207 [tied] (2 entries) DWScript User
rank: 207 [tied] (2 entries) E User
rank: 207 [tied] (2 entries) ELM User
rank: 207 [tied] (2 entries) Elena User
rank: 207 [tied] (2 entries) Fancy User
rank: 207 [tied] (2 entries) Fish User
rank: 207 [tied] (2 entries) Friendly interactive shell User
rank: 207 [tied] (2 entries) GFA Basic User
rank: 207 [tied] (2 entries) Gambas User
rank: 207 [tied] (2 entries) Gema User
rank: 207 [tied] (2 entries) Glee User
rank: 207 [tied] (2 entries) Harbour User
rank: 207 [tied] (2 entries) JavaFX Script User
rank: 207 [tied] (2 entries) Jq User
rank: 207 [tied] (2 entries) Limbo User
rank: 207 [tied] (2 entries) LiveCode User
rank: 207 [tied] (2 entries) Logtalk User
rank: 207 [tied] (2 entries) Lush User
rank: 207 [tied] (2 entries) MIRC Scripting Language User
rank: 207 [tied] (2 entries) MK-61/52 User
rank: 207 [tied] (2 entries) Metafont User
rank: 207 [tied] (2 entries) Neko User
rank: 207 [tied] (2 entries) NetLogo User
rank: 207 [tied] (2 entries) Openscad User
rank: 207 [tied] (2 entries) Pentium Assembly User
rank: 207 [tied] (2 entries) Picat User
rank: 207 [tied] (2 entries) Piet User
rank: 207 [tied] (2 entries) Plain English User
rank: 207 [tied] (2 entries) Processing Python mode User
rank: 207 [tied] (2 entries) Quackery User
rank: 207 [tied] (2 entries) RLaB User
rank: 207 [tied] (2 entries) RPGIV User
rank: 207 [tied] (2 entries) RPL User
rank: 207 [tied] (2 entries) Refal User
rank: 207 [tied] (2 entries) S-lang User
rank: 207 [tied] (2 entries) SETL User
rank: 207 [tied] (2 entries) SNUSP User
rank: 207 [tied] (2 entries) SPSS User
rank: 207 [tied] (2 entries) Sage User
rank: 207 [tied] (2 entries) Seed7 User
rank: 207 [tied] (2 entries) Simula User
rank: 207 [tied] (2 entries) Stata User
rank: 207 [tied] (2 entries) SystemVerilog User
rank: 207 [tied] (2 entries) TXR User
rank: 207 [tied] (2 entries) UserRPL User
rank: 207 [tied] (2 entries) Whitespace User
rank: 207 [tied] (2 entries) XBase User
rank: 207 [tied] (2 entries) XUL User
rank: 207 [tied] (2 entries) Yorick User
rank: 207 [tied] (2 entries) Zig User
rank: 274 [tied] (1 entry) .QL User
rank: 274 [tied] (1 entry) 4D User
rank: 274 [tied] (1 entry) 4DOS Batch User
rank: 274 [tied] (1 entry) 8051 Assembly User
rank: 274 [tied] (1 entry) A+ User
rank: 274 [tied] (1 entry) AARCH64 Assembly User
rank: 274 [tied] (1 entry) ACL2 User
rank: 274 [tied] (1 entry) AMPL User
rank: 274 [tied] (1 entry) ANT User
rank: 274 [tied] (1 entry) Agda User
rank: 274 [tied] (1 entry) AmbientTalk User
rank: 274 [tied] (1 entry) AngelScript User
rank: 274 [tied] (1 entry) Application Master User
rank: 274 [tied] (1 entry) Arc User
rank: 274 [tied] (1 entry) Arturo User
rank: 274 [tied] (1 entry) Astro User
rank: 274 [tied] (1 entry) B User
rank: 274 [tied] (1 entry) B4J User
rank: 274 [tied] (1 entry) Beeswax User
rank: 274 [tied] (1 entry) Biferno User
rank: 274 [tied] (1 entry) Blast User
rank: 274 [tied] (1 entry) BlitzMax User
rank: 274 [tied] (1 entry) Brace User
rank: 274 [tied] (1 entry) Brat User
rank: 274 [tied] (1 entry) Brlcad User
rank: 274 [tied] (1 entry) C0H User
rank: 274 [tied] (1 entry) CB80 User
rank: 274 [tied] (1 entry) COMAL User
rank: 274 [tied] (1 entry) Caml User
rank: 274 [tied] (1 entry) Cat User
rank: 274 [tied] (1 entry) Chapel User
rank: 274 [tied] (1 entry) Cilk++ User
rank: 274 [tied] (1 entry) Clay User
rank: 274 [tied] (1 entry) Comefrom0x10 User
rank: 274 [tied] (1 entry) Curry User
rank: 274 [tied] (1 entry) DIBOL-11 User
rank: 274 [tied] (1 entry) DIV Games Studio User
rank: 274 [tied] (1 entry) DM User
rank: 274 [tied] (1 entry) DUP User
rank: 274 [tied] (1 entry) Dafny User
rank: 274 [tied] (1 entry) Dao User
rank: 274 [tied] (1 entry) Dylan.NET User
rank: 274 [tied] (1 entry) Déjà Vu User
rank: 274 [tied] (1 entry) ECL User
rank: 274 [tied] (1 entry) EDSAC order code User
rank: 274 [tied] (1 entry) EGL User
rank: 274 [tied] (1 entry) EchoLisp User
rank: 274 [tied] (1 entry) Es User
rank: 274 [tied] (1 entry) FBSL User
rank: 274 [tied] (1 entry) FP User
rank: 274 [tied] (1 entry) FUZE BASIC User
rank: 274 [tied] (1 entry) Felix User
rank: 274 [tied] (1 entry) Fermat User
rank: 274 [tied] (1 entry) Fexl User
rank: 274 [tied] (1 entry) Frege User
rank: 274 [tied] (1 entry) Furor User
rank: 274 [tied] (1 entry) Futhark User
rank: 274 [tied] (1 entry) FutureBasic User
rank: 274 [tied] (1 entry) Fôrmulæ User
rank: 274 [tied] (1 entry) GLSL User
rank: 274 [tied] (1 entry) GUISS User
rank: 274 [tied] (1 entry) Genie User
rank: 274 [tied] (1 entry) Global Script User
rank: 274 [tied] (1 entry) Gosu User
rank: 274 [tied] (1 entry) HPPPL User
rank: 274 [tied] (1 entry) Hack User
rank: 274 [tied] (1 entry) Hexiscript User
rank: 274 [tied] (1 entry) HolyC User
rank: 274 [tied] (1 entry) Hope User
rank: 274 [tied] (1 entry) Huginn User
rank: 274 [tied] (1 entry) I User
rank: 274 [tied] (1 entry) Inform 6 User
rank: 274 [tied] (1 entry) Informix 4GL User
rank: 274 [tied] (1 entry) Ioke User
rank: 274 [tied] (1 entry) JOVIAL User
rank: 274 [tied] (1 entry) JoCaml User
rank: 274 [tied] (1 entry) Jsish User
rank: 274 [tied] (1 entry) KL1 User
rank: 274 [tied] (1 entry) Kabap User
rank: 274 [tied] (1 entry) Kamailio Script User
rank: 274 [tied] (1 entry) KeyList Databasing User
rank: 274 [tied] (1 entry) Kite User
rank: 274 [tied] (1 entry) Klong User
rank: 274 [tied] (1 entry) KonsolScript User
rank: 274 [tied] (1 entry) L.in.oleum User
rank: 274 [tied] (1 entry) LC3 Assembly User
rank: 274 [tied] (1 entry) LIL User
rank: 274 [tied] (1 entry) LLVM User
rank: 274 [tied] (1 entry) LOLCODE User
rank: 274 [tied] (1 entry) LSL User
rank: 274 [tied] (1 entry) Lambda Prolog User
rank: 274 [tied] (1 entry) Lang5 User
rank: 274 [tied] (1 entry) Lhogho User
rank: 274 [tied] (1 entry) LibreOffice Basic User
rank: 274 [tied] (1 entry) Lilypond User
rank: 274 [tied] (1 entry) LiveScript User
rank: 274 [tied] (1 entry) Lotus 123 Macro Scripting User
rank: 274 [tied] (1 entry) Lucid User
rank: 274 [tied] (1 entry) M2000 Interpreter User
rank: 274 [tied] (1 entry) MACRO-11 User
rank: 274 [tied] (1 entry) MANOOL User
rank: 274 [tied] (1 entry) MAPPER User
rank: 274 [tied] (1 entry) MBS User
rank: 274 [tied] (1 entry) MDL User
rank: 274 [tied] (1 entry) ME10 macro User
rank: 274 [tied] (1 entry) MINIL User
rank: 274 [tied] (1 entry) ML User
rank: 274 [tied] (1 entry) ML/I User
rank: 274 [tied] (1 entry) MLite User
rank: 274 [tied] (1 entry) MOO User
rank: 274 [tied] (1 entry) MUF User
rank: 274 [tied] (1 entry) Malbolge User
rank: 274 [tied] (1 entry) Mathcad User
rank: 274 [tied] (1 entry) Metapost User
rank: 274 [tied] (1 entry) Microsoft Small Basic User
rank: 274 [tied] (1 entry) MiniScript User
rank: 274 [tied] (1 entry) MiniZinc User
rank: 274 [tied] (1 entry) NASL User
rank: 274 [tied] (1 entry) Nanoquery User
rank: 274 [tied] (1 entry) Neat User
rank: 274 [tied] (1 entry) Nemerle User
rank: 274 [tied] (1 entry) Never User
rank: 274 [tied] (1 entry) Niue User
rank: 274 [tied] (1 entry) OOCalc User
rank: 274 [tied] (1 entry) Objeck User
rank: 274 [tied] (1 entry) Ol User
rank: 274 [tied] (1 entry) OpenC++ User
rank: 274 [tied] (1 entry) OpenEdge/Progress User
rank: 274 [tied] (1 entry) Order User
rank: 274 [tied] (1 entry) PHL User
rank: 274 [tied] (1 entry) PL/M User
rank: 274 [tied] (1 entry) PLUS User
rank: 274 [tied] (1 entry) PLZ/SYS User
rank: 274 [tied] (1 entry) PPL User
rank: 274 [tied] (1 entry) Peloton User
rank: 274 [tied] (1 entry) PeopleCode User
rank: 274 [tied] (1 entry) Perl5i User
rank: 274 [tied] (1 entry) Phix User
rank: 274 [tied] (1 entry) Pop11 User
rank: 274 [tied] (1 entry) Powerbuilder User
rank: 274 [tied] (1 entry) Pure Data User
rank: 274 [tied] (1 entry) Pyret User
rank: 274 [tied] (1 entry) Quite BASIC User
rank: 274 [tied] (1 entry) Ratfor User
rank: 274 [tied] (1 entry) Reason User
rank: 274 [tied] (1 entry) Relation User
rank: 274 [tied] (1 entry) Retro User
rank: 274 [tied] (1 entry) Risc-V User
rank: 274 [tied] (1 entry) Robotic User
rank: 274 [tied] (1 entry) SASL User
rank: 274 [tied] (1 entry) SIMPOL User
rank: 274 [tied] (1 entry) SQL PL User
rank: 274 [tied] (1 entry) Salmon User
rank: 274 [tied] (1 entry) SenseTalk User
rank: 274 [tied] (1 entry) Set lang User
rank: 274 [tied] (1 entry) Shale User
rank: 274 [tied] (1 entry) Sidef User
rank: 274 [tied] (1 entry) Sinclair ZX81 BASIC User
rank: 274 [tied] (1 entry) SkookumScript User
rank: 274 [tied] (1 entry) Slate User
rank: 274 [tied] (1 entry) Smart BASIC User
rank: 274 [tied] (1 entry) Sparkling User
rank: 274 [tied] (1 entry) Spin User
rank: 274 [tied] (1 entry) Suneido User
rank: 274 [tied] (1 entry) SuperTalk User
rank: 274 [tied] (1 entry) Superbase BASIC User
rank: 274 [tied] (1 entry) TAL User
rank: 274 [tied] (1 entry) TMG User
rank: 274 [tied] (1 entry) TPP User
rank: 274 [tied] (1 entry) TUSCRIPT User
rank: 274 [tied] (1 entry) Tailspin User
rank: 274 [tied] (1 entry) TechBASIC User
rank: 274 [tied] (1 entry) Thistle User
rank: 274 [tied] (1 entry) Thyrd User
rank: 274 [tied] (1 entry) Tiny BASIC User
rank: 274 [tied] (1 entry) Toka User
rank: 274 [tied] (1 entry) Trith User
rank: 274 [tied] (1 entry) True BASIC User
rank: 274 [tied] (1 entry) Uniface User
rank: 274 [tied] (1 entry) Unlambda User
rank: 274 [tied] (1 entry) Ursa User
rank: 274 [tied] (1 entry) Ursala User
rank: 274 [tied] (1 entry) V User
rank: 274 [tied] (1 entry) Vedit macro language User
rank: 274 [tied] (1 entry) Viua VM assembly User
rank: 274 [tied] (1 entry) WDTE User
rank: 274 [tied] (1 entry) WML User
rank: 274 [tied] (1 entry) Wart User
rank: 274 [tied] (1 entry) WebAssembly User
rank: 274 [tied] (1 entry) Whenever User
rank: 274 [tied] (1 entry) Wisp User
rank: 274 [tied] (1 entry) XLISP User
rank: 274 [tied] (1 entry) XPL0 User
rank: 274 [tied] (1 entry) XProc User
rank: 274 [tied] (1 entry) XTalk User
rank: 274 [tied] (1 entry) Yacas User
rank: 274 [tied] (1 entry) ZED User
rank: 274 [tied] (1 entry) ZPL User
rank: 274 [tied] (1 entry) Zkl User
rank: 274 [tied] (1 entry) Zoea User
rank: 274 [tied] (1 entry) µC++ User
☼ end─of─list. ☼
- output when sorted (ranked) by the computer programming language:
═════════════════════════timestamp: 7 Apr 2021 6:44pm═════════════════════════
1,094 records read from file: RC_USER.LAN
7,641 records read from file: RC_USER.CAT
474 (total) number of languages detected in the category file
835 " " " " " " " language "
6,057 (total) number of entries (users of lanugages) detected
rank: 274 [tied] (1 entry) .QL User
rank: 153 [tied] (4 entries) 360 Assembly User
rank: 274 [tied] (1 entry) 4D User
rank: 274 [tied] (1 entry) 4DOS Batch User
rank: 51 [tied] (24 entries) 6502 Assembly User
rank: 172 [tied] (3 entries) 6800 Assembly User
rank: 104 [tied] (8 entries) 68000 Assembly User
rank: 83 [tied] (12 entries) 80386 Assembly User
rank: 274 [tied] (1 entry) 8051 Assembly User
rank: 133 [tied] (5 entries) 8080 Assembly User
rank: 57 (21 entries) 8086 Assembly User
rank: 274 [tied] (1 entry) A+ User
rank: 274 [tied] (1 entry) AARCH64 Assembly User
rank: 133 [tied] (5 entries) ABAP User
rank: 274 [tied] (1 entry) ACL2 User
rank: 74 [tied] (15 entries) ActionScript User
rank: 28 [tied] (40 entries) ADA User
rank: 274 [tied] (1 entry) Agda User
rank: 207 [tied] (2 entries) Agena User
rank: 133 [tied] (5 entries) ALGOL 60 User
rank: 109 [tied] (7 entries) ALGOL 68 User
rank: 172 [tied] (3 entries) ALGOL User
rank: 207 [tied] (2 entries) Alice ML User
rank: 274 [tied] (1 entry) AmbientTalk User
rank: 207 [tied] (2 entries) AmigaE User
rank: 274 [tied] (1 entry) AMPL User
rank: 274 [tied] (1 entry) AngelScript User
rank: 274 [tied] (1 entry) ANT User
rank: 67 [tied] (17 entries) Apex User
rank: 35 [tied] (37 entries) APL User
rank: 74 [tied] (15 entries) AppleScript User
rank: 121 [tied] (6 entries) Applesoft BASIC User
rank: 274 [tied] (1 entry) Application Master User
rank: 274 [tied] (1 entry) Arc User
rank: 74 [tied] (15 entries) ARM Assembly User
rank: 274 [tied] (1 entry) Arturo User
rank: 109 [tied] (7 entries) ASP User
rank: 172 [tied] (3 entries) ASP.Net User
rank: 207 [tied] (2 entries) AspectJ User
rank: 25 [tied] (47 entries) Assembly User
rank: 274 [tied] (1 entry) Astro User
rank: 50 (25 entries) AutoHotkey User
rank: 96 [tied] (9 entries) AutoIt User
rank: 19 (69 entries) AWK User
rank: 274 [tied] (1 entry) B User
rank: 274 [tied] (1 entry) B4J User
rank: 207 [tied] (2 entries) BaCon User
rank: 11 [tied] (130 entries) BASIC User
rank: 207 [tied] (2 entries) Basic09 User
rank: 207 [tied] (2 entries) BASIC256 User
rank: 23 [tied] (50 entries) Batch File User
rank: 96 [tied] (9 entries) BBC BASIC User
rank: 121 [tied] (6 entries) Bc User
rank: 153 [tied] (4 entries) BCPL User
rank: 274 [tied] (1 entry) Beeswax User
rank: 80 [tied] (13 entries) Befunge User
rank: 274 [tied] (1 entry) Biferno User
rank: 274 [tied] (1 entry) Blast User
rank: 274 [tied] (1 entry) BlitzMax User
rank: 274 [tied] (1 entry) Brace User
rank: 207 [tied] (2 entries) Bracmat User
rank: 40 (34 entries) Brainf*** User
rank: 274 [tied] (1 entry) Brat User
rank: 274 [tied] (1 entry) Brlcad User
rank: 207 [tied] (2 entries) Burlesque User
rank: 10 (132 entries) C Sharp User
rank: 153 [tied] (4 entries) C Shell User
rank: 1 (424 entries) C User
rank: 3 (302 entries) C++ User
rank: 207 [tied] (2 entries) C++/CLI User
rank: 274 [tied] (1 entry) C0H User
rank: 207 [tied] (2 entries) Caché ObjectScript User
rank: 274 [tied] (1 entry) Caml User
rank: 207 [tied] (2 entries) Casio BASIC User
rank: 274 [tied] (1 entry) Cat User
rank: 274 [tied] (1 entry) CB80 User
rank: 274 [tied] (1 entry) Chapel User
rank: 207 [tied] (2 entries) Chef User
rank: 207 [tied] (2 entries) CHR User
rank: 274 [tied] (1 entry) Cilk++ User
rank: 274 [tied] (1 entry) Clay User
rank: 133 [tied] (5 entries) Clipper User
rank: 207 [tied] (2 entries) CLIPS User
rank: 41 [tied] (32 entries) Clojure User
rank: 133 [tied] (5 entries) CMake User
rank: 33 [tied] (38 entries) COBOL User
rank: 80 [tied] (13 entries) CoffeeScript User
rank: 121 [tied] (6 entries) ColdFusion User
rank: 274 [tied] (1 entry) COMAL User
rank: 274 [tied] (1 entry) Comefrom0x10 User
rank: 121 [tied] (6 entries) Commodore BASIC User
rank: 21 (62 entries) Common Lisp User
rank: 207 [tied] (2 entries) Coq User
rank: 207 [tied] (2 entries) Crystal User
rank: 274 [tied] (1 entry) Curry User
rank: 71 [tied] (16 entries) D User
rank: 274 [tied] (1 entry) Dafny User
rank: 274 [tied] (1 entry) Dao User
rank: 121 [tied] (6 entries) Dart User
rank: 91 [tied] (10 entries) Dc User
rank: 109 [tied] (7 entries) DCL User
rank: 28 [tied] (40 entries) Delphi User
rank: 274 [tied] (1 entry) DIBOL-11 User
rank: 274 [tied] (1 entry) DIV Games Studio User
rank: 274 [tied] (1 entry) DM User
rank: 274 [tied] (1 entry) DUP User
rank: 207 [tied] (2 entries) DWScript User
rank: 172 [tied] (3 entries) Dylan User
rank: 274 [tied] (1 entry) Dylan.NET User
rank: 274 [tied] (1 entry) Déjà Vu User
rank: 207 [tied] (2 entries) E User
rank: 274 [tied] (1 entry) EchoLisp User
rank: 274 [tied] (1 entry) ECL User
rank: 274 [tied] (1 entry) EDSAC order code User
rank: 172 [tied] (3 entries) Egison User
rank: 274 [tied] (1 entry) EGL User
rank: 86 [tied] (11 entries) Eiffel User
rank: 207 [tied] (2 entries) Elena User
rank: 86 [tied] (11 entries) Elixir User
rank: 207 [tied] (2 entries) ELM User
rank: 47 [tied] (26 entries) Emacs Lisp User
rank: 28 [tied] (40 entries) Erlang User
rank: 274 [tied] (1 entry) Es User
rank: 83 [tied] (12 entries) Euphoria User
rank: 58 (20 entries) F Sharp User
rank: 63 [tied] (18 entries) Factor User
rank: 172 [tied] (3 entries) Falcon User
rank: 153 [tied] (4 entries) FALSE User
rank: 207 [tied] (2 entries) Fancy User
rank: 172 [tied] (3 entries) Fantom User
rank: 274 [tied] (1 entry) FBSL User
rank: 274 [tied] (1 entry) Felix User
rank: 274 [tied] (1 entry) Fermat User
rank: 274 [tied] (1 entry) Fexl User
rank: 207 [tied] (2 entries) Fish User
rank: 23 [tied] (50 entries) FORTH User
rank: 15 (96 entries) FORTRAN User
rank: 274 [tied] (1 entry) FP User
rank: 172 [tied] (3 entries) Free Pascal User
rank: 133 [tied] (5 entries) FreeBASIC User
rank: 274 [tied] (1 entry) Frege User
rank: 207 [tied] (2 entries) Friendly interactive shell User
rank: 172 [tied] (3 entries) Frink User
rank: 274 [tied] (1 entry) Furor User
rank: 274 [tied] (1 entry) Futhark User
rank: 274 [tied] (1 entry) FutureBasic User
rank: 274 [tied] (1 entry) FUZE BASIC User
rank: 274 [tied] (1 entry) Fôrmulæ User
rank: 207 [tied] (2 entries) Gambas User
rank: 153 [tied] (4 entries) GAP User
rank: 207 [tied] (2 entries) Gema User
rank: 274 [tied] (1 entry) Genie User
rank: 207 [tied] (2 entries) GFA Basic User
rank: 207 [tied] (2 entries) Glee User
rank: 274 [tied] (1 entry) Global Script User
rank: 274 [tied] (1 entry) GLSL User
rank: 133 [tied] (5 entries) GML User
rank: 104 [tied] (8 entries) Gnuplot User
rank: 39 (35 entries) Go User
rank: 153 [tied] (4 entries) GolfScript User
rank: 274 [tied] (1 entry) Gosu User
rank: 86 [tied] (11 entries) Groovy User
rank: 274 [tied] (1 entry) GUISS User
rank: 172 [tied] (3 entries) GW-BASIC User
rank: 274 [tied] (1 entry) Hack User
rank: 207 [tied] (2 entries) Harbour User
rank: 13 (111 entries) Haskell User
rank: 133 [tied] (5 entries) Haxe User
rank: 274 [tied] (1 entry) Hexiscript User
rank: 172 [tied] (3 entries) HLA User
rank: 274 [tied] (1 entry) HolyC User
rank: 274 [tied] (1 entry) Hope User
rank: 274 [tied] (1 entry) HPPPL User
rank: 153 [tied] (4 entries) HQ9+ User
rank: 274 [tied] (1 entry) Huginn User
rank: 121 [tied] (6 entries) HyperTalk User
rank: 274 [tied] (1 entry) I User
rank: 74 [tied] (15 entries) Icon User
rank: 172 [tied] (3 entries) IDL User
rank: 274 [tied] (1 entry) Inform 6 User
rank: 133 [tied] (5 entries) Inform 7 User
rank: 274 [tied] (1 entry) Informix 4GL User
rank: 133 [tied] (5 entries) Integer BASIC User
rank: 121 [tied] (6 entries) Io User
rank: 274 [tied] (1 entry) Ioke User
rank: 35 [tied] (37 entries) J User
rank: 2 (309 entries) JAVA User
rank: 207 [tied] (2 entries) JavaFX Script User
rank: 5 (280 entries) JavaScript User
rank: 96 [tied] (9 entries) JCL User
rank: 274 [tied] (1 entry) JoCaml User
rank: 274 [tied] (1 entry) JOVIAL User
rank: 121 [tied] (6 entries) Joy User
rank: 207 [tied] (2 entries) Jq User
rank: 274 [tied] (1 entry) Jsish User
rank: 71 [tied] (16 entries) Julia User
rank: 133 [tied] (5 entries) K User
rank: 274 [tied] (1 entry) Kabap User
rank: 274 [tied] (1 entry) Kamailio Script User
rank: 274 [tied] (1 entry) KeyList Databasing User
rank: 274 [tied] (1 entry) Kite User
rank: 274 [tied] (1 entry) KL1 User
rank: 274 [tied] (1 entry) Klong User
rank: 274 [tied] (1 entry) KonsolScript User
rank: 133 [tied] (5 entries) Kotlin User
rank: 274 [tied] (1 entry) L.in.oleum User
rank: 104 [tied] (8 entries) LabVIEW User
rank: 274 [tied] (1 entry) Lambda Prolog User
rank: 274 [tied] (1 entry) Lang5 User
rank: 47 [tied] (26 entries) LaTeX User
rank: 274 [tied] (1 entry) LC3 Assembly User
rank: 172 [tied] (3 entries) LFE User
rank: 274 [tied] (1 entry) Lhogho User
rank: 109 [tied] (7 entries) Liberty BASIC User
rank: 274 [tied] (1 entry) LibreOffice Basic User
rank: 274 [tied] (1 entry) LIL User
rank: 274 [tied] (1 entry) Lilypond User
rank: 207 [tied] (2 entries) Limbo User
rank: 27 (45 entries) LISP User
rank: 207 [tied] (2 entries) LiveCode User
rank: 274 [tied] (1 entry) LiveScript User
rank: 274 [tied] (1 entry) LLVM User
rank: 153 [tied] (4 entries) Locomotive Basic User
rank: 63 [tied] (18 entries) Logo User
rank: 207 [tied] (2 entries) Logtalk User
rank: 274 [tied] (1 entry) LOLCODE User
rank: 274 [tied] (1 entry) Lotus 123 Macro Scripting User
rank: 274 [tied] (1 entry) LSL User
rank: 20 (66 entries) LUA User
rank: 274 [tied] (1 entry) Lucid User
rank: 207 [tied] (2 entries) Lush User
rank: 274 [tied] (1 entry) M2000 Interpreter User
rank: 96 [tied] (9 entries) M4 User
rank: 153 [tied] (4 entries) M680x0 User
rank: 274 [tied] (1 entry) MACRO-11 User
rank: 63 [tied] (18 entries) Make User
rank: 274 [tied] (1 entry) Malbolge User
rank: 274 [tied] (1 entry) MANOOL User
rank: 109 [tied] (7 entries) Maple User
rank: 274 [tied] (1 entry) MAPPER User
rank: 274 [tied] (1 entry) Mathcad User
rank: 41 [tied] (32 entries) Mathematica User
rank: 25 [tied] (47 entries) MATLAB User
rank: 78 [tied] (14 entries) Maxima User
rank: 274 [tied] (1 entry) MBS User
rank: 274 [tied] (1 entry) MDL User
rank: 274 [tied] (1 entry) ME10 macro User
rank: 109 [tied] (7 entries) Mercury User
rank: 207 [tied] (2 entries) Metafont User
rank: 274 [tied] (1 entry) Metapost User
rank: 274 [tied] (1 entry) Microsoft Small Basic User
rank: 274 [tied] (1 entry) MINIL User
rank: 274 [tied] (1 entry) MiniScript User
rank: 274 [tied] (1 entry) MiniZinc User
rank: 91 [tied] (10 entries) MIPS Assembly User
rank: 207 [tied] (2 entries) MIRC Scripting Language User
rank: 207 [tied] (2 entries) MK-61/52 User
rank: 274 [tied] (1 entry) ML User
rank: 274 [tied] (1 entry) ML/I User
rank: 274 [tied] (1 entry) MLite User
rank: 172 [tied] (3 entries) MMIX User
rank: 71 [tied] (16 entries) Modula-2 User
rank: 121 [tied] (6 entries) Modula-3 User
rank: 274 [tied] (1 entry) MOO User
rank: 274 [tied] (1 entry) MUF User
rank: 109 [tied] (7 entries) MUMPS User
rank: 51 [tied] (24 entries) MySQL User
rank: 172 [tied] (3 entries) N/t/roff User
rank: 274 [tied] (1 entry) Nanoquery User
rank: 274 [tied] (1 entry) NASL User
rank: 274 [tied] (1 entry) Neat User
rank: 207 [tied] (2 entries) Neko User
rank: 274 [tied] (1 entry) Nemerle User
rank: 207 [tied] (2 entries) NetLogo User
rank: 172 [tied] (3 entries) NetRexx User
rank: 274 [tied] (1 entry) Never User
rank: 133 [tied] (5 entries) NewLISP User
rank: 172 [tied] (3 entries) Nial User
rank: 80 [tied] (13 entries) Nim User
rank: 274 [tied] (1 entry) Niue User
rank: 133 [tied] (5 entries) NSIS User
rank: 172 [tied] (3 entries) Oberon-2 User
rank: 274 [tied] (1 entry) Objeck User
rank: 172 [tied] (3 entries) Object Pascal User
rank: 37 [tied] (36 entries) Objective-C User
rank: 44 [tied] (29 entries) OCaml User
rank: 172 [tied] (3 entries) Occam User
rank: 86 [tied] (11 entries) Octave User
rank: 274 [tied] (1 entry) Ol User
rank: 274 [tied] (1 entry) OOCalc User
rank: 153 [tied] (4 entries) OoRexx User
rank: 274 [tied] (1 entry) OpenC++ User
rank: 274 [tied] (1 entry) OpenEdge/Progress User
rank: 207 [tied] (2 entries) Openscad User
rank: 274 [tied] (1 entry) Order User
rank: 96 [tied] (9 entries) Oz User
rank: 86 [tied] (11 entries) PARI/GP User
rank: 11 [tied] (130 entries) Pascal User
rank: 109 [tied] (7 entries) PDP-11 Assembly User
rank: 274 [tied] (1 entry) Peloton User
rank: 207 [tied] (2 entries) Pentium Assembly User
rank: 274 [tied] (1 entry) PeopleCode User
rank: 7 (181 entries) Perl User
rank: 274 [tied] (1 entry) Perl5i User
rank: 274 [tied] (1 entry) Phix User
rank: 274 [tied] (1 entry) PHL User
rank: 6 (183 entries) PHP User
rank: 207 [tied] (2 entries) Picat User
rank: 104 [tied] (8 entries) PicoLisp User
rank: 207 [tied] (2 entries) Piet User
rank: 121 [tied] (6 entries) Pike User
rank: 153 [tied] (4 entries) PIR User
rank: 67 [tied] (17 entries) PL/I User
rank: 274 [tied] (1 entry) PL/M User
rank: 172 [tied] (3 entries) PL/pgSQL User
rank: 91 [tied] (10 entries) PL/SQL User
rank: 207 [tied] (2 entries) Plain English User
rank: 153 [tied] (4 entries) PlainTeX User
rank: 274 [tied] (1 entry) PLUS User
rank: 274 [tied] (1 entry) PLZ/SYS User
rank: 274 [tied] (1 entry) Pop11 User
rank: 46 (27 entries) PostScript User
rank: 104 [tied] (8 entries) POV-Ray User
rank: 109 [tied] (7 entries) PowerBASIC User
rank: 274 [tied] (1 entry) Powerbuilder User
rank: 153 [tied] (4 entries) PowerPC Assembly User
rank: 63 [tied] (18 entries) PowerShell User
rank: 274 [tied] (1 entry) PPL User
rank: 207 [tied] (2 entries) Processing Python mode User
rank: 96 [tied] (9 entries) Processing User
rank: 17 [tied] (70 entries) Prolog User
rank: 274 [tied] (1 entry) Pure Data User
rank: 172 [tied] (3 entries) Pure User
rank: 109 [tied] (7 entries) PureBasic User
rank: 274 [tied] (1 entry) Pyret User
rank: 4 (299 entries) Python User
rank: 133 [tied] (5 entries) Q User
rank: 153 [tied] (4 entries) QBASIC User
rank: 207 [tied] (2 entries) Quackery User
rank: 274 [tied] (1 entry) Quite BASIC User
rank: 32 (39 entries) R User
rank: 53 [tied] (23 entries) Racket User
rank: 43 (30 entries) Raku User
rank: 274 [tied] (1 entry) Ratfor User
rank: 133 [tied] (5 entries) REALbasic User
rank: 274 [tied] (1 entry) Reason User
rank: 96 [tied] (9 entries) REBOL User
rank: 207 [tied] (2 entries) Refal User
rank: 274 [tied] (1 entry) Relation User
rank: 274 [tied] (1 entry) Retro User
rank: 44 [tied] (29 entries) REXX User
rank: 274 [tied] (1 entry) Risc-V User
rank: 207 [tied] (2 entries) RLaB User
rank: 274 [tied] (1 entry) Robotic User
rank: 172 [tied] (3 entries) RPG User
rank: 207 [tied] (2 entries) RPGIV User
rank: 207 [tied] (2 entries) RPL User
rank: 14 (102 entries) Ruby User
rank: 153 [tied] (4 entries) Run BASIC User
rank: 59 [tied] (19 entries) Rust User
rank: 207 [tied] (2 entries) S-lang User
rank: 207 [tied] (2 entries) Sage User
rank: 274 [tied] (1 entry) Salmon User
rank: 91 [tied] (10 entries) SAS User
rank: 274 [tied] (1 entry) SASL User
rank: 172 [tied] (3 entries) Sather User
rank: 53 [tied] (23 entries) Scala User
rank: 17 [tied] (70 entries) Scheme User
rank: 153 [tied] (4 entries) Scilab User
rank: 109 [tied] (7 entries) Scratch User
rank: 47 [tied] (26 entries) Sed User
rank: 207 [tied] (2 entries) Seed7 User
rank: 121 [tied] (6 entries) Self User
rank: 274 [tied] (1 entry) SenseTalk User
rank: 172 [tied] (3 entries) SequenceL User
rank: 274 [tied] (1 entry) Set lang User
rank: 207 [tied] (2 entries) SETL User
rank: 274 [tied] (1 entry) Shale User
rank: 172 [tied] (3 entries) Shen User
rank: 274 [tied] (1 entry) Sidef User
rank: 274 [tied] (1 entry) SIMPOL User
rank: 207 [tied] (2 entries) Simula User
rank: 274 [tied] (1 entry) Sinclair ZX81 BASIC User
rank: 274 [tied] (1 entry) SkookumScript User
rank: 274 [tied] (1 entry) Slate User
rank: 37 [tied] (36 entries) SmallTalk User
rank: 274 [tied] (1 entry) Smart BASIC User
rank: 172 [tied] (3 entries) Snobol User
rank: 78 [tied] (14 entries) SNOBOL4 User
rank: 207 [tied] (2 entries) SNUSP User
rank: 172 [tied] (3 entries) SPARC Assembly User
rank: 172 [tied] (3 entries) SPARK User
rank: 274 [tied] (1 entry) Sparkling User
rank: 274 [tied] (1 entry) Spin User
rank: 207 [tied] (2 entries) SPSS User
rank: 274 [tied] (1 entry) SQL PL User
rank: 8 (158 entries) SQL User
rank: 67 [tied] (17 entries) Standard ML User
rank: 207 [tied] (2 entries) Stata User
rank: 274 [tied] (1 entry) Suneido User
rank: 274 [tied] (1 entry) Superbase BASIC User
rank: 274 [tied] (1 entry) SuperTalk User
rank: 67 [tied] (17 entries) Swift User
rank: 207 [tied] (2 entries) SystemVerilog User
rank: 274 [tied] (1 entry) Tailspin User
rank: 274 [tied] (1 entry) TAL User
rank: 28 [tied] (40 entries) TCL User
rank: 274 [tied] (1 entry) TechBASIC User
rank: 172 [tied] (3 entries) Teco User
rank: 274 [tied] (1 entry) Thistle User
rank: 274 [tied] (1 entry) Thyrd User
rank: 59 [tied] (19 entries) TI-83 BASIC User
rank: 133 [tied] (5 entries) TI-89 BASIC User
rank: 274 [tied] (1 entry) Tiny BASIC User
rank: 274 [tied] (1 entry) TMG User
rank: 274 [tied] (1 entry) Toka User
rank: 153 [tied] (4 entries) TorqueScript User
rank: 274 [tied] (1 entry) TPP User
rank: 172 [tied] (3 entries) Transact-SQL User
rank: 274 [tied] (1 entry) Trith User
rank: 274 [tied] (1 entry) True BASIC User
rank: 274 [tied] (1 entry) TUSCRIPT User
rank: 207 [tied] (2 entries) TXR User
rank: 96 [tied] (9 entries) TypeScript User
rank: 83 [tied] (12 entries) Unicon User
rank: 274 [tied] (1 entry) Uniface User
rank: 9 (151 entries) UNIX Shell User
rank: 91 [tied] (10 entries) UnixPipes User
rank: 274 [tied] (1 entry) Unlambda User
rank: 274 [tied] (1 entry) Ursa User
rank: 274 [tied] (1 entry) Ursala User
rank: 207 [tied] (2 entries) UserRPL User
rank: 274 [tied] (1 entry) V User
rank: 153 [tied] (4 entries) Vala User
rank: 172 [tied] (3 entries) VAX Assembly User
rank: 133 [tied] (5 entries) VB6 User
rank: 59 [tied] (19 entries) VBA User
rank: 53 [tied] (23 entries) VBScript User
rank: 274 [tied] (1 entry) Vedit macro language User
rank: 133 [tied] (5 entries) Verilog User
rank: 109 [tied] (7 entries) VHDL User
rank: 121 [tied] (6 entries) Vim Script User
rank: 33 [tied] (38 entries) Visual Basic .NET User
rank: 16 (73 entries) Visual Basic User
rank: 274 [tied] (1 entry) Viua VM assembly User
rank: 274 [tied] (1 entry) Wart User
rank: 274 [tied] (1 entry) WDTE User
rank: 274 [tied] (1 entry) WebAssembly User
rank: 274 [tied] (1 entry) Whenever User
rank: 207 [tied] (2 entries) Whitespace User
rank: 274 [tied] (1 entry) Wisp User
rank: 274 [tied] (1 entry) WML User
rank: 172 [tied] (3 entries) Wolfram Language User
rank: 22 (51 entries) X86 Assembly User
rank: 172 [tied] (3 entries) X86-64 Assembly User
rank: 207 [tied] (2 entries) XBase User
rank: 274 [tied] (1 entry) XLISP User
rank: 172 [tied] (3 entries) Xojo User
rank: 274 [tied] (1 entry) XPL0 User
rank: 274 [tied] (1 entry) XProc User
rank: 133 [tied] (5 entries) XQuery User
rank: 53 [tied] (23 entries) XSLT User
rank: 274 [tied] (1 entry) XTalk User
rank: 207 [tied] (2 entries) XUL User
rank: 274 [tied] (1 entry) Yacas User
rank: 207 [tied] (2 entries) Yorick User
rank: 59 [tied] (19 entries) Z80 Assembly User
rank: 274 [tied] (1 entry) ZED User
rank: 207 [tied] (2 entries) Zig User
rank: 274 [tied] (1 entry) Zkl User
rank: 274 [tied] (1 entry) Zoea User
rank: 274 [tied] (1 entry) ZPL User
rank: 153 [tied] (4 entries) ZX Spectrum Basic User
rank: 274 [tied] (1 entry) µC++ User
☼ end─of─list. ☼
copy "http://rosettacode.org/mw/index.php?title=Special:Categories&limit=5000" categ.html, replace
import delimited categ.html, delim("@") enc("utf-8") clear
keep if ustrpos(v1,"/wiki/Category:") & ustrpos(v1,"_User")
gen i = ustrpos(v1,"href=")
gen j = ustrpos(v1,char(34),i+1)
gen k = ustrpos(v1,char(34),j+1)
gen s = usubstr(v1,j+7,k-j-7)
replace i = ustrpos(v1,"title=")
replace j = ustrpos(v1,">",i+1)
replace k = ustrpos(v1," User",j+1)
gen lang = usubstr(v1,j+1,k-j)
keep s lang
gen users=.
forval i=1/`c(N)' {
local s
preserve
copy `"https://rosettacode.org/mw/index.php?title=`=s[`i']'&redirect=no"' `i'.html, replace
import delimited `i'.html, delim("@") enc("utf-8") clear
count if ustrpos(v1,"/wiki/User")
local m `r(N)'
restore
replace users=`m' in `i'
erase `i'.html
}
drop s
gsort -users lang
compress
leftalign
list in f/50
save rc_users, replace
Output (2019-02-18)
+----------------------------+
| lang users |
|----------------------------|
1. | C 391 |
2. | Java 276 |
3. | C++ 275 |
4. | Python 262 |
5. | JavaScript 238 |
|----------------------------|
6. | Perl 171 |
7. | PHP 167 |
8. | SQL 138 |
9. | UNIX Shell 131 |
10. | BASIC 120 |
|----------------------------|
11. | C sharp 118 |
12. | Pascal 116 |
13. | Haskell 102 |
14. | Ruby 93 |
15. | Fortran 79 |
|----------------------------|
16. | Visual Basic 68 |
17. | Prolog 65 |
18. | Scheme 61 |
19. | Common Lisp 58 |
20. | AWK 57 |
|----------------------------|
21. | Lua 57 |
22. | HTML 52 |
23. | Assembly 45 |
24. | Batch File 44 |
25. | X86 Assembly 44 |
|----------------------------|
26. | Bash 43 |
27. | Erlang 40 |
28. | Lisp 39 |
29. | MATLAB 39 |
30. | Forth 38 |
|----------------------------|
31. | Ada 36 |
32. | Visual Basic .NET 36 |
33. | Delphi 35 |
34. | J 35 |
35. | APL 34 |
|----------------------------|
36. | Brainf*** 34 |
37. | Tcl 34 |
38. | Objective-C 33 |
39. | Smalltalk 33 |
40. | COBOL 32 |
|----------------------------|
41. | R 32 |
42. | Go 30 |
43. | Mathematica 30 |
44. | Perl 6 29 |
45. | Clojure 27 |
|----------------------------|
46. | AutoHotkey 25 |
47. | REXX 25 |
48. | LaTeX 23 |
49. | OCaml 23 |
50. | Sed 23 |
+----------------------------+
This assumes the 'curl' command line utility is available on the system.
Uses the 'os' and 'timer' sub-modules of Wren-std.
import "os" for Process
import "timer" for Now
import "./xsequence" for XDocument
import "./fmt" for Fmt
var urlBase = "https://rosettacode.org/w/api.php?action=query&format=xml&generator=categorymembers&gcmtitle=Category:Language\%20users&gcmlimit=500&prop=categoryinfo"
var over100s = []
var url = urlBase
while (true) {
var content = Process.read("curl -s -L \"%(url)\"")
var doc = XDocument.parse(content)
for (p in doc.root.element("query").element("pages").elements("page")) {
if (p.attributeValue("ns") == "14") {
var ci = p.element("categoryinfo")
var numUsers = ci.attributeValue("pages", Num, 0)
if (numUsers >= 100) {
var language = p.attributeValue("title")[9..-6]
over100s.add([language, numUsers])
}
}
}
var cel = doc.root.element("continue")
if (!cel) break
var gcmcont = "&gcmcontinue=%(cel.attribute("gcmcontinue").value)"
var cont = "&continue=%(cel.attribute("continue").value)"
url = urlBase + gcmcont + cont
}
over100s.sort { |a, b| a[1] > b[1] }
var date = "%(Now.day) %(Now.monthName), %(Now.year)"
System.print("Languages with at least 100 users as at %(date):\n")
var rank = 0
var lastScore = 0
var lastRank = 0
for (i in 0...over100s.count) {
var pair = over100s[i]
var eq = " "
rank = i + 1
if (lastScore == pair[1]) {
eq = "="
rank = lastRank
} else {
lastScore = pair[1]
lastRank = rank
}
Fmt.print("$-2d$s $-11s $d", rank, eq, pair[0], pair[1])
}
- Output:
Languages with at least 100 users as at 23 February, 2025: 1 C 470 2 Python 354 3 Java 346 4 C++ 334 5 JavaScript 312 6 PHP 201 7 Perl 197 8 SQL 179 9 UNIX Shell 161 10 BASIC 140 11 Pascal 139 12 C sharp 137 13 Haskell 118 14 Ruby 112 15 Fortran 100
Uses libraries cURL and YAJL (yet another json library)
const MIN_USERS=60;
var [const] CURL=Import("zklCurl"), YAJL=Import("zklYAJL")[0];
fcn rsGet{
continueValue,r,curl := "",List, CURL();
do{ // eg 5 times
page:=("http://rosettacode.org/mw/api.php?action=query"
"&generator=categorymembers&prop=categoryinfo"
"&gcmtitle=Category%%3ALanguage%%20users"
"&rawcontinue=&format=json&gcmlimit=350"
"%s").fmt(continueValue);
page=curl.get(page);
page=page[0].del(0,page[1]); // get rid of HTML header
json:=YAJL().write(page).close();
json["query"]["pages"].pump(r.append,'wrap(x){ x=x[1];
//("2708",Dictionary(title:Category:C User,...,categoryinfo:D(pages:373,size:373,...)))
// or title:SmartBASIC
if((pgs:=x.find("categoryinfo")) and (pgs=pgs.find("pages")) and
pgs>=MIN_USERS)
return(pgs,x["title"].replace("Category:","").replace(" User",""));
return(Void.Skip);
});
if(continueValue=json.find("query-continue",""))
continueValue=String("&gcmcontinue=",
continueValue["categorymembers"]["gcmcontinue"]);
}while(continueValue);
r
}
allLangs:=rsGet();
allLangs=allLangs.sort(fcn(a,b){ a[0]>b[0] });
println("========== ",Time.Date.prettyDay()," ==========");
foreach n,pgnm in ([1..].zip(allLangs))
{ println("#%3d with %4s users: %s".fmt(n,pgnm.xplode())) }- Output:
========== Wednesday, the 20th of December 2017 ========== # 1 with 373 users: C # 2 with 261 users: C++ # 3 with 257 users: Java # 4 with 243 users: Python # 5 with 228 users: JavaScript # 6 with 163 users: PHP # 7 with 162 users: Perl # 8 with 131 users: SQL # 9 with 120 users: UNIX Shell # 10 with 118 users: BASIC # 11 with 113 users: C sharp # 12 with 109 users: Pascal # 13 with 98 users: Haskell # 14 with 91 users: Ruby # 15 with 71 users: Fortran # 16 with 65 users: Visual Basic # 17 with 60 users: Scheme