Αποστολέας Θέμα: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8  (Αναγνώστηκε 10545 φορές)

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #45 στις: 17 Οκτ 2018, 09:32:53 πμ »
Συμπληρώθηκαν 250 tasks στο rosettacode.org
http://www.rosettacode.org/wiki/Category:M2000_Interpreter

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #46 στις: 05 Φεβ 2019, 06:05:46 μμ »
Ολοκληρώθηκε η Μ2000, στην έκδοση 9.7
Ως προς την σύνταξη και τις δυνατότητες της γλώσσας δεν προβλέπεται καμία αναβάθμιση. Αυτό που μένει για άλλες εκδόσεις είναι η αλλαγή του μοντέλου εκτέλεσης. Το τωρινό μοντέλο είναι απλό, για να ήταν εύκολη η διαδικασία αποσφαλμάτωσης, με κάθε εντολή να εκτελείται από μια συνάρτηση που δέχεται ένα τμήμα του πηγαίου κώδικα, με συνέπεια πάντα να εκτελείται άμεσα πηγαίος κώδικας ακόμα και σε περίπτωση επαναλήψεων. Αυτό σημαίνει ότι ένα νούμερο πχ το 100 στο πηγαίο κώδικα σε μια επανάληψη θα χρειαστεί να γίνει μετατροπή σε αριθμό σε κάθε πέρασμα.
Η επόμενη έκδοση θα περιέχει AST Interpreter, και θα αργήσει αρκετούς μήνες μέχρι να φθάσει στην ίδια λειτουργικότητα με την 9.7, αλλά θα είναι ένα βήμα πριν τον Compiler σε byte code.
Το AST είναι μια δομή δένδρου που κρατάει τα στοιχεία σε μορφή έτοιμα για χρήση, έχει δηλαδή προηγηθεί ο λεκτικός αναλυτής (lexical analyzer) και κατόπιν ο syntax analyzer, ή συντακτικός αναλυτής. Ήδη ο λεκτικός αναλυτής έχει φτιαχτεί και έχει προκύψει από τον χρωματιστή κώδικα του ενσωματωμένου διορθωτή της Μ2000.
Ο στόχος μου είναι μέχρι το καλοκαίρι του 2019 να υπάρχει η έκδοση 9.8 και να είναι 10 φορές γρηγορότερη από την 9.7. Ήδη η 9.7 είναι η πιο γρήγορη απ΄ όλες τις προηγούμενες εκδόσεις.
Στο αρχείο εγκατάστασης υπάρχει και ένα πρόγραμμα το info που τρέχει αυτόματα όταν το ανοίγουμε και εμφανίζει πληροφορίες, καθώς επίσης περιέχει προγράμματα για να καλέσουμε άμεσα ή να τα διαβάσουμε και να πάρουμε ιδέες. Υπάρχει πχ το textout που εμφανίζει κείμενο λέξη προς λέξη καθώς ο υπολογιστής το διαβάζει! Αυτό γίνεται με την Μ2000 γιατί μπορεί να συνδεθεί με αντικείμενα και να διαβάζει γεγονότα, και εδώ το αντικείμενο λέγεται SAPI.SpVoice και τα γεγονότα που μας ενδιαφέρουν είναι το Word, το EndStream, το Sentence με τα οποία παίρνουμε πληροφορίες καθώς το αντικείμενο "μιλάει" το κείμενο που του δίνουμε.
Βεβαίως μπορεί η ΓΛΩΣΣΑ του σχολείου να είναι πλήρες για το πρόγραμμα σπουδών, όμως δεν είναι ενδιαφέρουσα για δημιουργική ασχολία. Σε αυτό το σημείο η Μ2000 έχει να προτείνει κάτι άλλο. Ότι χρειάζεται το έχει ή ενσωματωμένο ή το παίρνει από το λειτουργικό (όπως το SAPI, ή speech application programming interface). Στις ενσωματωμένες δυνατότητες είναι η σχεδίαση 2D, η χρήση εικόνων, στατικών και κινούμενων (sprites), η χρήση του MIDI (προγραμματίζουμε μουσική σε 16 κανάλια ήχου, η οποία παίζεται παράλληλα με το πρόγραμμα), χρήση ήχων και βίντεο, βάσεων δεδομένων, χρήση script γλωσσών, πχ javascript και vbscript μπορούμε να καλέσουμε μέσα από την Μ2000, καθώς επίσης μπορούμε να εκτελέσουμε κώδικα μηχανής αν και δεν υπάρχει ενσωματωμένος assembler, μπορούμε να γράψουμε το κώδικα και να τον εκτελέσουμε μέσα από τη γλώσσα. Τέλος αξίζει να αναφερθεί και το σύστημα παραθύρων που έχει το περιβάλλον της Μ2000 και εύκολα μπορούμε να φτιάχνουμε φόρμες με στοιχεία ελέγχου (τα οποία παρέχει η γλώσσα και είναι φτιαγμένα σε αυτήν και εμφανίζονται το ίδιο σε κάθε λειτουργικό).
« Τελευταία τροποποίηση: 06 Φεβ 2019, 09:36:21 μμ από bugman »

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #47 στις: 09 Μάρ 2019, 07:16:34 μμ »

