Rosetta Code/Rank languages by popularity: Difference between revisions

no edit summary
m (added additional bullets and whitespace to make the notes easier to read, added a ;Task section header.)
No edit summary
Line 2,564:
10. 617 - Ruby
...</pre>
 
=={{header|M2000 Interpreter}}==
<lang M2000 Interpreter>
Module RankLanguages {
Const Part1$="<a href="+""""+ "/wiki/Category", Part2$="member"
Const langHttp$="http://rosettacode.org/wiki/Category:Programming_Languages"
Const categoriesHttp$="http://www.rosettacode.org/mw/index.php?title=Special:Categories&limit=5000"
Def long m, i,j, tasks, counter, limit, T, t1
Def string LastLang$, job$
Document final$, languages$, categories$
httpGet$=lambda$ (url$, timeout=1000)->{
Declare htmldoc "Microsoft.XMLHTTP"
With htmldoc , "readyState" as ready
Report "Download:"+url$
Method htmldoc "open","get", url$, True
Method htmldoc "send"
Profiler
While Ready<>4 {
Wait 20
Print Over format$("Wait: {0:3} sec", timecount/1000)
If timecount>timeout then Exit
}
If ready=4 Then With htmldoc, "responseText" as ready$ : =ready$
Declare htmldoc Nothing
print
}
languages$=httpGet$(langHttp$, 30000)
If Doc.Len(languages$)=0 then Error "File download failed (languages)"
Inventory Lang
m=Paragraph(languages$, 0)
If Forward(languages$,m) then {
While m {
job$=Paragraph$(languages$,(m))
If Instr(job$, part1$) Else Continue
i = Instr(job$, "</a>")
If i Else Continue ' same as If i=0 Then Continue
j = i
i=Rinstr(job$, ">", -i)
If i Else Continue
LastLang$=MID$(job$, i+1, j-i-1)
if Instr(job$, "Category:"+lastlang$) then Append lang, lastlang$:=0 : Print Over format$("Languages: {0}", len(lang))
}
}
Print
Document categories$=httpGet$(categoriesHttp$, 30000)
If Doc.Len(categories$)=0 then Error "File download failed (categories)"
limit=Doc.Par(categories$)
If limit<Len(Lang) then Error "Invalid data"
Refresh
set slow
m=Paragraph(categories$, 0)
counter=0
If Forward(categories$,m) then {
While m {
job$=Paragraph$(categories$,(m))
counter++
Print Over format$("{0:2:-6}%", counter/limit*100)
i=Instr(job$, part2$)
If i Else Continue
i=Rinstr(job$, "(", -i)
If i Else Continue
tasks=Val(Mid$(job$, i+1))
If tasks Else Continue
i=Rinstr(job$, "<", -i)
If i Else Continue
j = i
i=Rinstr(job$, ">", -i)
If i Else Continue
LastLang$=MID$(job$, i+1, j-i-1)
If Exist(Lang, LastLang$) Then {
Return Lang, LastLang$:=Lang(LastLang$)+tasks
}
}
}
Print
\\ this type of iventory can get same keys
\\ also has stable sort
Report "Make Inentory list by Task"
Inventory queue ByTask
t1=Len(Lang)
T=Each(Lang)
While T {
Append ByTask, Eval(T):=Eval$(T!)
Print Over format$("Complete: {0} of {1}", T^+1, t1 )
}
Print
Report "Sort by task (stable sort, sort keys as numbers)"
Sort descending ByTask as number
Report "Make List"
T=Each(ByTask)
final$="Sample output on "+Date$(Today)+{:
}
While T {
final$=format$("rank:{0::-4}. {1:-5} entries - {2}", T^+1, Eval$(T!), Eval$(T))+{
}
}
Report "Copy to Clipboard"
clipboard final$
\\ present to console with 3/4 fill lines then stop for space bar or mouse click to continue
Report final$
}
RankLanguages
</lang>
 
{{out}}
<pre style="height:30ex;overflow:scroll">
Sample output on 24/7/2018:
 
rank: 1. 986 entries - Python
rank: 2. 980 entries - Racket
rank: 3. 968 entries - Perl 6
rank: 4. 947 entries - Go
rank: 5. 918 entries - Tcl
rank: 6. 909 entries - C
rank: 7. 891 entries - J
rank: 8. 885 entries - Zkl
rank: 9. 881 entries - Java
rank: 10. 868 entries - D
rank: 11. 850 entries - Ruby
rank: 12. 834 entries - Haskell
rank: 13. 833 entries - REXX
rank: 14. 804 entries - Perl
rank: 15. 788 entries - Julia
rank: 16. 776 entries - Scala
rank: 17. 774 entries - PicoLisp
rank: 18. 768 entries - Sidef
rank: 19. 728 entries - Mathematica
rank: 20. 693 entries - C++
rank: 21. 693 entries - Phix
rank: 22. 676 entries - C sharp
rank: 23. 654 entries - Common Lisp
rank: 24. 649 entries - Ada
rank: 25. 621 entries - AutoHotkey
rank: 26. 596 entries - JavaScript
rank: 27. 595 entries - Ring
rank: 28. 590 entries - Unicon
rank: 29. 585 entries - Clojure
rank: 30. 577 entries - Lua
rank: 31. 560 entries - BBC BASIC
rank: 32. 553 entries - Fortran
rank: 33. 551 entries - PureBasic
rank: 34. 545 entries - ALGOL 68
rank: 35. 543 entries - OCaml
rank: 36. 535 entries - PARI/GP
rank: 37. 532 entries - Icon
rank: 38. 529 entries - Nim
rank: 39. 513 entries - Elixir
rank: 40. 489 entries - Erlang
rank: 41. 488 entries - F Sharp
rank: 42. 475 entries - FreeBASIC
rank: 43. 471 entries - PowerShell
rank: 44. 457 entries - Jq
rank: 45. 448 entries - Factor
rank: 46. 435 entries - Forth
rank: 47. 433 entries - Pascal
rank: 48. 421 entries - AWK
rank: 49. 416 entries - R
rank: 50. 411 entries - Rust
rank: 51. 407 entries - Seed7
rank: 52. 403 entries - PL/I
rank: 53. 392 entries - Groovy
rank: 54. 390 entries - PHP
rank: 55. 358 entries - MATLAB
rank: 56. 354 entries - Scheme
rank: 57. 336 entries - Maple
rank: 58. 334 entries - Liberty BASIC
rank: 59. 314 entries - Run BASIC
rank: 60. 308 entries - Oforth
rank: 61. 306 entries - Octave
rank: 62. 305 entries - XPL0
rank: 63. 304 entries - EchoLisp
rank: 64. 296 entries - Swift
rank: 65. 289 entries - UNIX Shell
rank: 66. 288 entries - Bracmat
rank: 67. 287 entries - NetRexx
rank: 68. 280 entries - Oz
rank: 69. 279 entries - Prolog
rank: 70. 272 entries - E
rank: 71. 270 entries - VBScript
rank: 72. 268 entries - Objeck
rank: 73. 265 entries - COBOL
rank: 74. 264 entries - BASIC
..........
rank: 675. 1 entries - X86 64 Assembly
rank: 676. 1 entries - Xanadu
rank: 677. 1 entries - XPath 2.0
rank: 678. 1 entries - Ya
rank: 679. 0 entries - AngelScript
rank: 680. 0 entries - Binary Lambda Calculus
rank: 681. 0 entries - EhBASIC
rank: 682. 0 entries - Epigram
rank: 683. 0 entries - FLORA-2
rank: 684. 0 entries - Florid
rank: 685. 0 entries - LC2200 Assembly
rank: 686. 0 entries - Leon
rank: 687. 0 entries - LLP
rank: 688. 0 entries - Loglan82
rank: 689. 0 entries - Lolli
rank: 690. 0 entries - Lygon
rank: 691. 0 entries - ObjectIcon
rank: 692. 0 entries - Plan
rank: 693. 0 entries - Reduce
rank: 694. 0 entries - Rubylog
rank: 695. 0 entries - SimpleLang
rank: 696. 0 entries - Spin
rank: 697. 0 entries - Star
rank: 698. 0 entries - X10
rank: 699. 0 entries - XS
</pre >
 
=={{header|Maple}}==
Anonymous user