Τρίτη, 18 Ιουνίου 2019

Revision 28 Version 9.8

A syntax color fix
line:
                  maze$(INT((currentx% oldx%) / 2), ((currenty% oldy%) / 2)) = " "
See at the end, at /2)) the two parenthesis now have the proper different color.

This is the Maze module in info.gsb (included in m2000 installation file)



Module Maze {
      width% = 40
      height% = 20
      \\ we can use DIM maze$(0 to width%,0 to  height%)="#"
      \\ so we can delete the two For loops
      DIM maze$(0 to width%,0 to height%)
      FOR x% = 0 TO width%
          FOR y% = 0 TO height%
              maze$(x%, y%) = "#"
          NEXT y%
      NEXT x%

      currentx% = INT(RND * (width% - 1))
      currenty% = INT(RND * (height% - 1))

      IF currentx% MOD 2 = 0 THEN currentx%++
      IF currenty% MOD 2 = 0 THEN currenty%++
      maze$(currentx%, currenty%) = " "

      done% = 0
      WHILE done% = 0 {
          FOR i% = 0 TO 99
              oldx% = currentx%
              oldy% = currenty%
              SELECT CASE INT(RND * 4)
                  CASE 0
                      IF currentx% + 2 < width% THEN currentx%+=2
                  CASE 1
                      IF currenty% + 2 < height% THEN currenty%+=2
                  CASE 2
                      IF currentx% - 2 > 0 THEN currentx%-=2
                  CASE 3
                      IF currenty% - 2 > 0 THEN currenty%-=2
              END SELECT
              IF maze$(currentx%, currenty%) = "#"  Then {
                  maze$(currentx%, currenty%) = " "
                  maze$(INT((currentx% + oldx%) / 2), ((currenty% + oldy%) / 2)) = " "
             }
          NEXT i%
          done% = 1
          FOR x% = 1 TO width% - 1 STEP 2
              FOR y% = 1 TO height% - 1 STEP 2
                  IF maze$(x%, y%) = "#" THEN done% = 0
              NEXT y%
          NEXT x%
      }


      FOR y% = 0 TO height%
          FOR x% = 0 TO width%
              PRINT maze$(x%, y%);
          NEXT x%
          PRINT
      NEXT y%
}
Maze

Πέμπτη, 13 Ιουνίου 2019

Αναθεώρηση 26 Έκδοση 9.8


1. Μια μικρή διόρθωση για τον χρωματιστή κώδικα όταν έχουμε μετά από TOTE και ΑΛΛΙΩΣ ετικέτα τύπου αριθμός (είναι σαν να υπάρχει η ΠΡΟΣ πριν τον αριθμό). Εδώ στο παράδειγμα το 100 και το 120 έχουν ενδιάμεσα το else και χρωματίζεται μπλε (αναγνωριστικό της Μ2000).
Module TestMe {
 090 if random(1,2)=1 then 100 else 120
 100 Print "100"
 110 End
 120 Print "120"
 130 End
}
For i=1 to 10 : TestMe : Next

2. Προχωράει ο Ast Interpreter.
Για την ώρα δεν εκελείται ο μεταφρασμένος κώδικας. Αυτό που κάνει το παρακάτω πρόγραμμα είναι να εμφανίζει με ? τη λίστα από το lexical analyzer, που έχει ήδη φτιαχτεί με "γνώση" όπως ξέρει τα σταθερά (πχ το 100 ή το "ασδασδ") δηλαδή ποιοι είναι αριθμοί, ποια είναι αλφαριθμητικά, και επιπλέον έχει εξαφανίσει διαστήμα (white space), και σημειώσεις. Επιπλέον έχει υπολογίσει ποια είναι tuple (πχ το (1,2,3,4) είναι tuple), έχει υπολογίσει για κάθε ανοικτή παρένεθεση που είναι το επόμενο σύμβολο μετά το κλείσιμο παρένθεσης. Ομοίως έχει υπολογίσει για τις αγκύλες { }.

Αυτό που με ενδιαφέρει τώρα είναι να κάνω όλες τις δομές (πχ το Αν Τέλος Αν, το οποίο δουλεύει με Αν { } δηλαδή με μπλοκ και χωρίς μπλοκ) να έχουν προυπολογίσει τα σημεία "εξόδου" ή όπως φαίνονται στο κείμενο του AST ως skip number

Στο τέλος το AST έχει βρει πόσοι αριθμοί και αλφαριθμητικά έχουμε χρησιμοποιήσει (υπολογίζει και τα αλφαριθμητικά με αγκύλες και πολλές γραμμές), και αναγνωριστικά (καταγράφει το καθένα μια φορά).


Ο τρόπος που δουλεύει ο lexical analyzer μοιάζει με εκείνο του χρωματιστή κώδικα. Η διαφορά είναι ότι ο χρωματισμός γίνεται πιο "σοβαρός" από το χρωματιστή κώδικα, γιατί θέλουμε περισσότερα αποτελέσματα και όχι απλά να φαίνεται χρωματισμένος κώδικας. Για το λόγο αυτό υπάρχει το αντικείμενο κλάσης Lexar το οποίο φορτώνει κώδικα και καλεί γεγονότα. Εντός της Lexar υπάρχει το αντικείμενο Document το οποίο σπάει το κείμενο σε παραγράφους και στέλνει κάθε γραμμή για χρωμάτισμα με γεγονότα στην Lexar. Ενδέχεται μια γραμμή να χρωματίσει και επόμενες, έτσι η Document αν βλέπει ήδη μια γραμμή χρωματισμένη την αφήνει. Υπάρχει μια κλάση CodeBlock η οποία δημιουργεί την κλάση Lexar και συνδέει τα γεγονότα της με αυτήν. Έτσι το τελικό διαμορφώνεται από τις τρεις κλάσεις, με γεγονότα από το Document στο Lexar και μετά στο CodeBlock. Προς το παρόν το CodeBlock έχει μια μέθοδο που κάνει εμφάνιση γραμμών στην κονσόλα της Μ2000, με σταμάτημα σε κάθε 3/4 του ύψους της κονσόλας. Αυτό με βοηθάει να εξετάζω το αποτέλεσμα. Έτσι πριν προχωρήσω στην εκτέλεση του αποτελέσματος θέλω να είμαι σίγουρος ότι κάνει όλα αυτά που θέλω να κάνει (και είναι πάρα πολλά, προφανώς θα έχω να διορθώνω αρκετά, αν δεν πετύχω μια ευνοική κωδικοποίηση στο AST). Αν και το λέμε tree είναι ένα πίνακας στοιχείων όπου όμως υπάρχει πεδίο για σύνδεση με άλλο σημείο. και αυτό ήδη το εκμεταλλεύομαι για να σημαδεύω σε μια αρχή παρένθεσης ή μπλοκ το τέλος του. Εσωτερικά το Lexar έχει και έναν σωρό τιμών (τον χρησιμοποιώ σαν στοίβα) για να μπορώ να κλείνω σωστά τα μέρη κώδικα.
Υπάρχουν μερικά Stop στο κώδικα της VB6 για να με βοηθούν να βλέπω πότε συμβαίνουν πράγματα που δεν θέλω!

Εδώ είναι το αρχείο με το κώδικα ως τώρα (θα το ανανεώνω τακτικά) AST Interprerter

MODULE Pythagoras_tree {
 CLS 5, 0  ' MAGENTA, NO SPLIT SCREEN
 PEN 14   ' YELLOW
 \\ code from zkl/Free Basic
 LET w = scale.x, h = w * 11 div 16
 LET w2 = w div 2, diff = w div 12
 LET TreeOrder = 6
 pythagoras_tree(w2 - diff, h -10, w2 + diff, h -10, 0)
 
 SUB pythagoras_tree(x1, y1, x2, y2, depth)
 
     IF depth > TreeOrder THEN EXIT SUB
 
     LOCAL dx = x2 - x1, dy = y1 - y2
     LOCAL x3 = x2 - dy, y3 = y2 - dx
     LOCAL x4 = x1 - dy, y4 = y1 - dx
     LOCAL x5 = x4 + (dx - dy) / 2
     LOCAL y5 = y4 - (dx + dy) / 2
     MOVE x1, y1
     DRAW TO x2, y2
     DRAW TO x3, y3
     DRAW TO x4, y4
     DRAW TO x1, y1
     pythagoras_tree(x4, y4, x5, y5, depth +1)
     pythagoras_tree(x5, y5, x3, y3, depth +1)
 
 END SUB
}
Pythagoras_tree

Στην κλάση CodeBlock υπάρχει αυτό:
Private Type ast
    codepos As Long
    codetype As Integer
    codehelp As Integer
    codevar As Long
End Type

Δηλαδή κάθε εγγραφή έχει 4+2+2+4 bytes, και υπάρχει βοηθητικός χώρος για τα αναγνωριστικά (γράφονται μια φορά), για αριθμούς και αλφαριθμητικά. Προς το παρόν το 5 αν υπάρχει δυο φορές θα γραφτεί δυο φορές (δεν το έχω βάλει να κάνει αναζήτηση σε πίνακα, δηλαδή ξοδεύω μνήμη, η οποία όμως έχει γρηγορότερη προσπέλαση). Ομοίως για τα αλφαριθμητικά.

Στην εμφάνιση αλλάζει κάπως:
Το πρώτο νούμερο είναι ο αριθμός του στοιχείου. Το δεύτερο είναι η θέση του στο κώδικα. Ακολουθεί το σύμβολο (μας λέει και τι είναι)

