Γλώσσα Προγραμματισμού Μ2000 έκδοση 8

Ξεκίνησε από bugman, 24 Ιουλ 2015, 11:59:33 ΜΜ

« προηγούμενο - επόμενο »

bugman

Μετά από 15 χρόνια με μια δεκαετία σε παύση, η γλώσσα Μ2000, (Μαθητής 2000) έφθασε στην έκδοση 8 με χειρισμό αντικειμένων. Οι εντολές είναι σε δύο γλώσσες, ελληνική και αγγλική, όπως και τα μηνύματα λάθους.
Στα πλεονέκτημα της είναι η χρήση κλάσεων, ομάδων, τμημάτων και συναρτήσεων, ρουτινών, νημάτων (για παράλληλη διεργασία), καθώς και ένα ολοκληρωμένο περιβάλλον εκτέλεσης, με γραφικά, 2 διαστάσεων, με καρτεσιανές και πολικές συντεταγμένες, χρήση εικόνων, αρχείων ήχου και βίντεο, χρήση βάσεων δεδομένων και ODBC, χρήση συνθεσάιζερ φωνής και παραγωγή μουσικής με νότες, σε 16 φωνές και 128 όργανα, χρήση σωληνώσεων για δημιουργία πελάτη εξυπηρετητή, και τέλος επικοινωνία με αντικείμενα εφαρμογές όπως το Word και το Excel.
Η γλώσσα Μ2000 είναι γραμμένη σε Visual Basic 6 και δεν χρησιμοποιεί κάποιες ιδιαίτερες βιβλιοθήκες αλλά κοινές του συστήματος. Έχει δε δικό της σύστημα διαλόγων οι οποίοι προσαρμόζωνται στο μέγεθος μαζί με το μέγεθος των γραμμάτων.
Ο κώδικας είναι ανοικτός
Δείτε αναφορές εδώ georgekarras.blogspot.gr

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

bugman

Αυτή την εποχή γράφω το Language Definition στα αγγλικά. Αμέσως μετά θα το γράψω στα Ελληνικά, εφόσον όλες οι εντολές είναι στα ελληνικά.
Για να τρέξει το περιβάλλον της γλώσσας χρειάζονται δυο αρχεία το m2000.exe και το Help2000.mdb. Με την πρώτη εκκίνηση Ctrl+U ή Ρυθμίσεις για να ρυθμίσετε χρώματα και μέγεθος γραμμάτων καθώς και διάστοιχο (line spacing). Θα τα βρείτε στον κώδικα (κατεβαίνουν με zip). Το αρχείο m2000.exe είναι υπογεγραμμένο οπότε δεν υπάρχει θέμα "παραβίασης". Το ca.crt που υπαρχει στο κώδικα μπορεί να χρησιμοποιηθεί ως πιστοποιητικό ρίζας.

Ο κώδικας είναι ανοικτός εδώ και για όσους θέλουν να κάνουν αλλαγές χρειάζονται την Visual Basic 6 Enterprise Εdition και  μια αναφορά στην Idispatch.tlb που περιλαμβάνεται στο κώδικα.
Αυτή τη στιγμή είναι στην έκδοση 8 και αναθεώρηση 18. Προφανώς θα έλθουν και άλλες αναθεωρήσεις. Επίσης το αρχείο Help2000.Mdb εμπλουτίζεται ακόμα (έχει περίπου 400 εντολές σε ελληνικά και αγγλικά και λείπουν ακόμα)



bugman

Παράδειγμα "σκακιέρες"...ή πως να σχηματίσεις σκακιέρα με πιόνια σε τρία μεγέθη στην οθόνη (αυτό δεν μπορεί να το κάνει η ΓΛΩΣΣΑ).

http://georgekarras.blogspot.gr/2015/08/2000_24.html

bugman

Ευχαριστώ τον Alkis, για αυτόν τον χώρο!
Βεβαίως και δεν θέλω να καταχραστώ το χώρο. Και σε καμία περίπτωση να κάνω Pagerank (αυτό δεν το είχα σκεφτεί Alkis...είσαι φοβερός...όλες ιδέες).
Θα αναρτήσω κάτι μόνο αν δω ότι ενδιαφέρει το προσωπικό των δημοτικών-γυμνασίων και λυκείων, ή και μαθητές,  το πεδίο εφαρμογής του Φόρουμ. (Αλλιώς θα λεγόταν το Στέκι της Πληροφορικής)...
Και πάλι ευχαριστώ!


alkisg

Παράθεση από: bugman στις 03 Νοε 2015, 01:47:59 ΜΜ
Ευχαριστώ τον Alkis, για αυτόν τον χώρο!
Βεβαίως και δεν θέλω να καταχραστώ το χώρο. Και σε καμία περίπτωση να κάνω Pagerank (αυτό δεν το είχα σκεφτεί Alkis...είσαι φοβερός...όλες ιδέες).
Θα αναρτήσω κάτι μόνο αν δω ότι ενδιαφέρει το προσωπικό των δημοτικών-γυμνασίων και λυκείων, ή και μαθητές,  το πεδίο εφαρμογής του Φόρουμ. (Αλλιώς θα λεγόταν το Στέκι της Πληροφορικής)...
Και πάλι ευχαριστώ!

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

bugman