στην έκδοση 9.8, αναθεώρηση 8, έφτιαξα τον χρωμαστή κώδικα στο editbox να δουλεύει και για την ΓΛΩΣΣΑ.

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Σύντομος οδηγός της Μ2000
« Απάντηση #48 στις: 12 Μάρ 2019, 07:39:38 μμ »
Εκδόθηκε διαδικτυακά ο σύντομος οδηγός της Μ2000. Γίνεται αναφορά στα υποδείγματα προγραμματισμού, και περισσότερο στα βασικά, το Προστακτικό Προγραμματισμό, το Συναρτησιακό, τον αντικειμενοστραφή Προγραμματισμό και τον Με γεγονότα Προγραμματισμό.
Αναφέρεται στην έκδοση 9.8 αναθεώρηση 13, την τελευταία ως σήμερα.
Υπάρχει σε pdf και σε Epub.

Περιλαμβάνει και δυο υλοποιήσεις ταξινομήσεων, την Ταξινόμηση με Συγχώνευση (με συνδεδεμένη λίστα), και την Γρήγορη Ταξινόμηση (με αντικείμενο, χωρίς αναδρομή, και με επιλογή τρόπου σύγκρισης).
« Τελευταία τροποποίηση: 12 Μάρ 2019, 10:25:51 μμ από bugman »

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #49 στις: 04 Ιούν 2019, 04:45:07 μμ »
Επειδή γίνεται λόγος για αντικείμενα στη νέα ύλη, σκέφτηκα και έγραψα μια ανάρτηση στο blog για τη Μ2000, για μια απλή χρήση αντικειμένων.

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

Το ζήτημα με τα αντικείμενα είναι ότι όσες γλώσσες με αντικείμενα υπάρχουν τόσοι είναι και οι τρόποι υλοποίησης. Δηλαδή δεν υπάρχει ένας μοναδικός τρόπος υλοποίησης που να είναι "γενικός". Ακόμα και στη ΓΛΩΣΣΑ να θέλουμε να υλοποιήσουμε τα αντικείμενα θα πρέπει να γίνουν πολλές αλλαγές για να το πετύχουμε και θα βγει πάλι ένας μοναδικός τρόπος υλοποίησης.

Υπάρχουν δε κάποια χαρακτηριστικά που δηλώνουν μεταξύ των γλωσσών μια συνάφεια στα αντικείμενα, αλλά και εδώ έχουμε χαλαρή σύνδεση με τις έννοιες.

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

Ως προς τα αντικείμενα, η Μ2000 έχει το αντικείμενο Ομάδα, και άλλους τύπους αντικειμένων. Το αντικείμενο Ομάδα είναι το αντικείμενο του χρήστη. Δηλαδή το αντικείμενο που ορίζει ιδιότητες και μεθόδους, και άλλα πράγματα που δεν φαίνονται στο παράδειγμα, όπως γεγονότα και τελεστές. Οι άλλοι τύποι χωρίζονται σε δυο κατηγορίες, στα αντικείμενα καταχώρησης στοιχείων, όπως πίνακες (και tuples), σωροί, καταστάσεις (κλειδιά και τιμές), στα οποία υπάρχουν συντακτικό και εντολές για αυτά, και στα τύπου COM, είτε αυτά είναι οι φόρμες (το GUI της Μ2000), είτε εσωτερικά πχ το MATH για ειδικές πράξεις μαθηματικών, είτε εξωτερικά που φορτώνονται από τα Windows, και για αυτά υπάρχουν δυο εντολές, για να καλούμε μεθόδους και να αλλάζουμε ή να διαβάζουμε ιδιότητες.

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