Νεότερη έκδοση!

 0 1 11 Identifier:MODULE
 1 8 161 Identifier:PYTHAGORAS_TREE
 2 25 140 START BRACKET 210
 3 24 0
 4 28 11 Identifier:CLS
 5 32 100  5 Double
 6 33 8 ,
 7 35 100  0 Double
 8 63 0
 9 67 11 Identifier:PEN
 10 71 100  14 Double
 11 83 0
 12 117 11 Identifier:LET
 13 121 161 Identifier:W
 14 123 14 =
 15 125 11 Identifier:SCALE.X
 16 132 8 ,
 17 134 161 Identifier:H
 18 136 14 =
 19 138 161 Identifier:W
 20 140 14 *
 21 142 100  11 Double
 22 145 11 Identifier:DIV
 23 149 100  16 Double
 24 150 0
 25 154 11 Identifier:LET
 26 158 161 Identifier:W2
 27 161 14 =
 28 163 161 Identifier:W
 29 165 11 Identifier:DIV
 30 169 100  2 Double
 31 170 8 ,
 32 172 161 Identifier:DIFF
 33 177 14 =
 34 179 161 Identifier:W
 35 181 11 Identifier:DIV
 36 185 100  12 Double
 37 186 0
 38 190 11 Identifier:LET
 39 194 161 Identifier:TREEORDER
 40 204 14 =
 41 206 100  6 Double
 42 206 0
 43 210 165 Identifier:PYTHAGORAS_TREE( skip to 62
 44 226 161 Identifier:W2
 45 229 14 -
 46 231 161 Identifier:DIFF
 47 235 8 ,
 48 237 161 Identifier:H
 49 239 14 -
 50 240 100  10 Double
 51 242 8 ,
 52 244 161 Identifier:W2
 53 247 14 +
 54 249 161 Identifier:DIFF
 55 253 8 ,
 56 255 161 Identifier:H
 57 257 14 -
 58 258 100  10 Double
 59 260 8 ,
 60 262 100  0 Double
 61 263 19 )
 62 263 0
 63 270 111 SUB
 64 274 165 Identifier:pythagoras_tree( skip to 75
 65 290 161 Identifier:X1
 66 292 8 ,
 67 294 161 Identifier:Y1
 68 296 8 ,
 69 298 161 Identifier:X2
 70 300 8 ,
 71 302 161 Identifier:Y2
 72 304 8 ,
 73 306 161 Identifier:DEPTH
 74 311 19 )
 75 311 0
 76 322 11 Identifier:IF
 77 325 161 Identifier:DEPTH
 78 331 14 >
 79 333 161 Identifier:TREEORDER
 80 343 11 Identifier:THEN
 81 348 11 Identifier:EXIT
 82 353 11 Identifier:SUB
 83 355 0
 84 366 11 Identifier:LOCAL
 85 372 161 Identifier:DX
 86 375 14 =
 87 377 161 Identifier:X2
 88 380 14 -
 89 382 161 Identifier:X1
 90 384 14 ,
 91 386 161 Identifier:DY
 92 389 14 =
 93 391 161 Identifier:Y1
 94 394 14 -
 95 396 161 Identifier:Y2
 96 397 0
 97 405 11 Identifier:LOCAL
 98 411 161 Identifier:X3
 99 414 14 =
 100 416 161 Identifier:X2
 101 419 14 -
 102 421 161 Identifier:DY
 103 423 14 ,
 104 425 161 Identifier:Y3
 105 428 14 =
 106 430 161 Identifier:Y2
 107 433 14 -
 108 435 161 Identifier:DX
 109 436 0
 110 444 11 Identifier:LOCAL
 111 450 161 Identifier:X4
 112 453 14 =
 113 455 161 Identifier:X1
 114 458 14 -
 115 460 161 Identifier:DY
 116 462 14 ,
 117 464 161 Identifier:Y4
 118 467 14 =
 119 469 161 Identifier:Y1
 120 472 14 -
 121 474 161 Identifier:DX
 122 475 0
 123 483 11 Identifier:LOCAL
 124 489 161 Identifier:X5
 125 492 14 =
 126 494 161 Identifier:X4
 127 497 14 +
 128 499 17 ( skip to 133
 129 500 161 Identifier:DX
 130 503 14 -
 131 505 161 Identifier:DY
 132 507 19 )
 133 509 14 /
 134 511 100  2 Double
 135 511 0
 136 519 11 Identifier:LOCAL
 137 525 161 Identifier:Y5
 138 528 14 =
 139 530 161 Identifier:Y4
 140 533 14 -
 141 535 17 ( skip to 146
 142 536 161 Identifier:DX
 143 539 14 +
 144 541 161 Identifier:DY
 145 543 19 )
 146 545 14 /
 147 547 100  2 Double
 148 547 0
 149 555 11 Identifier:MOVE
 150 560 161 Identifier:X1
 151 562 8 ,
 152 564 161 Identifier:Y1
 153 565 0
 154 573 11 Identifier:DRAW
 155 578 11 Identifier:TO
 156 581 161 Identifier:X2
 157 583 8 ,
 158 585 161 Identifier:Y2
 159 586 0
 160 594 11 Identifier:DRAW
 161 599 11 Identifier:TO
 162 602 161 Identifier:X3
 163 604 8 ,
 164 606 161 Identifier:Y3
 165 607 0
 166 615 11 Identifier:DRAW
 167 620 11 Identifier:TO
 168 623 161 Identifier:X4
 169 625 8 ,
 170 627 161 Identifier:Y4
 171 628 0
 172 636 11 Identifier:DRAW
 173 641 11 Identifier:TO
 174 644 161 Identifier:X1
 175 646 8 ,
 176 648 161 Identifier:Y1
 177 649 0
 178 657 165 Identifier:PYTHAGORAS_TREE( skip to 191
 179 673 161 Identifier:X4
 180 675 8 ,
 181 677 161 Identifier:Y4
 182 679 8 ,
 183 681 161 Identifier:X5
 184 683 8 ,
 185 685 161 Identifier:Y5
 186 687 8 ,
 187 689 161 Identifier:DEPTH
 188 695 14 +
 189 696 100  1 Double
 190 697 19 )
 191 697 0
 192 705 165 Identifier:PYTHAGORAS_TREE( skip to 205
 193 721 161 Identifier:X5
 194 723 8 ,
 195 725 161 Identifier:Y5
 196 727 8 ,
 197 729 161 Identifier:X3
 198 731 8 ,
 199 733 161 Identifier:Y3
 200 735 8 ,
 201 737 161 Identifier:DEPTH
 202 743 14 +
 203 744 100  1 Double
 204 745 19 )
 205 745 0
 206 752 11 Identifier:END
 207 756 11 Identifier:SUB
 208 758 0
 209 761 141 END BRACKET 3
 210 761 0
 211 764 161 Identifier:PYTHAGORAS_TREE
 212 778 0
Number Literals: 15
String Literals: 1
Identifiers: 36

Τρίτη, 4 Ιουνίου 2019

Αντικείμενα στην Μ2000, απλό παράδειγμα.

Αυτή η ανάρτηση γράφτηκε για να το διαβάσουν όσοι θέλουν να μάθουν περί αντικειμένων, ειδικά τώρα που η ΑΕΠΠ στο σχολείο θα πρέπει να έχει αντικείμενα. Το θέμα είναι ότι κάθε γλώσσα έχει το δικό της τρόπο ορισμού και χρήσης αντικειμένων. Δεν υπάρχει ένας γενικός ορισμός του τι είναι αντικείμενο, πώς ορίζεται και πως χρησιμοποιείται.

Σε γενικές γραμμές ένα αντικείμενο είναι μια ομάδα ιδιοτήτων και μεθόδων (συναρτήσεις ή και υποπροράμματα), και μπορεί να περαστεί σε μια κλήση υποπρογράμματος ή συνάρτησης και να επιστραφεί από μια συνάρτηση. Επιπλέον μπορούμε να έχουμε δομές με στοιχεία αντικείμενα στα οποία θα κάνουμε μαζικές ενέργειες, δηλαδή θα καλούμε μια μέθοδο (συνάρτηση ή υποπρόγραμμα) για κάθε στοιχείο της δομής.

Η πιο απλή δομή για αντικείμενα είναι ο πίνακας. Στο παράδειγμα εδώ κάνουμε χρήση πίνακα. Ειδικά η Μ2000 μπορεί να ορίζει ξανά έναν πίνακα χωρίς να διαγράφει στοιχεία, εκτός και αν τα λιγοστέψουμε, οπότε διαγράφει τα επιπλέον. Κάθε στοιχείο πίνακα μπορεί να πάρει οποιαδήποτε τιμή, έναν αριθμό, ένα αλφαριθμητικό, ένα αντικείμενο. Αν το όνομα του πίνακα έχει το $ τότε ένα Α$(3)=1000 θα βγει λάθος, όχι γιατί δεν μπορεί να γραφτεί ο αριθμός αλλά δεν το επιτρέπει αυτός ο συντακτικός τρόπος. Στο παράδειγμα που ακολουθεί φτιάχνουμε πίνακα 10 στοιχείων ως α$(). Αυτό σημαίνει ότι η Τύπωσε α$() θα πρέπει να εμφανίσει αλφαριθμητικό (αν γίνεται). Μια α$(1)="Πέτρος" θα βάλει αλφαριθμητικό στο α$(1). Οι πίνακες έχουν βάση το 0, αλλά μπορούμε να το αλλάξουμε. Πχ Πίνακας Βάση1, α$(10) θα έχουμε από 1 μέχρι 10 στοιχεία. Ενώ Πίνακας α$(2 έως 11) θα έχουμε βάση το 2 και πάλι δέκα στοιχεία (μπορούμε να δώσουμε και αρνητικούς αριθμούς). Μέγιστο διαστάσεων είναι οι δέκα διαστάσεις, ενώ ελάχιστο είναι το 0, δηλαδή καμία διάσταση.

