To 2020 στη CIE2020 παρουσίασα το Προγραμματιστικό Περιβάλλον της Μ2000 στη Πρωτοβάθμια και Δευτεροβάθμια εκπαίδευση.
Προς το παρόν, Δεκέμβριος 2024, δεν γνωρίζω κάποιο σχολείο να έχει χρησιμοποιήσει τη γλώσσα Μ2000. Τι τρέχει με τους καθηητές πρωτοβάθμιας και δευτεροβάθμιας εκπαίδευσης;
Δυστυχώς στο σχολείο έχει περάσει η ιδέα ότι τις γλώσσες προγραμματισμού τις χρησιμοποιούμε στο μάθημα της πληροφορικής. Αυτή είναι μια κακή ιδέα. Ας δούμε την ισιορία των υπολογιστών και των περιβάλλοντων προγραμματισμού, που άλλαξαν τις αντιλήψεις (αλλά όχι στην Ελλάδα).
Στο πανεπιστήμιο του Dartmouth στις ΗΠΑ, ένας καθηγητής και μετέπειτα πρόεδρος του πανεπιστημίου, ο μαθηματικός John G. Kemeny, Ούγγρος μετανάστης στις ΗΠΑ, αποφάσισε κάτι για το οποίο μέχρι τότε ήταν αδιανόητο: Να μπορούν οι προπτυχιακοί φοιτητές να χρησιμοποιούν ελεύθερα (για οποιαδήποτε χρήση) υπολογιστή του πανεπιστημίου (αυτό δεν φαντάζει κάτι δύσκολο τώρα αλλά όχι τότε).
Μέχρι να μπει η ιδέα του σε κίνηση, όλοι οι υπολογιστές παγκοσμίως ήταν για ειδικούς. Και αυτό γιατί ένας υπολογιστής ήταν ένα πράγμα σε όγκο δωματιών αν όχι δωματίου, και εκτελούσε ένα πρόγραμμα κάθε φορά! Ποιος θα ήταν ο τυχερός να τρέξει το πρόγραμμά του; Σίγουρα λίγοι είχαν το δικαίωμα να "τρέξουν" κάτι. Μάλιστα για να τρέξει το πρόγραμμα έπαιρνε σειρά, ανάμεσα σε άλλα που μπορεί να ήθελαν μέρες για εκτέλεση! Έτσι αν υπήρχε λάθος, γίνονταν αλλαγές και πάλι αναμονή ημερών για να δουν αν τελικά θα βγει κάτι! Τα προγράμματα γράφονταν στο χέρι και δίνονταν σε ενα χειριστή καρτών για να παράξει τις κάρτες (punch cards) που δίνονταν για πέρασμα του προγράμματος για εκτέλεση. Αυτά γίνονταν με γλώσσες προγραμματισμού όπως Fortran, Cobol , ALGOL, καθώς και Asssembly.
Το πρώτο πράγμα που έκανε στο Dartmouth ο καθηγητής ήταν να βρει το κατάλληλο εργαλείο (hardware), το οποίο φυσικά δεν είχε το λογισμικό που θα ήθελε, αλλά θα μπορούσε να γραφτεί. Η ιδέα του Time Sharing ανήκει σε έναν συνεργάτη του, αλλά σημασία έχει ότι στο πανεπιστήμιο αυτό γράφτηκε το πρώτο σύστημα διαμοιρασμού χρόνου επεξεργασίας προγραμμάτων. Τα προγράμματα έτρεχαν "ταυτόχρονα" κατά την άποψη των χρηστών - των προπτυχιακών φοιτητών. Κατά το σύστημα, τα προγράμματα έτρεχαν σε διαδοχικά "μοιράσματα" του επεξεργαστή με συνέπεια τα προγράμματα να τελειώνουν σαν να έτρεχαν "παράλληλα".
Το δεύτερο πράγμα λοιπόν ήταν το DTSS (Dartmouth Time-Sharing System) από το οποίο πέρασε και σε όλο το κόσμο. Ο σπουδαστής έγραφε σε ένα τερματικό (όχι με κάρτες πια), απομακρυσμένα, δεν έβλεπε ποτέ τον υπολογιστή! Επίσης δεν υπήρχε οθόνη, αλλά εκτυπωτής (teleprinter) που έρχονταν και η απάντηση από τον υπολογιστή (δεκαετία του 1960)! Ο υπολογιστής στοίχιζε $4.2 εκατομμύρια (δολάρια σε τιμές του 2022), το τερματικό ήταν σαφώς "μηδαμινής" αξίας. Ο εκτυπωτής μοντέλο 33 (1963) είχε το σύστημα συμβόλων ASCII αυτό που επικράτησε και στους μικροϋπολογιστές και στα PC, και ακόμα και σήμερα το A το αγγλικό έχει το νούμερο 65 όπως στο ASCII, και όλα τα αγγλικά γράμματα έχουν το ίδιο νούμερο σε όλα τα συστήματα κωδικοποίησης γραμμάτων των υπολογιστών, που φτιάχτηκαν μετά το ASCII!
Πώς βρέθηκαν τα λεφτά για τον υπολογιστή; Ο Καθηγητής Kemeny ήταν τόσο καλός που πήρε βραβείο το 1959 από το Alfred P. Sloan Foundation, με σκοπό να φτιαχτεί ένα νέο τμήμα! Έτσι ξεκίνησε να ψάχνει και για τον υπολογιστή αλλά και για τους συνεργάτες του νέου τμήματος
Η γλώσσα που γράφτηκε για τους φοιτητές θα έπρεπε να ήθελε το λιγότερο δυνατό χρόνο εκμάθησης. που εν τέλει ήταν τρεις ώρες. Ακριβώς τρεις ώρες χρειάζονταν για να μάθει κανείς τις εντολές τις BASIC. Αν έβαζαν την FORTRAN θα χρειάζονταν τουλάχιστον μια βδομάδα και αυτό θεωρήθηκε υπερβολικό και κάτι που θα έδιωχνε τους πιθανούς χρήστες μιας πιο εύκολης γλώσσας. Επίσης είχαν φτάσει σε σημείο να έχουν έναν compiler (μεταφραστή προγράμματος σε γλώσσα μηχανής) για ALGOL 30 που μπορούσε να δώσει πρόγραμμα πολύ γρήγορα (με το πέρασμα και της τελευταίας κάρτας). Και πάλι όμως ήθελαν κάτι πιο απλό, και ξεκίνησαν το πρόγραμμα DOPE (Dartmouth Oversimplified Programming Experiment), το οποίο έβαλε αριθμούς γραμμών στις εντολές! Για ένα εξάμηνο εξετάστηκε με μια ομάδα φοιτητών, και θεωρήθηκε σωστό βήμα και έτσι προέκυψε η BASIC.
Ο καθηγητής Kemeny είχε πει για την BASIC :“Το όραμά μας ήταν ότι κάθε φοιτητής στην πανεπιστημιούπολη θα πρέπει να έχει πρόσβαση σε έναν υπολογιστή και κάθε μέλος ΔΕΠ θα πρέπει να μπορεί να χρησιμοποιεί έναν υπολογιστή στην τάξη όποτε είναι απαραίτητο. Ήταν τόσο απλό.”
Οι φοιτητές χρησιμοποιούσαν τη γλώσσα BASIC για να κάνουν υπολογισμούς πάνω σε δεδομένα, δεν έφτιαχναν κάποιον ειδικό αλγόριθμο όπως για παράδειγμα της ταξινόμησης. Προφανώς αν ήθελαν ταξινόμηση θα έβρισκαν από κάπου έναν αλγόριθμο και θα τον έβαζαν στο πρόγραμμά τους. Το πρόγραμμα δηλαδή είναι ένα εργαλείο που ρυθμίζει τον υπολογιστή για το πώς θα επεξαργαστεί κάποια δεδομένα, ή με άλλη σύνταξη πρότασης ο σπουδαστής επεξεργάζεται στοιχεία με πρόγραμμα που συντάσει σε μια γλώσσα και τα προωθεί (στοιχεία και πρόγραμμα) στο περιβάλλον εκτέλεσης, τον υπολογιστή.
Την εποχή που σπούδαζα, 1985-1989, η Basic ήταν η βασική γλώσσα. Βέβαια κανείς καθηγητής δεν ζήτησε να δουλέψουμε για το δικό του μάθημα με υπολογιστή. Ίσως ήμουν από τους ελάχιστους σπουδαστές που στην πτυχιακή παρέδωσε πρόγραμμα (Επεξεργαστής Στοιχείων), για τη συλλογή και επεξεργασία στοιχείων με εκτυπωσεις πινάκων και ιστογράμματα, γραμμένο σε BBC BASIC σε 32kbyte μηχάνημα με 2 floppy disk 5 1/4'' των 100kb σε κάθε πλευρά - έπρεπε να βγάλει κανείς το δίσκο και να τον βάλει ανάποδα, για να βρει τα άλλα 100kbyte. Το πρόγραμμα για να τρέξει έπρεπε να το σπάσω σε μέρη, και μέσα από ένα drop down menu (τα είχα φτιάξει να δουλεύουν με τα πλήκτρα) ανάλογα με την επιλογή γίνονταν αν χρειάζονταν κατέβασμα από το δίσκο, ως επικάλυψη (overlay) πάνω στo κώδικα του προγράμματος, σε καθορισμένο σημείο για να μην χαλάει την συνδεδεδμένη λίστα των εντολών του προγράμματος. Για να βρω μνήμη, έπρεπε να αναπρογραμματίσω το 6845 τσιπάκι CRT Controler, για να λιγοστέψω τις γραμμές και να τις κεντράρω, κερδίζοντας 2kbyte ram. Το αρχείο στοιχείων ήταν δυαδικό, (γράφονταν από το δίσκο απευθείας στη μνήμη με μια ανάγνωση) και ήταν με ακέραιους αριθμούς (ενώ εμφανίζονταν ως πραγματικοί με σταθερή υποδιαστολή, πχ στη τέταρτη θέση με τρία δεκαδικά, δηλαδή το 1005 αντιστοιχούσε στο 1,005 τη μονάδα) με πέντε χιλιοστά). Οι ακέραιοι ήθελαν 4bytes, ενώ οι πραγματικοί ήθελαν 5 (40bit πραγματικοί). Αυτοί οι πραγματικοί ήταν καλύτεροι από τους σημερινούς single των 4 bytes, αλλά χειρότεροι από τους double των 8byte που χειρίζεται και ο μαθηματικός συνεπεξεργαστής της κεντρικής μονάδας, ή |CPU. Όμως με τους ακέραιους είδα και το πρόβλημα των πραγματικών, δηλαδή καταχωρόντας έναν δεκαδικό μπορεί να αλλάξουν τα δεκαδικά του από αυτά που βλέπουμε κατά την καταχώρηση. Οπότε έφτιαξα μια δική μου ρουτίνα εισαγωγής για σταθερή υποδιαστολή (έτσι δεν έπαιρνα πραγματικό αλλά ακέραιο, σε χαρακτήρες, όπου η μετατροπή σε δυαδικό δεν είχε πρόβλημα).
Επειδή έκανα πρακτική και πτυχιακή στη σχολή, δηλαδή με πλήρωναν για έξι μήνες εργασία, μου έδωσαν και άλλα προγράμματα ως παραγγελία όπως ένα για Γραμμική Παλινδρόμηση (όρος στατιστικής), ή στα αγγλικά Linear Regression Analysis, όπου για ένα σύνολο Χ και Υ στοιχείων το πρόγραμμα φτιάχνει ένα διάγραμμα και εμφανίζει τα σημεία (Xi, Yi) και μια ευθεία που διέρχεται από τα σημεία όπως προκύπτει από την ανάλυση, παρουσιάζοντας τις σταθερές του "μοντέλου" της ευθείας, b και c, όπου f(x)=y, f(x)=x*b+c. Δεν έχω σπουδάσει πληροφορική, είμαι αυτοδίδακτος (υπάρχει και αυτό...). Στη σχολή τα προγράμματα που έβαζαν ήταν για "νήπια" και όχι για προχωρημένους όπως εγώ (επειδή είχα υπολογιστή και το χόμπυ μου ήταν να αγοράζω βιβλία και να μεταγράφω προγράμματα στο δικό μου υπολογιστή κάνοντας διάφορες αλλαγές). Μάθαινα δηλαδή γράφοντας αυτά που έχουν γράψει άλλοι και δοκιμάζοντας ιδέες!
Πώς έγινε τώρα και εξαφανίστηκε η BASIC; Η Basic μετά την επινόηση και την εισαγωγή της στην εκπαίδευση από το Dartmouth, δεν έγινε πατέντα, δηλαδή μπορούσε οποιοσδήποτε να γράψει το δικό του μεταφραστή (compiler, εκτέλεση σε κώδικα μηχανής) ή διερμηνευτή (interpreter, εκτέλεση ως έχει). Μια από τις εταιρείες που έφτιαξαν σε 4kbyte μνήμη διερμηνευτή της BASIC ήταν η Microsoft. Η γλώσσα που συνέγραψαν οι ιδρυτές της Microsoft,, το 1975, ήταν η Altair Basic των 4kbyte μνήμης χωρίς χρήση αλφαριθμητικών αλλά με χρήση 32bit πραγματικών (floating point), Είχε τις παρακάτω εντολές:
LIST, NEW, PRINT, INPUT, IF...THEN, FOR...NEXT, SQR, RND, SIN, LET, USR, DATA, READ, REM, CLEAR, STOP, TAB, RESTORE, ABS, END, INT, RETURN, STEP, GOTO, and GOSUB
Η γλώσσα γράφτηκε σε εξομοιωτή του 8080 σε μεγάλο υπολογιστή PDP-10 το πρόγραμμα έβγαινε σε τρυπιτή χαρτοταινία για τον Altair 8800. Σημειώστε ότι και αυτός ο υπολογιστής χρειάζονταν έναν teleprinter, διαφορετικά είχε κάποιους διακόπτεε και λαμπάκια (δεν υπήρχαν led εκείνη την εποχή). Επίσης οι μεταβλητές μπορούσαν να έχουν ένα από τα 26 γράμματα και το πολύ έναν αριθμό από 0 έως 9, δηλαδή το πολύ 286 μεταβλητές.
Στα 8kbyte μπήκαν και τα αλφαριθμητικά (οι μςταβλητές είχαν το $ στο τέλος του ονόματος) και συναρτήσεις για αλφαριθμητικά. Σημειώστε ότι η ΓΛΩΣΣΑ που μαθαίνουν τα παιδιά του Λυκείου στην Ελλάδα το 2024 δεν έχει συναρτήσεις αλφαριθμητικών (δεν τις έχουν βρει ακόμα χρήσιμες). Ψάξτε εδώ να βρείτε...
Στα 12Kbyte ήρθε η Extended BASIC, μπηκε το IF THEN ELSE (είχε και το αλλιώς δηλαδή), με 16bit ακέραιους (είχαν το %), signle (πραγματικοί με 32bit) και double (πραγματικοί με 64bit).
O BBC Model B, που δούλευα στη σχολή είχε 16Kbyte για τη γλώσσα και 16Kbyte για το λειτουργικό σύστημα, και 32 kbyte Ram, δηλαδή σύνολο 64Kbyte, όσο και η μέγιστη μνήμη για τη CPU (MOS 6502 8bit). Στη σχολή υπήρχαν XT και AT υπολογιστές IBM, αλλά δεν είχαν μια γλώσσα για να εμφανίζει γραφικά (και δεν είχαν κάρτα γραφικών, για bitmap γραφικά, δηλαδή να σχεδιάζει κανείς, ενώ ο BBC είχε γραφικά, μπορούσες με εντολές MOVE και DRAW να σχεδιάζεις γραμμές).
Η BBC Basic, είχε το Repeat Until, τiς διαδικασίες χρήστη (Procedures) και τις συναρτήσεις χρήστη (Functions) και μπορούσε κανείς να γράψει πρόγραμμα χωρίς να χρειάζεται αριθμούς γραμμών. Αν και είχε υποχρωτικά για τον διορθωτή, επειδή έπρεπε να δηλώσεις τον αριθμό γραμμής για εισαγωγή γραμμής εντολής ή για αλλαγή γραμμής εντολής. Υπήρχε και η GOTO και η GOSUB για συμβατότητα με την BASIC.
Από το 1990 άλλαξε η κατάσταση και τα 16bit μηχανήματα εξαφάνισαν τα 8bit. Εκείνη την εποχή η Pascal (Turbo Pascal) και η Basic (QuickBasic) χρησιμοποιήθηκαν περισσότερο (οι C και C++ ήταν για λίγους). Από το 1995 με τα Windows 95 εξαφανίστηκαν οι μη "συμβατοί" υπολογιστές με αξιόλογες BASIC οπως GFA Basic (Atari STE και Amiga αλλά και MSDOS και Windows), STOS BASIC (επίσης για Atari και Amiga, προορισμένη για να φτιαχνει κανείς παιχνίδια).
Το 1996 το MS Office πακέτο προγραμμάτων διέθετε αστα προγράμματα Word και Excel μια BASIC για να χειρίζεται κανείς την "αυτοματοποίηση" των προγραμμάτων. Το 1998 ήρθε η Visual Basic 5 και λίγο μετά η 6 και τελείωσε το θέμα των γλωσσών! Υπήρχαν τρεις: Visual Basic, Delphi (συνέχεια της Turbo Pascal), Clipper (γλώσσα και μεταφραστής που χειρίζονταν αρχεία της dBase III).
Κάπου εκεί το 1999 είχα την ιδέα να φτιάξω την Μ2000, μια γλώσσα δωρεάν με δυνατότητες για γραφικά, βάσεις δεδομένων και πολυμέσα (βίντο, ήχος, εικόνες/φωτογραφίες). Το 2003 ήταν έτοιμη η γλώσσα με όλες τις δυνατότητες, όχι ιδιαίτερα γρήγορη αλλά για να εκτελεί προγράμματα που σχετίζονταν με αυτές τις τρεις δυνατότητες, ήταν πολύ καλή (πχ η περιστροφή εικόνας σε οποιεσδήποτε μοίρες γίνονταν με εσωτερική ρουτίνα σε γλώσσα μηχανής πολύ γρήγορα). Υπήρχουν 32 παίκτες ή players (εικόνες με διάφανα σημεία για να μετακινούνται χωρίς να βρίσκονται όντως στη μνήμη που προβάλλονταν στο φόντο, αλλά σε ξεχωριστά σημεία όπου το λειτουργικό σύστημα τα έβαζε πάνω στο φόντο). Επίσης μπορούμε να φτιάχνουμε διαφάνειες με ποσοστό διαφάνειας (πάνω στο φόντο, είναι τα software sprites). Εκτός από αυτά που αρχικά βάλθηκαν ως στόχος μπήκαν και τα νήματα threads και η εντολή Κάθε η Every (την είχε η STOS BASIC) που εκτελεί ένα μπλοκ κώδικα κάθε Χ msec.
Μετά το 2003 και μέχρι το 2013, είχα παρατήσει τη γλώσσα γιατί νόμιζα ότι επειδή το περιβάλλον γράφτηκε σε Visual Basic 5 δεν θα μπορέσει να τρέξει σε νεότερα συστήματα. Μπόρεσα όμως να την εντάξω στη Visual Basic 6 και να την αναβαθμίσω σε Unicode (τα αρχεία της γλώσσας gsb -geroge small basic- γράφονται σε UTF8 Unicode τύπο, από ANSI 8bit). Επίσης αναβάθμισα τον διορθωτή της γλώσσας από ένα textbox με μέγιστο 32kbyte κείμενο, σε όσο θέλουμε με δικό μου επεξεργαστή κειμένου! Επειδή ο επεξεργαστή κειμένου βασίστηκε σε ένα στοιχείο ελέγχου χρήστη (user control) για τις φόρμες της Visual Basic, που το έφτιαξα από το μηδέν, μπόρεσα να του φτιάξω ένα σύστημα χρωματιμού (τo textBox ήταν δίχρωμο, με χρώμα γραμμάτων και φόντου). Αυτό που έφτιαξα "ζωγραφίζει¨" πάνω στον καμβά του στοιχείου όπως θέλω. Έφτιαξα δικά μου textbox, editbox, checkbox, listbox, button και για τις ιδιαίτερες φόρμες της Μ2000, όπως για γραμματοσειρές, για φακέλους, για αρχεία, για χρώματα και για μηνύματα (messagebox) και μικρές εισαγωγές (inputbox). Αναβάθμισα τη γλώσσα για να μπορεί να παίρνει τα γεγονότα από τις φόρμες χρήστη και από τα στοιχεία που βάζει πάνω. Γενικά αναβαθμίστηκε αρκετά η γλώσσα όταν ο τρόπος εύρεσης μιας εντολής έγινε με συνάρτηση Hash και HashTable. Οπότε τα 500+ αναγνωριστικά Ελληνικά και άλλα τόσα Ελληνικά βρίσκονται σε O(1) χρόνο. Ο χρωματισμός των γραμμών εντολών γίνεται υπερβολικά γρήγορα επειδή αφενός βρίσκει τα ονόματα με πίνακα κατακερματισμού (hash table) και αφετέρου γράφει τα στοιχεία χρώματος σε πίνακα δίπλα από κάθε παράγραφο και ακόμα και αν έχουμε ενεργή την αναδίπλωση παραγράφων το σύστημα βρίσκει σε χρόνο μηδέν το πώς θα χρωματίσει το κείμενο! Στο Editbox το σύστημα χρωματισμού προγραμματίζεται δείτε στο Info τα προγράμματα όπως το MEditor, cs, htmleditor, Γλώσσα που ανοίγουν αντίστοιχα διορθωτές σε παράθυρο για Μ2000 γλώσσα, C Sharp, Html, και τη Γλώσσα του λυκείου).
Εκτός από τα γραφικά (GUI) μπήκαν και όλα τα σχετικά με το OOP, Έτσι με τη Μ2000 μπορούμε να φτιάξουμε προγράμματα που χρησιμοποιούν αντικείμενα.
Στη τελική έκδοση 12, το $ στα αλφαριθμητικά μπορεί να μην χρησιμοποιηθεί (αν και οι έτοιμες συναρτήσεις αλφαριθμητικών το έχουν, όπως και οι μεταβλητές τυπου έγγραφο, που είναι δομές που χειρίζεται ο διορθωτής κειμένου).
Για τη χρήση αντικειμένων υπάρχει βιβλίο:
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΤΗ Μ2000
Για το όνομα: χρησιμοποιώ το αντικειμενοστραφής για το προγραμματισμό, ως σύστημα, ως προγραμματιστικό παραδειγμα, είναι κάτι που έχει γίνει, δηλώνει κατάσταση, και αντικειμενοστρεφής για τη διαδικασία του προγραμματισμού του χρήση, είναι κάτι που κάνει, δηλώνει ενέργεια. Γενικά πολλοί το λένε με τον ένα ή τον άλλο τρόπο ενώ κατά τη γώμη μου όταν κάτι ΕΧΕΙ, όπως η Μ2000 είναι αντικειμενοστραφής προγραμματισμός ενώ όταν κάτι ΕΙΝΑΙ τότε είναι αντικειμενοστρεφής προγραμματισμός, όπως είναι η δουλειά του προγραμματισμού.
Η Μ2000 δεν παράγει ενδιάμεσο κώδικα, ούτε τελικό. Δεν παράγει κάτι άλλο εκτός από το να εκτελεί κώδικα με κλήση συναρτήσεων. Όλο το πρόγραμμα εσωτερικά είναι μια σειρά συνερτήσεεων, για τις οποίες αποφασίζει η πρώτη που εκτελεί το πρόγραμμα! Τελειώνει το πρόγραμμα όταν τελειώσει η πρώτη στην εκτέλεση συνάρτηση. Θα μπορούσε κανείς να πει ότι κάθε εκτέλση θα δώσει το ίδιο αποτέλεσμα; Όχι ακριβώς επειδή κατά την εκτέλεση μπορεί να συμβαίνουν: Το περιβάλλον της Μ2000 όπως ο τύπος των γραμμάτων, ο αριθμός στηλών στην κάθε γραμμή, τα χρώματα, καθώς και τα τυχόν αρχεία που θα χρησιοποιήσει το πρόγραμμα, ή και τις διάφορες άλλες εισαγωγές θα αλλάξουν το αποτέλεσμα του προγράμματος. Αυτό που θέλουμε όμως από ένα πρόγραμμα είναι να έχει την προβλεπόμενη απόδοση για όλα αυτά που αλλάζουν οποτεδήποτε αλλάζουν! Η δυσκολία στο προγραμματισμού είναι ακριβώς εκεί που πρέπει να δούμε τι μπορεί να αλλάξει και μας αλλάξει την συμπεριφορά του προγράμματος! Απλό παράδειγμα. Αν δεν βάλουμε μια εντολή με το χρώμα γραμμάτων και φόντου όπως το θέλουμε τότε το πρόγραμμα θα τρέξει με ό,τι βρει. Αν βρει μαύρο στα γράμματα και μαύρο στο φόντο δεν θα δούμε τίποτα! Δεν μπορούμε να διαβάσουμε τίποτα, γιατί το πρόγραμμα θα εμφανίζει μαύρα γράμματα σε μαύρο φόντο, άρα τίποτα, όλα θα είναι μαύρα! Το ανάλογο στην οδήγηση είναι να μπεις στο αυτοκίνητο και να κάνεις όπισθεν χωρίς να βλέπεις. Κάποια στιγμή θα πατήσεις κάποιον, ή θα σπάσεις το αυτοκίνητο πάνω σε κάποιο άλλο. Ο προγραμματιστής που μαθαίνει είναι σαν να οδηγεί με τα μάτια κλειστά!
Μπορούμε να μάθουμε προγραμματισμό με μικρά βήματα αλλά όχι αργά. Μικρά και μετά λίγο πιο μεγάλα!
Έχω φτιάξει βιβλίο για να μπει κάποιος στον προγραμματισμό με ενδιαφέρον τρόπο:
Και τα δυο αρχεία pdf που αναφέρθηκαν εδώ περιέχουν και το odt αρχείο, και το βλέπουμε αυτό αν τα ανοίξουμε στο LibreOffice,
Στο αρχείο εγκατάστασης του περιβάλλοντος της Μ2000 υπάρχουν δυο βιβλία, ένα στα αγγλικά και ένα στα Ελληνικά με περισσότερα στοιχεία για τη γλώσσα (προς το παρόν είναι έκδοσης του 2023, αλλά ετοιμάζω πιο νέο).
Υπάρχει ένα wiki στο github:
Υπάρχουν 480 αναφορές σε προγράμματα/Task της Μ2000 στο rosettacode.org
M2000 Interpreter at Rosettacode.org
Επίσης υπάρχουν παραδείγματα και εδώ σε αυτό το χώρο:
Εγχειρίδιο της Μ2000 (Τεύχη 1-35)
Τέλος είναι πιο εύκολο να δείξουμε σε ένα παιδί ένα πρόγραμμα τριών γραμμών που μετράει από το ένα μέχρι το δέκα:
Για ι=1 έως 10Τύπωσε ιΕπόμενο ι
ανοίγοντας το περιβάλλον, γράφοντας Σ Α, και πατάμε enter θα ανοίξει ο διορθωτής και θα γράψουμε τα παραπάνω (ή θα τα αντιγράψουμε από εδώ) και με Esc γυρνάμε στη γραμμή εντολών και γράφουμε Α και πατάμε enter.
Του δείχνουμε πως το σώνουμε:
Σώσε πρώτο
Του δείχνουμε πως καθαρίζουμε:
Αρχή
Τώρα του δείχνουμε πως φορτώνουμε
Φόρτωσε πρώτο
και πως το τρέχουμε
Α
Αν θέλουμε να φτιάξουμε μια παραλλαγή τότε γράφουμε Σ Α πατάμε enter και αντιγράφουμε το πρόγραμμα με ctrl +A και μετά ctrl+C μετά πατάμε Esc και γράφουμε Σ Α1 και φτιάχνουμε το τμήμα Α1 με επικόλληση με ctrl+V, αλλάζουμε το κώδικα πχ βάζουμε 100 αντί για 10 και πατάμε Εsc
Τώρα από τη γραμμή εντολών πατάμε το Ctrl+A και αυτόματα σώνουμε όλα τα τμήματα στο όνομα που φορτώσαμε (μας ρωτάει το περιβάλλον αν θέλουμε να γράψουμε πάνω στο παλιό και λέμε ναι). Μετά γράφουμε Α1 και πατάμε enter και τρέχουμε το νέο τμήμα.
Από τη γραμμή εντολών τα Ctrl+M και τα Ctrl+N εμφανίζουν τα τμήματα στη μνήμη και από τα δυο μέρη (μνήμη και δίσκο). (εντολές Τμήματα ? και Τμήματα)
Γράφουμε Τέλος και τερματίζει το περιβάλλον!
Όπως φάνηκε από τα παραπάνω απλές εντολέ Σ (συγγραφή), Αρχή, Σώσε, Φόρτωσε, Τμήματα και Τέλος είναι όσα χρειάζεται κανεις να ξέρει για το περιβάλλον. Οι τόνοι δεν έχουν σημασία, τα μικρά μεγάλα δεν έχουν σημασία (μπορεί να γράψει τις λέξεις με κεφαλαία). Έτσι το παιδί που θα ασχοληθεί δεν θα κουραστεί να γράψει απλές ελληνικές λέξεις!
Η τύπωσε που τυπώνει αριθμούς, γράμματα και αποτελέσματα εκφράσεων μπορεί να γραφτεί με αγγλικό ερωτηματικό ?
Επίσης μπορούμε να φτιάξουμε μεταβλητέε άμεσα στη γραμμή εντολών και με το Λίστα να δούμε τις μεταβλητές και τις τιμές τους!
Μπορούμε να τρέξουμε το τμήμα Α με τη Δοκιμή Α και να πατάμετ Επόμενο σε μια φόρμα που μας δείχνει την εκτέλεση βήμα προς βήμα!
Η εμφάνιση ΠΕΡΙΒΑΛΛΟΝ Μ2000 μπορεί να φύγει με το Οθόνη , 0 (το κόμμα λέει ότι δεν αλλάζουμε το χρώμα φόντου και το 0 λέει ότι θέλουμε να καθαρίσει από τη πρώτη γραμμή, πηγαίνοντας στη πρώτη γραμμή τη χωριστή οθόνη, δηλαδή δεν θα έχουμε χωριστή οθόνη. Εξ ορισμού έχουμε χωριστή οθόνη και για το λόγο αυτό δεν φεύγουν οι γραμμές που δείχνουν διάφορα για το περιβάλλον, όπως ότι τρέχει σε Windows 11.
Το Οθόνη 0, 0 βάζει το μαύρο για φόντο. Μπορούμε να ρυθμισουμε το περιβάλλον με το Ρυθμίσεις (ή με το ctrl+U από το περιβάλλον). Βλέπουμε τη προεπισκόπηση UNICODE. Η Ansi υπάρχει σε περίπτωση που χρησιμοποιησουμε μια μη Unicode γραμματοσειρά (πράγμα που δεν υπάρχουν σε νέα λειτουργικά, αλλά η Μ2000 τρέχει από XP οπότε σε αυτά μπορεί να βρεθεί κάποια).
Οι ρυθμίσεις δεν έχουν πολλά χρώματα για το φόντο. Αλλά μπορούμε να δώσουμε οποιοδήποτε χρώμα με τη Οθόνη για παράδειγμα με το Χρώμα(255, 255, 255) δίνουμε τιμές στο κόκκινο, πράσινο και μπλε το 255 (βάζουμε τιμές από το 0 έως το 255)., το άσπρο είναι το 255, 255, 255. Τα χρώματα από το 0 έως το 15 είναι τα στανταρ των Windows. Η συνάρτηση Χρώμα() γυρίζει αρνητικό αριθμό (είναι τιμή RGB). To μαύρο και στις δυο περιπτώσεις είναι η τιμή 0. Υπάρχει και ο τρόπος της Html, πχ το #00FF00 είναι το πράσινο με τιμή 255 (δεκαεξαδικό 0xFF ή &hFF), πρέπει μετά το # να ακολουθουν έξι χαρακτήρες απο 0 έως 9 ή από A έως F ο καθένας.
Η Μ2000 εξάγει στο πρόχειρο το πρόγραμμα και σαν κείμενο και σαν html (με κωδικούς χρωμάτων) και έτσι μπορούμε εδώ να ενσωματώσουμε κώδικα με χρώμα. Αν υπάρχει στο κείμενο το tab τότε το εξάγει σαν html με ειδικό τρόπο ώστε να μην χαθεί το tab. To tab στον διορθωτή αλλάζει με το Σ ! 4 μπαίνει πλάτος 4 χαρακτήρες, ενώ στην εμφάνιση με την εντολή Αναφορά (για κείμενο φορμαρισμένο με πλήρη στοίχιση) με το Αναφορά ! 4 γίνεται 4 χαρακτήρες. Οι στήλες στην Print ή Τύπωσε ή ? αλλάζουνε με διαφορετικό τρόπο, ενώ το TAB εμφανίζεται όπως όλα τα στοιχεία από το 0 έως το 31 με έναν χαρακτήρα που δηλώνει τι είναι, και στο TAB, ειναι το ␉ και έχει τα γράμματα HT που σημαίνει Horizontal Tabulation. Ο χαρακτήρας 7 στο ASCII είναι το BELL, και εμφανίζεται ως ␇ και κάνει ήχο όπως το κουδούνι! Δοκιμάστε το ? χαρ$(7) ή και το ? χαρκωδ$(7). Το χαρ$() γυρίζει το ASCII (δουλεύει από 0 έως 255) και το χαρκωδ$() δουλεύει για unicode και μπορεί να γυρίσει 4 bytes, πχ το χαρκωδ$(66615) δίνει αυτό 𐐷 το οποιο ανήκει στα surrogates του UTF16LE όπου με δυο θέσεις χαρακτήρων των 16bit γράφεται ένας χαρακτηρας με αριθμό πάνω από 65535.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
You can feel free to write any suggestion, or idea on the subject.