Οποιοδήποτε λάθος και να βγει παραμένει ο χρήστης μέσα στο περιβάλλον της Μ2000 και μπορεί να διορθώσει το πρόγραμμά του και να το τρέξει ξανά.

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

Στο παράδειγμα έχουμε μια Κλάση που λέγεται Ζώο και δυο άλλες Κλάσεις που λέγονται Σκύλος και Γάτα. Οι δυο τελευταίες χρησιμοποιούν στον κατασκευαστή τους την κλάση Ζώο. Με αυτόν τον τρόπο δείχνουμε πως κληρονομούν νέες κλάσεις από άλλες.

Δεν υπάρχει ξεχωριστός τρόπος "συντακτικός" για την έννοια της Διεπαφής. Στο παράδειγμα τα Σκύλος και Γάτα έχουν κοινή διεπαφή, δηλαδή ό,τι έχει το ένα, έχει το άλλο σε ονόματα ιδιοτήτων και μεθόδων, και στη χρήση τους. Για να γίνει περισσότερο κατανοητό, σε ένα πίνακα βάζουμε ένα τρίτο στοιχείο, μια ομάδα με ένα μόνο μέλος, το τύπος$ (το $ σημαίνει ότι γυρνάει αλφαριθμητικό, στη Μ2000 είναι απαραίτητο). Η κλάση Ζώο έχει και αυτή ένα μέλος τύπος$ και έτσι το κληρονομούν και τα Σκύλος και Γάτα. Έτσι παρόλο που ο πίνακας έχει ανόμοιες ως προς την διεπαφή Ζώο (μπορούμε να την δούμε και ως διεπαφή) ομάδες, με τη χρήση της τύπος$ σε όλες τις ομάδες έχουμε μια κοινή διεπαφή, άρα μπορούμε να χειριστούμε τα διαφορετικά αντικείμενα με μια Αν τύπος$="Ζώο" πριν την κλήση των μεθόδων που σχετίζονται με τις ομάδες που περιέχουν ομάδες όπως Σκύλος και Γάτα.

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

Αυτό που δεν φαίνεται στο παράδειγμα είναι ο τρόπος να βάλουμε ένα αντικείμενο σε ένα άλλο, χωρίς να το συγχωνεύσουμε στο κύριο σώμα του, αλλά σε ένα αντικείμενο εντός του. Μπορούμε να φτιάχνουμε αντικείμενα με αντικείμενα εσωτερικά του.

Επίσης αυτό που δεν φαίνεται στο παράδειγμα είναι η χρήση της Υπερκλάσης, ενός αντικειμένου κοινού σε αντικείμενα. Η υπερκλάση δεν είναι συνάρτηση που γυρνάει ομάδα, αλλά μια ομάδα που δίνει άμεσα την ίδια διεπαφή και μια σύνδεση σε αυτήν ώστε μεταξύ τους ομάδες που φτιάχτηκαν από την ίδια υπερκλάση να έχουν κοινούς πόρους.

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