πίνακας α$(10)
μ=α$() ' το μ είναι δείκτης στο α$()
επιστροφή μ, 3:=100
τύπωσε α$(3) ' δίνει 100 ως αλφαριθμητικό
\\ πιο γρήγορος τρόπος
α$(4):=1000
τύπωσε α$(4) ' δίνει 1000 ως αλφαριθμητικό
Ένωσε α$() στο α() ' κάνει το α() αναφορά του α$()
Τύπωσε α(3)+α(4)=1100


Περί διαστάσεων πινάκων και πως τις διαβάζουμε:
Πίνακας α(), β(0)
Τύπωσε μήκος(α())=0, διάσταση(α())=0
Τύπωσε μήκος(β())=0, διάσταση(β())=0
Πίνακας α(5), β(-2 έως 2)
Τύπωσε μήκος(α())=5, διάσταση(α())=1
Τύπωσε μήκος(β())=5, διάσταση(β())=1
Πίνακας α(2, 5), β(-1 έως 0, -2 έως 2)
Τύπωσε μήκος(α())=10, διάσταση(α())=2
Τύπωσε μήκος(β())=10, διάσταση(β())=2

Τύπωσε διάσταση(β(),1)=2, διάσταση(β(),2)=5
Τύπωσε διάσταση(β(),1,0)=-1, διάσταση(β(),1,1)=0
Τύπωσε διάσταση(β(),2,0)=-2, διάσταση(β(),2,1)=2



Περί Ομάδων

Παρακάτω έχουμε κώδικα που μπορούμε να το γράψουμε στο τμήμα Α και να το καλέσουμε ως Α
Στο τμήμα Α έχουμε το τμήμα ΔοκιμήΑ το οποίο θα φτιάξει ένα πίνακα με δυο αντικείμενα και μετά με ένα ακόμα, όπου τα δυο πρώτα θα είναι ζώα, το ένα σκύλος και το άλλο γάτα. Το τρίτο αντικείμενο το βάζουμε για να δείξουμε ότι η χρήση μιας μεταβλητής μόνο για ανάγνωση μπορεί να χρησιμοποιηθεί για να δώσει τύπο στα αντικείμενα. Τα αντικείμενα τύπου ομάδα δεν έχουν χωριστό τύπο, εκτός και αν ορίσουμε μια μεταβλητή για να δείχνει ότι έχουν χωριστό τύπο!

Σε ένα πίνακα μπορούμε να βάλουμε οτιδήποτε εκτός από Τμήμα και Συνάρτηση (μπορούμε να βάλουμε λάμδα συνάρτηση, που είναι πρώτος πολίτης, δηλαδή σαν τιμή μεταβλητής). Με την χρήση ομάδων μπορούμε τα τμήματα και τις συναρτήσεις να τα έχουμε σε ομάδες και να βάλουμε τις ομάδες στο πίνακα. Στην ουσία μια ομάδα είναι ένα πρόγραμμα με μεταβλητές και τμήματα και συναρτήσεις, αλλά και άλλες ομάδες εσωτερικά. Οι ιδιότητες είναι ομάδες που ή επιστρέφουν τιμή ή δέχονται τιμή ή κάνουν και τα δύο, και μπορούμε να δώσουμε κώδικα τια το πώς επιστρέφουν τιμή ή και πώς παίρνουν τιμή.

Εξ ορισμού οι ομάδες είναι μοναδικές. Δηλαδή κάθε αντικείμενο υπάρχει σε ένα σημείο και μόνο, είτε αυτό είναι σε ένα όνομα είτε είναι σε μια θέση, όπως σε έναν πίνακα. Στο παράδειγμα με την επιστροφή από το ΔοκιμήΑ έχουμε στο σωρό τιμών μια ομάδα και την γράφουμε στο Κ, πάλι ως μοναδικό αντικείμενο.

Όταν φτιάχνουμε το αντικείμενο Σκύλος τότε στην Σκύλος() φτιάχνεται μια ομάδα και στον κατασκευαστή της (Τμήμα Σκύλος) κάνουμε συγχώνευση την ομάδα Ζώο που επιστρέφει η Ζώο(). Η συγχώνευση δημιουργεί ότι νέο έρχεται από το Ζώο, και αντιγράφει ότι ήδη υπάρχει στη Σκύλος εκτός και αν αυτό έχει δηλωθεί ως τελικό.

Αν δώσουμε σαν τελευταία γραμμή το Μ=Κ τότε το Μ θα γίνει ένα αντίγραφο του Κ. Σε κάποιες γλώσσες δεν έχουμε αντιγραφή αντικειμένου, αλλά αντιγραφή δεικτών. Η Μ2000 έχει και δείκτες σε αντικείμενα ομάδα, αλλά αν δεν είναι απαραίτητοι δεν τους χρησιμοποιούμε.

Μια ομάδα μπορεί να περάσει με τιμή σε μια συνάρτηση ή ένα τμήμα, ή με αναφορά. Εδώ έχουμε μια περίπτωση με ανφορά της Κ εκεί που καλούμε το τμήμα Προσωρινό.με το &Κ. Το &Α θα είναι ένα νέο αντικείμενο με μέλη που είναι αναφορές στα μέλη του Κ.

Στη Μ2000 μπορούμε να περάσουμε επίσης δείκτη σε ομάδα και αναφορά σε δείκτη σε ομάδα. Στην πρώτη περίπτωση όλες οι αλλαγές εκτός της αλλαγής του δείκτη θα περάσουν στην ομάδα που δίνουμε στην κλήση, ενώ στη δεύτερη περίπτωση ακόμα και η αλλαγή δείκτη θα περάστεί στην ομάδα που περάσαμε στη κλήση. Περί δεικτών δεν θα γίνει άλλη αναφορά εδώ. Η χρήση δεικτών βοηθάει όταν έχουμε δομές με ομάδες (αντικείμενα) που κρατάνε με δείκτες άλλα αντικείμενα.

Η ζωή ενός αντικειμένου παίζει ανάλογα αν είναι επώνυμο ή ανώνυμο. Επώνυμο για παράδειγμα είναι το Κ. Όταν το τμήμα (εδώ το Α) που το δημιούργησε τερματίσει θα διαγραφεί και το αντικείμενο. Ανώνυμο είναι το αντικείμενο που έχει θέση αντί για όνομα. Τα αντικείμενα στο πίνακα α() είναι ανώνυμα. Σε ένα επώνυμο αντικείμενο μπορούμε να συγχωνεύσουμε ένα άλλο αντικείμενο. Σε ένα πίνακα δεν έχουμε συγχώνευση αλλά μπαίνει το νέο αντικείμενο στη θέση και το παλιό διαγράφεται. Αυτό αν το αντικείμενο δεν είναι δείκτης. Αν είναι δείκτης τότε διαγράφεται αν είναι ο τελευταίος δείκτης. Στην ουσία όταν δεν χρησιμοποιούμε δείκτες, κάθε αντικείμενο έχει έναν "Τελικό" δείκτη, άρα στο πίνακα θα διαγραφεί αν δώσουμε νέα τιμή στη θέση του.

Τα επώνυμα αντικείμενα σε κάποιες γλώσσες λέγονται στατικά. Επειδή η Μ2000 έχει τμήματα μέσα σε τμήματα, τα οποία υπάρχουν μόνο όταν εκτελεστεί το τμήμα που τα περιέχει και εκτελεστεί ο ορισμός τους, δεν μπορούμε να μιλάμε για "στατικά" αντικείμενα. Αν όμως περάσουμε στο σωρό τιμών ένα αντικείμενο (θα μπει ως ανύνυμο) ή ως επιστροφή τιμής σε μια συνάρτηση, τότε μπορούμε να δώσουμε ζωή περισσότερη από αυτή ενός επώνυμου αντικειμένου. Πράγματι τα ανώνυμα αντικείμενα υπάρχουν όσο υπάρχει αυτό που τα περιέχει, και εδώ δεν είναι το τμήμα ή η συνάρτηση όπως τα επώνυμα, αλλά οι δομές καταχώρησης, όπως πίνακες, καταστάσεις και σωροί.

Αυτό που δεν υπάρχει άμεσα στη Μ2000 για τα αντικείμενα είναι ο τρόπος εξαγωγής μόνο των δεδομένων, σε ένα αλφαριθμητικό για καταχώρηση σε ένα αρχείο, και αργότερα για ανάγνωση από αυτό. Πρέπει να φτιάξουμε τρόπο εγγραφής και ανάγνωσης μέσα στο αντικείμενο. Απλά θα παρέχουμε τον αριθμό του αρχείου (file handler) και όλα θα γίνονται εντός του αντικειμένου.

Ένα πρόγραμμα το διαβάζουμε είτε από την αρχή προς το τέλος, είτε αφήνοντας τους ορισμούς για όταν κάτι το χρησιμοποιήσουμε πρώτη φορά. Πχ το παρακάτω το διαβάζουμε αφήνοντας το Τμήμα ΔοκιμήΑ { } και πάμε αμέσως μετά. Στη γραμμή που καλούμε το ΔοκιμήΑ γυρνάμε στον ορισμό.