Ένα μικρό πρόγραμμα που φτιάχνει τρία καταγραφικά με είσοδο από τρεις ταλαντωτές. Σε κάθε ένα σχηματίζουμε μια ταλάντωση από ένα σχήμα ακολουθώντας την αλλαγή ύψους σε σχέση με καθένα από τα 120 τμήματά του. Δεν υπάρχει γλώσσα με τόσες λίγες γραμμές εντολών να φτιάξουμε κάτι ανάλογο. Είδα και το MicroWorlds το οποίο σαν προτέρημα έχει την χρήση στοιχείων ελέγχου όπως sliders για πέρασμα τιμών, αλλά οι εντολές περιορίζονται μέσα σε μια εκπαιδευτική φόρμα με ελάχιστες δυνατότητες παραμετροποίησης της εξόδου. Σε αντίθεση η Μ2000 όπως φαίνεται και από το παράδειγμα εστιάζει στη διαμόρφωση της οθόνης με πλήρη έλεγχο σε επίπεδο γραφικών. Τα καταγραφικά δουλεύουν με αποθήκευση τμήματος εικόνας και στο επόμενο δέκατο του δευτερολέπτου την επανατοποθετούν κατά ένα βήμα που έχουμε ορίσει, και έτσι πετυχαίνουμε οριζόντια ολίσθηση σε τρία τμήματα στην οθόνη. Αν το δει κανείς πιο τεχνικά, η αποθήκευση εξόδου και η επαναχρησιμοποίησή  της, είναι μια λειτουργία ανάδρασης, με την οθόνη να γίνεται στοιχείο εισόδου. Κάθε νέα εμφάνιση είναι αποτέλεσμα τριών ταλαντωτών και της ανάδρασης της οθόνης.
http://georgekarras.blogspot.com/2015/11/blog-post_10.html

bugman



Από το facebook...(δεν ξέρω αν βγαίνει...το έβαλα δοκιμαστικά).
Αν θέλει κανείς να επικοινωνήσει για θέματα της Μ2000 είμαι εδώ: https://www.facebook.com/Lightmotion

bugman


bugman

Ένα θέμα που σίγουρα θα έχει απασχολήσει καθηγητές πληροφορικής είναι το πώς μπορεί κάποιος να δείξει δυαδικά νούμερα και να τα χειριστεί, π.χ. με ολίσθηση, περιστροφή, να αλλάξει κάποια bit, και επιπλέον να δει τη διαφορά του Sign από τον Unsign ακέραιο
Αυτές γίνονται με εργασίες με δυαδικό εδώ  (και οι μεταβλητές που χρησιμοποιώ είναι πραγματικές, οι συναρτήσεις για το δυαδικό δουλεύουν "λογικά" και όχι άμεσα σε bits στην μνήμη - αφού έχουμε πραγματικούς εδώ)
http://georgekarras.blogspot.gr/2015/12/blog-post_21.html

bugman

Ο κώδικας είναι και στο github. (αλλά τα ελληνικά μου τα χαλάει - κάτι δεν έχω ρυθμίσει μάλλον- πάντως κατεβαίνει κανονικά, τα αρχεία είναι οκ. Κάθε νέα αναθεώρηση θα τη βάζω και εκεί και στο dropbox.

https://github.com/M2000Interpreter/Version8/

bugman

Πιανάκι στη Μ2000 (με κλαβιέ..ζωγραφιστό)
Εδώ είναι η εικόνα: http://4.bp.blogspot.com/-SqXPhDJBOlo/VoLSr2ILqYI/AAAAAAAAD_A/tQ8MNzEhGMI/s1600/piano.png
Παίζει σαν πιάνο, με συγχωρδίες, και εμφανίζει τα πατημένα πλήκτρα στο κλαβιέ. Όταν σηκώνουμε το πλήκτρο απελευθερώνεται η "φωνή"
http://georgekarras.blogspot.gr/2015/12/004.html


bugman

Αναθεώρηση 135.
Ανέβασα και παραδείγματα ένα πολύ δυνατό με πίνακα κατακερματισμού, και ένα με συνδεδεμένη λίστα (όπου μαζί δίνω και ένα αντικείμενο ΜΕΜ που παρέχει Malloc και MFree σε εσωτερική μνήμη για αντικείμενα.

bugman

Αφού έφτιαξα με Μ2000 το αντικείμενο ΜΕΜ που δίνει μια Malloc για αντικείμενα, συμπλήρωσα τα παραδείγματα με ένα δένδρο αναζήτησης (μάλιστα στο ίδιο αντικείμενο "μνήμης" έβαλα δυο δένδρα).

bugman

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

bugman

#14
Οι αναθεωρήσεις σταματούν στην 147..και για την ώρα βγαίνει η 147 ως stable και η 151 δίνεται ως unstable. Χρειάζεται να εξεταστεί και άλλο. Στην 150 άλλαξε εσωτερικά ο τρόπος καταχώρησης, αναζήτησης, διαγραφής..μεταβλητών, πινάκων, τμημάτην, συναρτήσεων, αντικειμένων, με χρήση πινάκων κατακερματισμού. Αν και η σειριακή αναζήτηση για πρόσφατες μεταβλητές είναι γρήγορη, ο τρόπος καταχώρησης στη 147 έχει λογαριθμική απόκριση, ενώ με το πίνακα κατακερματισμού  έχουμε γραμμική.