Σημασία στο πρόγραμμα δεν έχει αν μοιάζει η Μ2000 στην άλφα ή βήτα γλώσσα, αλλά αν μπορεί να γίνει κατανοητό ένα πρόγραμμα με αντικείμενα. Η απλή χρήση αντικειμένων στη Μ2000 είναι με τα μοναδικά αντικείμενα, δηλαδή αντικείμενα στα οποία δεν υπάρχει δεύτερος δείκτης σε αυτά. Μπορούμε να έχουμε δείκτες σε αντικείμενα, αλλά θεωρώ ότι είναι πολύ προχωρημένο θέμα. Στην εγκατάσταση της Μ2000 υπάρχει το info.gsb (στο readme.txt λέει πως το σώνουμε στο φάκελο χρήστη, αφού το φορτώσουμε στο διερμηνευτή), όπου υπάρχει το linked_list τμήμα που είναι ένα παράδειγμα με χρήση ομάδων με δείκτες για την δημιουργία διπλής συνδεδεμένης λίστας. Σε αυτό γίνεται και η χρήση του deconstructor ή remove  { } τμήματος, όπου καλείται αν δεν υπάρχει άλλος δείκτης και εφόσον δοθεί η εντολή καθαρό ή clear σε ένα δείκτη για ομάδα. Γενικά το info.gsb έχει όλα τα τμήματα (εκτός από ένα) με αγγλικές εντολές (η γλώσσα έχει δυο λεξικά εντολών, αγγλικό και ελληνικό).


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

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Μια ιδέα από τη Μ2000.
« Απάντηση #50 στις: 03 Σεπ 2019, 09:58:32 μμ »
Έφτιαξα ένα επτασέλιδο pdf, που δείχνει μέσα στις σελίδες του μια ιδέα από τη Μ2000.
Θα ήθελα τις εντυπώσεις σας!

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Γλώσσα Προγραμματισμού Μ2000 έκδοση 9.8
« Απάντηση #51 στις: 15 Σεπ 2019, 01:06:33 μμ »
Ολοκληρώθηκε η έκδοση 9.8 της Μ2000 (τελική αναθεώρηση 40). Στο παρεχόμενο info.gsb μπήκε και ένα τμήμα ΓΛΩΣΣΑ το οποίο δημιουργεί ένα παραθυρικό διορθωτή της ΓΛΩΣΣΑΣ, με χρωματισμό εντολών και εκτέλεση με κλήση του γλώσσα.exe. Επίσης υπάρχει το τμήμα cs που δημιουργεί έναν παραθυρικό διορθωτή για την c# και μπορούμε από το μενού να επιλέξουμε μετάφραση και εκτέλεση.(στην αρχή μας ζητάει να του υποδείξουμε ποιο .Net framework θέλουμε). Υπάρχει και ο mEditor και αυτός παρόμοιος διορθωτής (editor), για την Μ2000, με ταυτόχρονη εμφάνιση σε ξεχωριστό EditBox βοήθειας για εντολές που επιλέγουμε με απλό κλικ.

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

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Γλώσσα Προγραμματισμού Μ2000 έκδοση 9.8 αναθ. 45
« Απάντηση #52 στις: 24 Σεπ 2019, 12:46:41 μμ »
Έβαλα και άλλα πράγματα όπως το να φαίνεται η τρέχουσα παράγραφος στο EditBox (με αναδίπλωση λέξεων ενεργή χρωματίζονται όλες οι γραμμές της παραγράφου), εφόσον δεν έχουμε επιλέξει κείμενο . Επίσης μπορούμε να επιλέγουμε τα χρώματα που θα εμφανίζει το EditBox στο χρωματισμό κώδικα.
Φτιάχτηκε και διορθωτής για html με εμφάνιση βοήθειας για όλες τις λέξεις της Html5.

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 380
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 9.9 αναθ. 1
« Απάντηση #53 στις: Σήμερα στις 12:10:36 πμ »
Για όποιους τους ενδιαφέρει, έχω ανεβάσει την 9.9 αναθ. 1 και περιλαμβάνει πληθώρα προγραμμάτων, και ορισμένα παιχνίδια όπως:
  • Chessgame: Σκάκι, χωρίς AI, παίζει για δυο παίκτες με όλους τους κανόνες και μπορούμε να πάμε, όπως επίσης μπορούμε να δώσουμε με ένα αλφαριθμητικό κατά Forsyth–Edwards Notation (FEN) την τρέχουσα θέση (κοντά στις 1000 γραμμές κώδικα). Το πρόγραμμα στο τέλος της παρτίδας δίνει στο πρόχειρο όλες τις κινήσεις σε FEN σειρές.
  • Snake: το παιχνίδι φιδάκι, με τέσσερις παίχτες που παίζει μόνο του γραμμένο με ελληνικές εντολές.
  • TTT: τρίλιζα, αυτό έχει AI αλλά ελάχιστες φορές μπορεί να χάσει!
  • Pa15: Παζλ με μπερδεμένα 15 κουτάκια και λείπει το 16ο για να τα μετακινούμε. Είναι κώδικας από Commodore Basic με λίγες αλλαγές.
  • Game: Το παιχνίδι 2048 μόνο με κείμενο.
  • Minesweeper: Ναρκαλιευτής. Μπορούμε εύκολα μέσα από το κώδικα να αλλάξουμε το μέγεθος.
  • Wumpus: Παιχνίδι με μετακίνηση σε δωμάτια όπου το καθένα έχει τρεις πόρτες (εξάγωνη δομή).
  • Pong: Παιχνίδι τύπου Pong με αντίπαλο τον υπολογιστή. Έχει μερικές διαφοροποιήσεις και θέλει συγκέντρωση, γιατί η μπάλα γίνεται γρήγορη καμία φορά.
  • Guess και Guess1: Απλά παιχνίδια για εύρεση ενός αριθμού ανάμεσα σε ένα διάστημα.
  • BJ: Black Jack έως τέσσερις παίχτες με όλους τους κανόνες.
  • KB:Πλήκτρα πιάνου. Παίζει με επιλογή από τρία όργανα, συγχορδίες. Με καλό πληκτρολόγιο παίζει μέχρι και οκτώ νότες μαζί. Οι νότες μπορούν να κρατηθούν με το πλήκτρα, και στο σαξόφωνο πατώντας νέα πλήκτρα προσθέτουμε ήχο! Με το διάστημα δυναμώνουμε την νότα που θα πατηθεί αμέσως μετά. Παίζει και η drum machine, αλλά εκεί καλύτερα να δώσει κάποιος κάποιο σωστό ρυθμό, γιατί εγώ έδωσα ό,τι να είναι, δεν ξέρω μουσική εκτός από τα βασικά.