Τα τμήματα δέχονται στη κλήση έναν σωρό τιμών και τον επιστρέφουν στην επιστροφή. Σε αυτόν γράφονται και τυχόν ορίσματα που δίνουμε, είτε με αντιγραφή είτε με αναφορά (και η αναφορά είναι μια τιμή που αντιγράφεται, και ειδικά στη Μ2000 είναι αλφαριθμητικό και περιέχει αυτό που αναφέρεται, και λέγεται ισχνή αναφορά, γιατί δεν έχει "συνδεθεί" όσο είναι στο σωρό τιμών).. Το ίδιο ισχύει αν κληθούν συναρτήσεις με την Κάλεσε.

Οι συναρτήσεις που φτιάχνουμε και καλούμε σε εκφράσεις δημιουργούν δικό τους σωρό τιμών, και αυτός δεν επιστρέφεται. Έτσι αν περάσουμε περισσότερα ορίσματα και αυτά δεν χρησιμοποιηθούν τότε χάνονται μαζί με το σωρό τιμών. Για το λόγο αυτό η Μ2000 στη κλήση συναρτήσεων δεν κάνει έλεγχο ορισμάτων, τα βάζει όπως τα δίνουμε. Ο έλεγχος γίνεται στη συνάρτηση. Αν ζητάμε αριθμό και έχουμε αλφαριθμητικό θα βγει λάθος.

Ε'ιτε γράψουμε Συνάρτηση Αλφα {=Αριθμός**2}  (όπου το ** είναι η ύψωση σε δύναμη, όπως και το ^ είναι επίσης η ύψωση σε δύναμη), είτε Συνάρτηση Αλφα(χ) {=χ**2} είτε:
Συνάρτηση Αλφα {
Διάβασε χ : =χ**2
}
Είναι το ίδιο πράγμα (με τη διαφορά ότι στην πρώτη δεν θα φτιαχτεί μεταβλητή, θα διαβαστεί άμεσα ο αριθμός από το σωρό τιμών).

Αρχικοποίηση
Δεν μπορούμε να χρησιμοποιήσουμε μια μεταβλητή αν δεν έχουμε δώσει αρχική τιμή. Δεν ισχύει αυτό στους πίνακες, γιατί η αρχική τιμή τους "Empty" μεταφράζεται αυτόματα σε 0 ή "" ανάλογα με το όνομα του πίνακα (αν έχει $ στο τέλος του ονόματος είναι αλφαριθμητικό)

Περί θεάσης μεταβλητών
Αν ένα όνομα δεν ορίζεται τοπικά τότε το αναζητεί ο διερμηνευτής ως γενική. Η διαφορά τοπικής Α με γενική Α είναι ότι η τοπική έχει ένα πρόθεμα που δεν βλέπουμε, ενώ η γενική δεν έχει πρόθεμα. Γενικές μπορούμε να φτιάξουμε οπουδήποτε, αλλά θα διαγραφούν μαζί με τις τοπικές. Μια τοπική Α και μια γενική Α μπορούν να υπάρχουν μαζί, αλλά η τοπική θα σκιάσει τη γενική. Για να αλλάξουμε τιμή σε μια γενική θα πρέπει να δώσουμε το <= αντί του =. Το απλό = δημιουργεί τοπική ακόμα και αν υπάρχει γενική με το ίδιο όνομα.

Στο μικρό παράδειγμα έχουμε μια ομάδα με δυο μέλη, τα χ και κ, και ένα τμήμα το Κάππα. Σε αυτό το τμήμα ορίζουμε μια γενική το κ (θα υπάρχει μέχρι το τμήμα να διαγραφεί), και μια ομάδα το Άλφα, με μέλος το χ και δυο μεθόδους, τη συνάρτηση Βήτα και το τμήμα ΆλλαξεΧ.
Καλούμε το Δέλτα.Καππα και στην επιστροφή εκτελούμε τη Λίστα και μας δείχνει ότι υπάρχουν σαν μεταβλητές τρια πράγματα, το Δέλτα, το Δέλτα.χ και το Δέλτα.κ. Ό,τι κάναμε στην Δέλτα.Κάππα έχουν διαγραφεί. Αν γυρνάγαμε την ομάδα Άλφα τότε θα είχαμε το πρόβλημα στην συνάρτηση Βήτα() με το κ που είναι γενικό και δεν υπάρχει πια. Για το λόγο αυτό δεν χρησιμοποιούμε γενικές που φτιάχνονται προσωρινά σε μεθόδους ομάδων. Εδώ απλά δεν έχουμε πρόβλημα γιατί δεν κάνουμε χρήση της ομάδας ως επιστρεφόμενη τιμή.

Ομάδα Δέλτα {
      χ=5000
      κ=2
      Τμήμα Κάππα {
            Γενική κ=100
            Τμήμα Εσωτερικό {
                  Ομάδα Αλφα {
                        χ=2
                        Συνάρτηση Βήτα (μ){
                              =**μ+κ
                        }
                        Τμήμα ΆλλαξεΧ (μ) {
                              \\ χρειάζεται το .χ είναι της ομάδας
                              <=μ
                        }
                  }
                  Τύπωσε Αλφα.Βήτα(4)=116
                  Τύπωσε Αλφα.χ=2
                  \\ γίνεται να αλλάξει γιατί το Αλφα.χ είναι μια εταβλητή τοπική στο Εσωτερικό
                  Αλφα.χ=3
                  Τύπωσε Αλφα.Βήτα(4)=181
                  Αλφα.ΆλλαξεΧ 5
                  Τύπωσε Αλφα.Βήτα(4)=725
            }
            \\ απλή κλήση
            Εσωτερικό
            \\ μέσω της Κάλεσε
            Κάλεσε Εσωτερικό
      }
}
Δέλτα.Κάππα
\\ υπάρχουν μόνο τρεις, η Δέλτα,  Δέλτα.χ και Δέλτα.κ
Λίστα 





Το παράδειγμα