Εκτός από τα παιχνίδια υπάρχουν και προγράμματα επίδειξης όπως:

  • Demo1: Πρόγραμμα σε παράθυρο με εμφάνιση 3D σχήματος που περιστρέφεται στο χώρο και αλλάζει κάθε τόσο προσανατολισμό. Δουλεύει με την βιβλιοθήκη Math, με μαθηματικά τετραδονίων.
  • Towers: Hanoi Towers. δείχνει τις κινήσεις για τρεις και τέσσερις δίσκους. Η ρουτίνα είναι τέσσερις γραμμές κώδικα.
  • Pend: Pendulum-Εκκρεμές. δείχνει με γραφικά και κίνηση ένα εκκρεμές που κινείται βάσει παραμέτρων βαρύτητας.
  • Textout: Πρόγραμμα φωνητικής ανάγνωσης κειμένου (αγγλικού) με ταυτόχρονη επίδειξη των λέξεων στην οθόνη. Το πρόγραμμα δείχνει την χρήση γεγονότων και χρησιμοποιεί το SAPI το σύστημα των Windows για την ανάγνωση κειμένων.
  • Compiler: Πρόγραμμα 785 γραμμών που περιλαμβάνει Λεκτικό Αναλυτή, Συντακτικό Αναλυτή, Παραγωγή Κώδικα και Εκτέλεση σε Εικονική Μηχανή. Το πρόγραμμα της επίδειξης παράγει ένα γραφικό Mandelbrot με κείμενο αντί για χρώμα.
  • Lisp:Ένας διερμηνευτής της Lisp (υποσυνόλου της γλώσσας, με 300 γραμμές κώδικα).
  • Crypto: RIPEMD-160bit κωδικοποίηση, βγάζει ένα hash αριθμό των 160bit, που είναι μοναδικός για το κείμενο που δίνουμε. Δουλεύει άψογα, αλλά όχι "επαγγελματικά", δηλαδή γρήγορα που γίνεται κανονικά σε γλώσσα μηχανής.
  • LZW: συμπίεση και αποσυμπίεση κειμένου με τον αλγόριθμο LZW.
  • MAZE: Παραγωγή λαβύρινθου με απλό τρόπο
  • MAZE2: Παραγωγή λαβύρινθου με depth-first search, και επίδειξη καθώς το κατασκευάζει. Δουλεύει συνέχεια με διαφορετικά μεγέθη λαβυρίνθων.
  • CAL: Εμφάνιση ημερολογίου με εικόνα textart του Σνούπι. Μπορούμε μέσα από το πρόγραμμα να το ρυθμίσουμε να το τυπώνει (γεμίζει μια Α4 σελίδα), για όσες χρονιές θέλουμε και σε όποια γλώσσα θέλουμε (στο παράδειγμα το δείχνει στα ελληνικά και στα αγγλικά).