Τμήμα ΔοκιμήΑ {
      \\ δεν χρειάζεται η παρακάτω, αλλά μπορούμε να την δώσουμε
      Κάνε ι ως ακέραιος, εντάξει ως λογικός
      \\ όσα μέρη μιας κλάσης είναι μετά την ετικέτα Κλάση: δεν περιέχονται στο τελικό αντικείμενο       \\ οι κλάσεις είναι συναρτήσεις (γενικές) που επιστρέφουν αντικείμενο       \\ Μια μέθοδος με το όνομα της κλάσης είναι ο κατασκευαστής, που καλείται αφού πρώτα       \\ φτιαχτεί ένα αντικείμενο με ότι έχουμε στον ορισμό.       \\ η κλήση της Ζώο() μπορεί να γίνει στο κατασκευαστή της Σκύλος() γιατί είναι γενική              \\ Οι ιδιότητες είναι ομάδες (αντικείμενα) που ετοιμάζονται με δυνατότητες όπως:       \\ επιστροφή τιμής αν υπάρχει το πεδίο Αξία. Μπορούμε να ορίσουμε το τρόπο που θα επιστρέφεται η τιμή       \\ αλλαγή τιμής αν υπάρχει το πεδίο Θέσε. Μπορούμε να ορίσουμε το τρόπο που θα διαβάζει μια τιμή       \\ Σε κάθε περίπτωση το $ χρησιμοποιείται όταν η τιμή επιστροφής ή αλλαγής είναι αλφαριθμητικό       \\ μια ιδιότητα μπορεί να έχει μεθόδους και τμήματα όπως όλα τα αντικείμενα, αλλά δεν έχει κατασκευαστή.                     \\ Στο παράδειγμα φτιάχνουμε δυο αντικείμενα τοποθετημένα σε ένα πίνακα       \\ Καλούμε διαδοχικά την τι$() συνάρτηση του κάθε αντικειμένου       \\ και το κάθε αντικείμενο καλεί την δική του συνάρτηση.                     \\ εδώ δεν έχουμε δείκτη σε αντικείμενο. Τα αντικείμενα είναι μοναδικά, και επειδή βρίσκονται σε πίνακα       \\ είναι ανώνυμα. Το κάθε αντικείμενο είναι μια κατασκευή και περιέχει ότι του έχουμε βάλει.       \\ αν δοκιμάσουμε να αλλάξουμε το όνομα$ θα πάρουμε λάθος.              \\ Θέλουμε το κάθε ζώο να έχει έναν αριθμό       \\ θα έχουμε μια γενική μεταβλητή ΑΑ και μια συνάρτηση που θα παράγει την επόμενη ΑΑ       \\ τη γενική συνάρτηση θα την καλούμε στη Ζώο() συνάρτηση (που επιστρέφει αντικείμενο)              Γενική ΑΑ=1              Συνάρτηση Γενική ΝέοςΑριθμός {             =ΑΑ             ΑΑ++       }                            Κλάση Ζώο {       Ιδιωτικό:             \\ η αρίθμηση είναι ιδιωτική, και εδώ είναι και τελική             τελική αρίθμηση=ΝέοςΑριθμός()       Δημόσιο:             \\ όλα τα αντικείμενα χρήστη είναι τύπου Ομάδα (Group)             \\ αν θέλουμε φτιάχνουμε μια μεταβλητή για να μας λέει..             \\ τι τύπος είναι για εμάς.                          \\ η τύπος$ είναι σταθερά για το αντικείμενο             τελικό τύπος$="Ζώο"             \\ ιδιότητα που δίνει μόνο τιμή, δεν δέχεται             Ιδιότητα όνομα$ {Αξία}="χωρίς όνομα"             \\ ιδιότητα που αλλάζει τιμή και δίνει τιμή             \\ το παρακάτω είναι όμοιο με το αμέσως επόμενο             \\ Ιδιότητα Κάνει$ {Αξία, Θέσε} ="Δεν έχει οριστεί"             Ιδιότητα Κάνει$ ="Δεν έχει οριστεί"             \\ αυτή η συνάρτηση δεν είναι τελική και μπορεί να αλλάξει             Συνάρτηση Τελική Ποιο$ {                   =μορφή$("Είμαι το υπ' αριθμόν {0} ζώο",.αρίθμηση)             }             Συνάρτηση Τι$ {                   ="Με λένε "+.όνομα$+" και κάνω "+Κάνει$             }       Κλάση:             Τμήμα Ζώο {                   \\ μπορούμε να θέσουμε στην ιδιωτική της ιδιότητας                   \\ μόνο  μέσα από τμήμα ή συνάρτηση του αντικειμένου                   Διάβασε .[όνομα]$, .[Κάνει]$             }       }       Κλάση Σκύλος {             Συνάρτηση Τελική Τι$ {                   ="Είμαι σκύλος και με λένε "+.όνομα$+" και κάνω "+πεζ$(.Κάνει$)             }       Κλάση:             Τμήμα Σκύλος (ονομα$) {                   \\ ήδη η Σκύλος έχει την τελική Τι$ και δεν θα την αλλάξει                   \\ παρόλο που το Ζώο() του την παρέχει                   Αυτό<=Ζώο(ονομα$,"Γαβ γαβ")             }       }       Κλάση Γάτα {             Συνάρτηση Τελική Τι$ {                   ="Είμαι γάτα και με λένε "+.όνομα$+" και κάνω "+πεζ$(.Κάνει$)       }       Κλάση:             Τμήμα Γάτα (όνομα$) {                   Αυτό<=Ζώο(όνομα$, "Νιάου νιάου")             }       }              \\ δεν δίνουμε αρχική τιμή στα στοιχεία του πίνακα       \\ η αρχική τιμή που γυρνάει η Τύπος$() είναι "Empty"       Πίνακας Βάση 1, α(2)       Τύπωσε τύπος$(α(1))="Empty"   ' Αληθές       \\ βάζουμε στα 1 και 2 από ένα αντικείμενο       α(1)=Σκύλος("Αζόρ"),Γάτα("Ψιψίνα")       \\ Τώρα ο τύπος της α(1) είναι Group (ομάδα)       Τύπωσε τύπος$(α(1))="Group"   ' Αληθές              \\Μπορούμε να καλέσουμε την τι$() από τα δυο στοιχεία του πίνακα       \\ επειδή είναι συνάρτηση βάζουμε τις παρενθέσεις παρόλο που δεν βάζουμε ορίσματα       Για ι=1 έως 2             Τύπωσε α(ι).τι$()       Επόμενο              Δες Εντάξει {             α(1).όνομα$="Μαξ"       }       \\ βγάζει λάθος, λέει ότι χρειάζεται μια ομάδα στη δεξιά έκφραση, επειδή δεν έχει οριστεί πεδίο Θέσε.       Αν όχι Εντάξει τότε Πένα 11 {τύπωσε Λάθος$}              \\ η κάνει$ είναι ιδιότητα που αλλάζει τιμή       α(1).κάνει$="Γαβ γαβ γαβ"              \\ αυξάνουμε το πίνακα κατά 1       Πίνακας α(1 εως 3)       Κλάση ΚάτιΆλλο {             τελική τύπος$="Κάτι Άλλο"       }       α(3)=ΚάτιΆλλο()              Για ι=1 έως 2             Αν α(ι).τύπος$="Ζώο" Τότε                   Τύπωσε α(ι).Ποιο$()                   Τύπωσε α(ι).τι$()             Τέλος Αν       Επόμενο              \\ πιο ωραίος κώδικας, και πιο γρήγορος, γιατί ο διερμηνευτής έχει έτοιμο το α(ι)       \\ για κάθε .κάτι που καλούμε              Για ι=1 έως 2             Για α(ι) {                   Αν .τύπος$="Ζώο" Τότε                         Τύπωσε .Ποιο$()                         Τύπωσε .τι$()                   Τέλος Αν             }       Επόμενο       \\ εδώ τελειώνει ο κώδικας       \\ οι συναρτήσεις, ο πίνακας και οι μεταβλητές Εντάξει και ι θα διαγραφούν       Βάλε α(1) } \\ Δεν χρειάζεται να ορίσουμε το Κ ως ομάδα, αλλά μπορούμε να το κάνουμε Ομάδα Κ \\ καλούμε το τμήμα ΔοκιμήΑ ΔοκιμήΑ \\ Περιμένουμε μια τιμή στο σωρό τιμών, στη κορυφή \\ αν έχουμε ομάδα τότε το ταύτιση("Ο") είναι αληθές Αν ταύτιση("Ο") τότε       Τμήμα Προσωρινό(&α) {             \\ Μπορούμε να προσθέσουμε ένα τμήμα που θα διαβάζει την αρίθμηση             \\ και επειδή η προσθήκη μπήκε στην αναφορά του Κ στο α             \\ δεν θα υπάρχει στο Κ                          \\ αυτό συμβαίνει γιατί το α έχει με αναφορά όλα τα μέλη το Κ,             \\ αλλά το α είναι διαφορετικό αντικείμενο από το Κ             \\ με αυτόν τον τρόπο, ενώ ένα αντικείμενο δεν διαγράφει μέλη             \\ μπορούμε να πάρουμε αντίγραφο με αναφορά στις τιμές             \\ και σε αυτό να φτιάξουμε νέα μέλη             \\ και στην έξοδο από το τμήμα το αντίγραφο θα διαγραφεί             \\ αλλά δεν θα διαγραφούν οι αναφερόμενες τιμές.             Ομάδα α {                   Τμήμα Δείξε_Αρίθμηση {                         Τύπωσε .αρίθμηση                   }             }             α.Δειξε_Αρίθμηση             Τύπωσε Τμήμα(α.Δείξε_Αρίθμηση)=Αληθές       }       \\ και την διαβάζουμε στη Κ (αν η Κ δεν είναι νέα και δεν είναι ομάδα βγαίνει λάθος)       Διάβασε Κ       Τύπωσε Τύπος$(Κ)="Group"       Τύπωσε Κ.τύπος$="Ζώο"  ' Αληθές       Τύπωσε Κ.Κάνει$="Γαβ γαβ γαβ"       Προσωρινό &Κ       Τύπωσε Τμήμα(Κ.Δείξε_Αρίθμηση)=Ψευδές Τέλος Αν

Πέμπτη, 23 Μαΐου 2019

Rank of programming languages per entries from rosetta.org




Sample output on Thursday, May 23, 2019:

rank:   1.  1144 entries - Go
rank:   2.  1078 entries - Perl 6
rank:   3.  1057 entries - Python
rank:   4.  1042 entries - Kotlin
rank:   5.  1025 entries - Perl
rank:   6.  1024 entries - Phix
rank:   7.  1011 entries - Julia
rank:   8.   989 entries - Racket
rank:   9.   949 entries - C
rank:  10.   944 entries - J
rank:  11.   933 entries - Zkl
rank:  12.   930 entries - Tcl
rank:  13.   908 entries - Java
rank:  14.   906 entries - REXX
rank:  15.   876 entries - Ruby
rank:  16.   875 entries - D
rank:  17.   869 entries - Haskell
rank:  18.   809 entries - Sidef
rank:  19.   793 entries - Scala
rank:  20.   775 entries - C sharp
rank:  21.   774 entries - PicoLisp
rank:  22.   764 entries - C++
rank:  23.   748 entries - Mathematica
rank:  24.   678 entries - Common Lisp
rank:  25.   667 entries - Ada
rank:  26.   636 entries - JavaScript
rank:  27.   630 entries - Lua
rank:  28.   628 entries - AutoHotkey
rank:  29.   610 entries - Ring
rank:  30.   592 entries - Clojure
rank:  31.   590 entries - Unicon
rank:  32.   572 entries - Factor
rank:  33.   565 entries - ALGOL 68
rank:  34.   563 entries - Nim
rank:  35.   562 entries - PureBasic
rank:  36.   560 entries - BBC BASIC
rank:  37.   557 entries - Fortran
rank:  38.   556 entries - OCaml
rank:  39.   539 entries - PARI/GP
rank:  40.   533 entries - F Sharp
rank:  41.   532 entries - Icon
rank:  42.   517 entries - Elixir
rank:  43.   495 entries - Erlang
rank:  44.   493 entries - FreeBASIC
rank:  45.   482 entries - Rust
rank:  46.   473 entries - PowerShell
rank:  47.   462 entries - Jq
rank:  48.   456 entries - Pascal
rank:  49.   450 entries - Forth
rank:  50.   448 entries - AWK
rank:  51.   441 entries - Seed7
rank:  52.   434 entries - R
rank:  53.   408 entries - Groovy
rank:  54.   403 entries - PL/I
rank:  55.   401 entries - PHP
rank:  56.   383 entries - VBA
rank:  57.   361 entries - Scheme
rank:  58.   359 entries - MATLAB
rank:  59.   348 entries - Swift
rank:  60.   343 entries - Maple
rank:  61.   342 entries - M2000 Interpreter
rank:  62.   337 entries - Liberty BASIC
rank:  63.   314 entries - Run BASIC
rank:  64.   308 entries - Oforth
rank:  65.   307 entries - Prolog
rank:  66.   306 entries - Octave
rank:  67.   305 entries - XPL0
rank:  68.   304 entries - EchoLisp
rank:  69.   290 entries - Bracmat
rank:  70.   290 entries - UNIX Shell
rank:  71.   289 entries - VBScript
rank:  72.   287 entries - NetRexx
rank:  73.   284 entries - Objeck
rank:  74.   280 entries - Oz
rank:  75.   272 entries - E
rank:  76.   270 entries - COBOL
rank:  77.   265 entries - BASIC
rank:  78.   260 entries - Smalltalk
rank:  79.   259 entries - Lasso
rank:  80.   258 entries - Wolfram Language
rank:  81.   253 entries - Delphi
rank:  82.   244 entries - AppleScript
rank:  83.   239 entries - Elena
rank:  84.   232 entries - Euphoria
rank:  85.   226 entries - Visual Basic .NET
rank:  86.   220 entries - OoRexx
rank:  87.   217 entries - CoffeeScript
rank:  88.   210 entries - Maxima
rank:  89.   208 entries - Stata
rank:  90.   208 entries - ZX Spectrum Basic
rank:  91.   206 entries - Logo
rank:  92.   204 entries - 360 Assembly
rank:  93.   204 entries - Batch File
rank:  94.   196 entries - Ursala
rank:  95.   194 entries - Lingo
rank:  96.   193 entries - Standard ML
rank:  97.   183 entries - ERRE
rank:  98.   174 entries - Gambas
rank:  99.   168 entries - ALGOL W
rank: 100.   168 entries - IS-BASIC
rank: 101.   167 entries - Aime
rank: 102.   166 entries - Befunge
rank: 103.   163 entries - Modula-2
rank: 104.   161 entries - GAP
rank: 105.   159 entries - Objective-C
rank: 106.   156 entries - HicEst
rank: 107.   155 entries - TUSCRIPT
rank: 108.   153 entries - Fantom
rank: 109.   152 entries - Eiffel
rank: 110.   150 entries - Nemerle
rank: 111.   148 entries - Yabasic
rank: 112.   146 entries - Applesoft BASIC
rank: 113.   143 entries - REBOL
rank: 114.   140 entries - K
rank: 115.   140 entries - NewLISP
rank: 116.   139 entries - TXR
rank: 117.   137 entries - Emacs Lisp
rank: 118.   127 entries - LiveCode
rank: 119.   126 entries - Slate
rank: 120.   124 entries - Modula-3
rank: 121.   121 entries - ActionScript
rank: 122.   119 entries - BaCon
rank: 123.   116 entries - Oberon-2
rank: 124.   116 entries - SNOBOL4
rank: 125.   115 entries - MAXScript
rank: 126.   115 entries - TI-83 BASIC
rank: 127.   112 entries - Ursa
rank: 128.   112 entries - Visual Basic
rank: 129.   111 entries - Jsish
rank: 130.   111 entries - Retro
rank: 131.   107 entries - Pike
rank: 132.   106 entries - Vedit macro language
rank: 133.   105 entries - Déjà Vu
rank: 134.   105 entries - Frink
rank: 135.   105 entries - MUMPS
rank: 136.   104 entries - DWScript
rank: 137.   102 entries - APL
rank: 138.   100 entries - ACL2
rank: 139.    97 entries - Mercury
rank: 140.    96 entries - AutoIt
rank: 141.    96 entries - Pop11
rank: 142.    95 entries - TI-89 BASIC
rank: 143.    94 entries - Ceylon
rank: 144.    93 entries - Axe
rank: 145.    93 entries - Io
rank: 146.    92 entries - Crystal
rank: 147.    92 entries - PostScript
rank: 148.    91 entries - ARM Assembly
rank: 149.    91 entries - FunL
rank: 150.    88 entries - Simula
rank: 151.    86 entries - 8th
rank: 152.    86 entries - Bc
rank: 153.    85 entries - 11l
rank: 154.    81 entries - M4
rank: 155.    81 entries - МК-61/52
rank: 156.    80 entries - Ol
rank: 157.    78 entries - Dart
rank: 158.    77 entries - LFE
rank: 159.    77 entries - Raven
rank: 160.    76 entries - FutureBasic
rank: 161.    75 entries - Logtalk
rank: 162.    75 entries - Min
rank: 163.    75 entries - Sinclair ZX81 BASIC
rank: 164.    74 entries - Component Pascal
rank: 165.    74 entries - X86 Assembly
rank: 166.    71 entries - Red
rank: 167.    69 entries - ABAP
rank: 168.    69 entries - Ela
rank: 169.    69 entries - Sather
rank: 170.    69 entries - XLISP
rank: 171.    68 entries - Brat
rank: 172.    68 entries - SQL
rank: 173.    66 entries - Neko
rank: 174.    66 entries - Scilab
rank: 175.    65 entries - Burlesque
rank: 176.    65 entries - LabVIEW
rank: 177.    65 entries - OxygenBasic
rank: 178.    63 entries - IDL
rank: 179.    62 entries - Dc
rank: 180.    62 entries - Vala
rank: 181.    62 entries - Wart
rank: 182.    61 entries - ColdFusion
rank: 183.    60 entries - SequenceL
rank: 184.    57 entries - Commodore BASIC
rank: 185.    57 entries - Locomotive Basic
rank: 186.    57 entries - SAS
rank: 187.    56 entries - Easyprog.online
rank: 188.    56 entries - FBSL
rank: 189.    55 entries - BASIC256
rank: 190.    55 entries - PowerBASIC
rank: 191.    53 entries - FALSE
rank: 192.    53 entries - OpenEdge/Progress
rank: 193.    51 entries - SPL
rank: 194.    50 entries - Fōrmulæ
rank: 195.    50 entries - Metafont
rank: 196.    49 entries - Lang5
rank: 197.    49 entries - Rascal
rank: 198.    48 entries - DCL
rank: 199.    48 entries - Microsoft Small Basic
rank: 200.    47 entries - Toka
rank: 201.    46 entries - ATS
rank: 202.    46 entries - Inform 7
rank: 203.    45 entries - Joy
rank: 204.    43 entries - Wortel
rank: 205.    43 entries - XSLT
rank: 206.    42 entries - HolyC
rank: 207.    42 entries - Sparkling
rank: 208.    42 entries - SQL PL
rank: 209.    41 entries - Aikido
rank: 210.    41 entries - TorqueScript
rank: 211.    41 entries - Yorick
rank: 212.    40 entries - RapidQ
rank: 213.    40 entries - S-lang
rank: 214.    40 entries - UnixPipes
rank: 215.    40 entries - V
rank: 216.    39 entries - Apex
rank: 217.    39 entries - GW-BASIC
rank: 218.    39 entries - Harbour
rank: 219.    39 entries - SETL
rank: 220.    38 entries - Falcon
rank: 221.    38 entries - Lisaac
rank: 222.    38 entries - Sed
rank: 223.    37 entries - Babel
rank: 224.    37 entries - Brainf***
rank: 225.    36 entries - Elm
rank: 226.    36 entries - Futhark
rank: 227.    35 entries - AmigaE
rank: 228.    35 entries - C Shell
rank: 229.    35 entries - Chapel
rank: 230.    34 entries - 6502 Assembly
rank: 231.    34 entries - Caché ObjectScript
rank: 232.    34 entries - GML
rank: 233.    34 entries - Nial
rank: 234.    34 entries - RLaB
rank: 235.    34 entries - Vim Script
rank: 236.    33 entries - SuperCollider
rank: 237.    32 entries - EGL
rank: 238.    32 entries - Gnuplot
rank: 239.    32 entries - I
rank: 240.    32 entries - PL/SQL
rank: 241.    32 entries - Processing
rank: 242.    32 entries - Q
rank: 243.    32 entries - Visual FoxPro
rank: 244.    31 entries - LOLCODE
rank: 245.    30 entries - Agena
rank: 246.    30 entries - GUISS
rank: 247.    30 entries - Qi
rank: 248.    30 entries - REALbasic
rank: 249.    30 entries - WDTE
rank: 250.    30 entries - Zonnon
rank: 251.    29 entries - MIRC Scripting Language
rank: 252.    29 entries - Smart BASIC
rank: 253.    29 entries - SNUSP
rank: 254.    28 entries - CMake
rank: 255.    28 entries - ECL
rank: 256.    28 entries - Hexiscript
rank: 257.    28 entries - Order
rank: 258.    28 entries - PlainTeX
rank: 259.    27 entries - Huginn
rank: 260.    27 entries - Hy
rank: 261.    27 entries - Limbo
rank: 262.    26 entries - ALGOL 60
rank: 263.    26 entries - Clean
rank: 264.    26 entries - Clipper
rank: 265.    26 entries - Haxe
rank: 266.    26 entries - MLite
rank: 267.    26 entries - Potion
rank: 268.    26 entries - Salmon
rank: 269.    24 entries - Idris
rank: 270.    24 entries - Mirah
rank: 271.    24 entries - SSEM
rank: 272.    24 entries - Trith
rank: 273.    23 entries - Astro
rank: 274.    23 entries - Ioke
rank: 275.    23 entries - ML/I
rank: 276.    23 entries - PHL
rank: 277.    23 entries - ProDOS
rank: 278.    22 entries - Beeswax
rank: 279.    22 entries - Golfscript
rank: 280.    22 entries - MIPS Assembly
rank: 281.    22 entries - ML
rank: 282.    22 entries - Suneido
rank: 283.    21 entries - Argile
rank: 284.    21 entries - Gosu
rank: 285.    21 entries - Klong
rank: 286.    21 entries - Peloton
rank: 287.    21 entries - Pure
rank: 288.    21 entries - Scratch
rank: 289.    20 entries - Assembly
rank: 290.    20 entries - Chef
rank: 291.    20 entries - Self
rank: 292.    19 entries - ChucK
rank: 293.    19 entries - Free Pascal
rank: 294.    19 entries - Verbexx
rank: 295.    18 entries - Fancy
rank: 296.    18 entries - Genie
rank: 297.    18 entries - Make
rank: 298.    17 entries - 0815
rank: 299.    17 entries - Dylan
rank: 300.    17 entries - Efene
rank: 301.    17 entries - GFA Basic
rank: 302.    17 entries - MMIX
rank: 303.    17 entries - MOO
rank: 304.    17 entries - Shen
rank: 305.    17 entries - TypeScript
rank: 306.    16 entries - Dragon
rank: 307.    16 entries - EDSAC order code
rank: 308.    16 entries - Fish
rank: 309.    16 entries - Friendly interactive shell
rank: 310.    16 entries - LSL
rank: 311.    16 entries - Spin
rank: 312.    16 entries - Wee Basic
rank: 313.    16 entries - Whitespace
rank: 314.    16 entries - Wren
rank: 315.    16 entries - Xojo
rank: 316.    15 entries - Gema
rank: 317.    15 entries - LSE64
rank: 318.    15 entries - Lucid
rank: 319.    15 entries - N/t/roff
rank: 320.    15 entries - Openscad
rank: 321.    15 entries - SystemVerilog
rank: 322.    15 entries - Transact-SQL
rank: 323.    14 entries - Arc
rank: 324.    14 entries - Axiom
rank: 325.    14 entries - Dao
rank: 326.    14 entries - Ezhil
rank: 327.    14 entries - Inform 6
rank: 328.    14 entries - Latitude
rank: 329.    14 entries - OOC
rank: 330.    14 entries - Pure Data
rank: 331.    14 entries - VAX Assembly
rank: 332.    14 entries - Z80 Assembly
rank: 333.    13 entries - ALGOL-M
rank: 334.    13 entries - Computer/zero Assembly
rank: 335.    13 entries - KonsolScript
rank: 336.    13 entries - Lambdatalk
rank: 337.    13 entries - LaTeX
rank: 338.    13 entries - Object Pascal
rank: 339.    13 entries - Pony
rank: 340.    13 entries - SmileBASIC
rank: 341.    13 entries - SPAD
rank: 342.    13 entries - VHDL
rank: 343.    12 entries - Agda
rank: 344.    12 entries - Brlcad
rank: 345.    12 entries - Clay
rank: 346.    12 entries - Egel
rank: 347.    12 entries - Es
rank: 348.    12 entries - Genyris
rank: 349.    12 entries - Halon
rank: 350.    12 entries - OASYS Assembler
rank: 351.    12 entries - Panda
rank: 352.    12 entries - Piet
rank: 353.    12 entries - RPG
rank: 354.    12 entries - Unlambda
rank: 355.    12 entries - Vorpal
rank: 356.    12 entries - XBasic
rank: 357.    12 entries - XQuery
rank: 358.    11 entries - Arendelle
rank: 359.    11 entries - BCPL
rank: 360.    11 entries - CLIPS
rank: 361.    11 entries - Coco
rank: 362.    11 entries - Curry
rank: 363.    11 entries - Frege
rank: 364.    11 entries - Gecho
rank: 365.    11 entries - Integer BASIC
rank: 366.    11 entries - Onyx
rank: 367.    11 entries - Shiny
rank: 368.    11 entries - SPARK
rank: 369.    11 entries - TSE SAL
rank: 370.    10 entries - App Inventor
rank: 371.    10 entries - Asymptote
rank: 372.    10 entries - Blz
rank: 373.    10 entries - Dyalect
rank: 374.    10 entries - EC
rank: 375.    10 entries - Elisa
rank: 376.    10 entries - LLVM
rank: 377.    10 entries - LotusScript
rank: 378.    10 entries - Mathprog
rank: 379.    10 entries - MontiLang
rank: 380.    10 entries - Niue
rank: 381.    10 entries - Robotic
rank: 382.    10 entries - Wrapl
rank: 383.     9 entries - 4DOS Batch
rank: 384.     9 entries - 8086 Assembly
rank: 385.     9 entries - Alore
rank: 386.     9 entries - Boo
rank: 387.     9 entries - Coq
rank: 388.     9 entries - Eero
rank: 389.     9 entries - Fortress
rank: 390.     9 entries - GlovePIE
rank: 391.     9 entries - IWBASIC
rank: 392.     9 entries - Lily
rank: 393.     9 entries - Luck
rank: 394.     9 entries - Monte
rank: 395.     9 entries - Morfa
rank: 396.     9 entries - MySQL
rank: 397.     9 entries - NSIS
rank: 398.     9 entries - POV-Ray
rank: 399.     9 entries - Ra
rank: 400.     9 entries - SIMPOL
rank: 401.     9 entries - Symsyn
rank: 402.     9 entries - UTFool
rank: 403.     9 entries - Zig
rank: 404.     8 entries - 4D
rank: 405.     8 entries - 6800 Assembly
rank: 406.     8 entries - 68000 Assembly
rank: 407.     8 entries - 8051 Assembly
rank: 408.     8 entries - AsciiDots
rank: 409.     8 entries - Clio
rank: 410.     8 entries - Comal
rank: 411.     8 entries - Dylan.NET
rank: 412.     8 entries - Egison
rank: 413.     8 entries - Fan
rank: 414.     8 entries - Glee
rank: 415.     8 entries - Hoon
rank: 416.     8 entries - HQ9+
rank: 417.     8 entries - LC3 Assembly
rank: 418.     8 entries - Lhogho
rank: 419.     8 entries - MBS
rank: 420.     8 entries - Nanoquery
rank: 421.     8 entries - NESL
rank: 422.     8 entries - NGS
rank: 423.     8 entries - Nit
rank: 424.     8 entries - Picat
rank: 425.     8 entries - PILOT
rank: 426.     8 entries - PIR
rank: 427.     8 entries - TIScript
rank: 428.     8 entries - Verilog
rank: 429.     7 entries - AmbientTalk
rank: 430.     7 entries - Arbre
rank: 431.     7 entries - Blast
rank: 432.     7 entries - Cobra
rank: 433.     7 entries - Crack
rank: 434.     7 entries - FOCAL
rank: 435.     7 entries - FUZE BASIC
rank: 436.     7 entries - Intercal
rank: 437.     7 entries - JCL
rank: 438.     7 entries - Kite
rank: 439.     7 entries - Purity
rank: 440.     7 entries - Rhope
rank: 441.     7 entries - SASL
rank: 442.     7 entries - Set lang
rank: 443.     7 entries - SkookumScript
rank: 444.     7 entries - Squirrel
rank: 445.     7 entries - Visual Objects
rank: 446.     7 entries - Visual Prolog
rank: 447.     7 entries - XEec
rank: 448.     7 entries - Yacas
rank: 449.     6 entries - ANTLR
rank: 450.     6 entries - BlitzMax
rank: 451.     6 entries - C++/CLI
rank: 452.     6 entries - C1R
rank: 453.     6 entries - Cat
rank: 454.     6 entries - Comefrom0x10
rank: 455.     6 entries - Dodo0
rank: 456.     6 entries - DUP
rank: 457.     6 entries - Fexl
rank: 458.     6 entries - Gastona
rank: 459.     6 entries - Gri
rank: 460.     6 entries - Hope
rank: 461.     6 entries - JavaFX Script
rank: 462.     6 entries - Lisp
rank: 463.     6 entries - Oxygene
rank: 464.     6 entries - PASM
rank: 465.     6 entries - PDP-11 Assembly
rank: 466.     6 entries - QBasic
rank: 467.     6 entries - Rockstar
rank: 468.     6 entries - Sage
rank: 469.     6 entries - Tern
rank: 470.     6 entries - True BASIC
rank: 471.     6 entries - Whenever
rank: 472.     5 entries - 8080 Assembly
rank: 473.     5 entries - Algae
rank: 474.     5 entries - Brace
rank: 475.     5 entries - Clipper/XBase++
rank: 476.     5 entries - Deluge
rank: 477.     5 entries - DMS
rank: 478.     5 entries - ELLA
rank: 479.     5 entries - Ferite
rank: 480.     5 entries - GEORGE
rank: 481.     5 entries - JAMES II/Rule-based Cellular Automata
rank: 482.     5 entries - L++
rank: 483.     5 entries - Lilypond
rank: 484.     5 entries - Metapost
rank: 485.     5 entries - MoonScript
rank: 486.     5 entries - Occam
rank: 487.     5 entries - OPL
rank: 488.     5 entries - Panoramic
rank: 489.     5 entries - PL/M
rank: 490.     5 entries - PSQL
rank: 491.     5 entries - Quill
rank: 492.     5 entries - RPL/2
rank: 493.     5 entries - Script Basic
rank: 494.     5 entries - Sisal
rank: 495.     5 entries - Snobol
rank: 496.     5 entries - Thyrd
rank: 497.     5 entries - TPP
rank: 498.     5 entries - XProc
rank: 499.     5 entries - XTalk
rank: 500.     5 entries - ZPL
rank: 501.     4 entries - 80386 Assembly
rank: 502.     4 entries - AMPL
rank: 503.     4 entries - AspectJ
rank: 504.     4 entries - B
rank: 505.     4 entries - Biferno
rank: 506.     4 entries - BlooP
rank: 507.     4 entries - Bori
rank: 508.     4 entries - Dafny
rank: 509.     4 entries - DM
rank: 510.     4 entries - ElastiC
rank: 511.     4 entries - ESQL
rank: 512.     4 entries - F
rank: 513.     4 entries - Felix
rank: 514.     4 entries - FP
rank: 515.     4 entries - Gentee
rank: 516.     4 entries - Go!
rank: 517.     4 entries - Heron
rank: 518.     4 entries - HLA
rank: 519.     4 entries - HPPPL
rank: 520.     4 entries - HyperTalk
rank: 521.     4 entries - Informix 4GL
rank: 522.     4 entries - Iptscrae
rank: 523.     4 entries - JoCaml
rank: 524.     4 entries - JScript.NET
rank: 525.     4 entries - JudoScript
rank: 526.     4 entries - Kabap
rank: 527.     4 entries - LDPL
rank: 528.     4 entries - Lobster
rank: 529.     4 entries - Lush
rank: 530.     4 entries - MUF
rank: 531.     4 entries - Mythryl
rank: 532.     4 entries - NetLogo
rank: 533.     4 entries - Omega
rank: 534.     4 entries - Quite BASIC
rank: 535.     4 entries - RTL/2
rank: 536.     4 entries - SheerPower 4GL
rank: 537.     4 entries - SMEQL
rank: 538.     4 entries - SPARC Assembly
rank: 539.     4 entries - StreamIt
rank: 540.     4 entries - Tbas
rank: 541.     4 entries - Teco
rank: 542.     4 entries - TI-83 Hex Assembly
rank: 543.     4 entries - TransFORTH
rank: 544.     4 entries - Twelf
rank: 545.     4 entries - Uniface
rank: 546.     4 entries - VB6
rank: 547.     4 entries - XSLT 2.0
rank: 548.     4 entries - ZED
rank: 549.     3 entries - .QL
rank: 550.     3 entries - 8 1/2
rank: 551.     3 entries - A+
rank: 552.     3 entries - Agda2
rank: 553.     3 entries - ALGOL
rank: 554.     3 entries - Alice ML
rank: 555.     3 entries - ANT
rank: 556.     3 entries - Application Master
rank: 557.     3 entries - ASP
rank: 558.     3 entries - ASP.Net
rank: 559.     3 entries - AspectC++
rank: 560.     3 entries - Axum
rank: 561.     3 entries - Basic Casio
rank: 562.     3 entries - Battlestar
rank: 563.     3 entries - Beta
rank: 564.     3 entries - BML
rank: 565.     3 entries - C0H
rank: 566.     3 entries - Caml
rank: 567.     3 entries - CB80
rank: 568.     3 entries - Cecil
rank: 569.     3 entries - Cilk
rank: 570.     3 entries - Cilk++
rank: 571.     3 entries - Cubescript
rank: 572.     3 entries - Datalog
rank: 573.     3 entries - Diesel
rank: 574.     3 entries - Elan
rank: 575.     3 entries - Euler
rank: 576.     3 entries - Extended BrainF***
rank: 577.     3 entries - FAUST
rank: 578.     3 entries - FeatureC++
rank: 579.     3 entries - FPI
rank: 580.     3 entries - FreeMat
rank: 581.     3 entries - Glagol
rank: 582.     3 entries - Global Script
rank: 583.     3 entries - Golo
rank: 584.     3 entries - Goo
rank: 585.     3 entries - Jabaco
rank: 586.     3 entries - Kaya
rank: 587.     3 entries - KeyList Databasing
rank: 588.     3 entries - Kitten
rank: 589.     3 entries - L.in.oleum
rank: 590.     3 entries - LiveScript
rank: 591.     3 entries - Lotus 123 Macro Scripting
rank: 592.     3 entries - Lout
rank: 593.     3 entries - M680x0
rank: 594.     3 entries - Maude
rank: 595.     3 entries - MDL
rank: 596.     3 entries - ME10 macro
rank: 597.     3 entries - MGS
rank: 598.     3 entries - Mirelle
rank: 599.     3 entries - Monicelli
rank: 600.     3 entries - Mython
rank: 601.     3 entries - Nice
rank: 602.     3 entries - NQP
rank: 603.     3 entries - OASYS
rank: 604.     3 entries - OpenC++
rank: 605.     3 entries - Pentium Assembly
rank: 606.     3 entries - PL/pgSQL
rank: 607.     3 entries - PLUS
rank: 608.     3 entries - PLZ/SYS
rank: 609.     3 entries - Powerbuilder
rank: 610.     3 entries - PPC Assembly
rank: 611.     3 entries - PPL
rank: 612.     3 entries - Pyret
rank: 613.     3 entries - QuakeC
rank: 614.     3 entries - Refal
rank: 615.     3 entries - RLSL
rank: 616.     3 entries - RPL
rank: 617.     3 entries - RTSL
rank: 618.     3 entries - Sass/SCSS
rank: 619.     3 entries - Script3D
rank: 620.     3 entries - Superbase BASIC
rank: 621.     3 entries - TAL
rank: 622.     3 entries - TeLa
rank: 623.     3 entries - Thistle
rank: 624.     3 entries - Turing
rank: 625.     3 entries - UC++
rank: 626.     3 entries - UScript
rank: 627.     3 entries - UserRPL
rank: 628.     3 entries - VRML
rank: 629.     3 entries - WML
rank: 630.     3 entries - XBase
rank: 631.     3 entries - XUL
rank: 632.     3 entries - ΜC++
rank: 633.     3 entries - உயிர்/Uyir
rank: 634.     2 entries - ArnoldC
rank: 635.     2 entries - Bird
rank: 636.     2 entries - Cduce
rank: 637.     2 entries - DeviousYarn
rank: 638.     2 entries - GLBasic
rank: 639.     2 entries - GLSL
rank: 640.     2 entries - Hack
rank: 641.     2 entries - Jack
rank: 642.     2 entries - JOVIAL
rank: 643.     2 entries - Luna
rank: 644.     2 entries - Malbolge
rank: 645.     2 entries - MathCortex
rank: 646.     2 entries - MINIL
rank: 647.     2 entries - MSX Basic
rank: 648.     2 entries - Myrddin
rank: 649.     2 entries - MyrtleScript
rank: 650.     2 entries - OOCalc
rank: 651.     2 entries - OpenLisp
rank: 652.     2 entries - PeopleCode
rank: 653.     2 entries - Perl5i
rank: 654.     2 entries - Pict
rank: 655.     2 entries - Reason
rank: 656.     2 entries - ScriptBasic
rank: 657.     2 entries - TechBASIC
rank: 658.     2 entries - ToffeeScript
rank: 659.     2 entries - Viua VM assembly
rank: 660.     2 entries - Vox
rank: 661.     2 entries - X86 64 Assembly
rank: 662.     2 entries - XL
rank: 663.     2 entries - XPath 2.0
rank: 664.     2 entries - XSLT 1.0
rank: 665.     1 entries - 1C
rank: 666.     1 entries - Action!
rank: 667.     1 entries - Anyways
rank: 668.     1 entries - Apricot
rank: 669.     1 entries - AutoLISP
rank: 670.     1 entries - B4J
rank: 671.     1 entries - CafeOBJ
rank: 672.     1 entries - CHR
rank: 673.     1 entries - Clarion
rank: 674.     1 entries - DDNC
rank: 675.     1 entries - DIV Games Studio
rank: 676.     1 entries - Emojicode
rank: 677.     1 entries - FormulaOne
rank: 678.     1 entries - FRISC Assembly
rank: 679.     1 entries - Jacquard Loom
rank: 680.     1 entries - Kamailio Script
rank: 681.     1 entries - Lambda Prolog
rank: 682.     1 entries - LibreOffice Basic
rank: 683.     1 entries - MAPPER
rank: 684.     1 entries - MEL
rank: 685.     1 entries - MiniZinc
rank: 686.     1 entries - Mond
rank: 687.     1 entries - Monkey
rank: 688.     1 entries - NASL
rank: 689.     1 entries - Neat
rank: 690.     1 entries - NewtonScript
rank: 691.     1 entries - Nickle
rank: 692.     1 entries - Nix
rank: 693.     1 entries - Opa
rank: 694.     1 entries - Pare
rank: 695.     1 entries - Qore
rank: 696.     1 entries - Rapira
rank: 697.     1 entries - RPGIV
rank: 698.     1 entries - Setl4
rank: 699.     1 entries - Soar
rank: 700.     1 entries - SoneKing Assembly
rank: 701.     1 entries - Supernova
rank: 702.     1 entries - SuperTalk
rank: 703.     1 entries - Terra
rank: 704.     1 entries - TestML
rank: 705.     1 entries - WebAssembly
rank: 706.     1 entries - Wollok
rank: 707.     1 entries - Xanadu
rank: 708.     1 entries - Ya
rank: 709.     1 entries - МiniZinc
rank: 710.     0 entries - AngelScript
rank: 711.     0 entries - Binary Lambda Calculus
rank: 712.     0 entries - EhBASIC
rank: 713.     0 entries - Epigram
rank: 714.     0 entries - FLORA-2
rank: 715.     0 entries - Florid
rank: 716.     0 entries - Gerbil
rank: 717.     0 entries - LC2200 Assembly
rank: 718.     0 entries - Leon
rank: 719.     0 entries - Livecode
rank: 720.     0 entries - LLP
rank: 721.     0 entries - Loglan82
rank: 722.     0 entries - Lolli
rank: 723.     0 entries - Lygon
rank: 724.     0 entries - ObjectIcon
rank: 725.     0 entries - PL/B
rank: 726.     0 entries - Plan
rank: 727.     0 entries - Reduce
rank: 728.     0 entries - Rubylog
rank: 729.     0 entries - S BASIC
rank: 730.     0 entries - SimpleLang
rank: 731.     0 entries - Star
rank: 732.     0 entries - X10
rank: 733.     0 entries - XS