Και άλλα πολλά όπως αλγόριθμοι Qsort, Bubble sort, Shell Sort, και ανάγνωση UTF8 αρχείου ανά χαρακτήρα (παίζει να έχει από έναν έως τρεις θέσεις 8bit, για κάθε unicode σε UTF8) (η γλώσσα έχει αυτόματο μετατροπέα, αλλά δουλεύει σε ολόκληρο κείμενο, στο παράδειγμα δείχνει πώς γίνεται ο έλεγχος για να βγουν σωστά οι χαρακτήρες). Επίσης υπάρχουν παραθυρικοί (σε παράθυρο δηλαδή) διορθωτές για την Μ2000 με βοήθεια για κάθε αναγνωριστικό, mEditor, ο διορθωτής της ΓΛΩΣΣΑΣ, ο διορθωτής της C#, cs, και μέσα από αυτόν κάνουμε και compiling, και ο html διορθωτής, htmleditor. Όλοι οι διορθωτές έχουν χρωματισμό κώδικα, και είναι προγράμματα σε Μ2000 με γραφικό περιβάλλον.

Όλα αυτά (και άλλα που δεν αναφέρθηκαν) υπάρχουν σε ένα αρχείο προγράμματος, το info.gsb το οποίο βρίσκεται στο αρχείο εγκατάστασης της γλώσσας. Το αρχείο είναι μεγάλο (20132 γραμμές, 735.596 bytes σε UTF-8 κωδικοποίηση), και γιατί έχει πολύ κώδικα μέσα αλλά και γιατί έχει εικόνες που είναι γραμμένες με Base64 κωδικοποίηση σαν κείμενο. Ο mEditor το φορτώνει σε δευτερόλεπτα και το χρωματίζει κιόλας. Το αρχείο περιλαμβάνει τμήματα και το καθένα είναι είναι πρόγραμμα. Τα φορτώνουμε μια φορά, και αυτό εκτελεί εντολές για να ετοιμάσει κάποια πλήκτρα λειτουργιών (F1 έως F12 και με SHIFT) και να μας δείξει βασικές πληροφορίες. Μπορούμε να δούμε το κώδικα από κάθε τμήμα με το Edit η το Σ (επειδή σχεδόν όλα είναι στα αγγλικά μάλλον το Edit θα παίξει περισσότερο), με χρωματισμό εντολών. Υπάρχει βοήθεια για κάθε αναγνωριστικό της γλώσσας, τα οποία είναι σε δυο γλώσσες, ελληνικά και αγγλικά, και στη βοήθεια  όταν βλέπουμε το ελληνικό μας λέει και για το αγγλικό και μπορούμε με ένα κλικ στο όνομα να ανοίξουμε την βοήθεια στα αγγλικά. Ο προγραμματισμός φορμών δεν είναι στην βοήθεια, αλλά υπάρχουν παραδείγματα, εγχειρίδιο που περιγράφει τα αντικείμενα των φορμών, τις ιδιότητες, τις μεθόδους και τα γεγονότα.

Θέλω εδώ να ευχαριστήσω τον Άλκη για την φιλοξενία. Αυτή η έκδοση είναι η πιο ολοκληρωμένη που έχω φτιάξει. Δηλαδή δεν θα ήθελα κάτι άλλο για την γλώσσα. Υπάρχει μια ιδέα για μια πιο γρήγορη έκδοση με χρήση AST διερμηνευτή, αλλά ήδη όπως είναι για το σκοπό που γράφτηκε η γλώσσα έχει ικανοποιητική ταχύτητα.
Γ.Κ.
« Τελευταία τροποποίηση: Σήμερα στις 12:34:12 πμ από bugman »