Προς το περιεχόμενο
  • 0

Ενημέρωση για τη Μ2000 (Γλώσσα προγραμματισμού)


M2000

Ερώτηση

Δημοσ. (επεξεργασμένο)

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

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

Για να τρέξει το περιβάλλον χρειάζεται μόνο ένα αρχείο το m2000.exe (το οποίο είναι υπογεγραμμένο, και υπάρχει και το ca.crt ως ριζικό αρχείο αν θέλει κανείς να ενημερώσει τα windows για την υπογραφή). Όμως καλό είναι να υπάρχει μαζί το helpM2000.mdb το αρχείο με την βοήθεια στα Ελληνικά και Αγγλικά.

 

Έχω Blog στο οποίω δημοσιεύω προγράμματα που τρέχουν στο περιβάλλον της γλώσσας

georgekarras   blogspot gr (δεν το βάζω με σύνδεση για να μην κάνω referral link στο blog μου).

Τα παραπάνω αρχεία και ο κώδικας της γλώσσας (σε visual basic 6) παρέχονται μαζί σε φάκελο από το Dropbox (όπου μπαίνουν οι νέες αναθεωρήσεις). Το φάκελο αυτό το βρίσκουμε από το "Κώδικας Γλώσσας" στη σελίδα στο blog.

 

Λίγα λόγια για τη γλώσσα:

Η γλώσσα είναι διερμηνευτής που τρέχει σε δικό του περιβάλλον. Τα αρχεία που χρησιμοποιεί είναι αρχεία κειμένου σε Utf8. Όλες οι εντολές είναι και σε αγγλικά και σε ελληνικά. Η γλώσσα δεν είναι wrapper μιας άλλης γλώσσας, αλλά είναι πρωτότυπη, δηλαδή έχει στοιχεία που δεν έχουν άλλες γλώσσες (όπως και το ανάποδο, δεν έχει στοιχεία που έχουν άλλες γλώσσες). Αυτό που σίγουρα έχει είναι ότι πλησιάζει το 99% της Basic, Ενώ η Basic δεν φτάνει ούτε το 20% από την Μ2000. Και αυτό γιατί η Μ2000 έχει αντικείμενα, που η Basic δεν έχει (τέτοια αντικείμενα δεν έχει ούτε η VB6 στην οποία έχει γραφτεί η γλώσσα).

Υπάρχουν όρια στην απόδοση, όπως για παράδειγμα οι συναρτήσεις δεν μπορούν να περάσουν τις 128 συνεχόμενες κλήσεις στην αναδρομή, ενώ οι ρουτίνες μπορούν να έχουν όσο θέλουμε (βάζουμε όμως όριο αν θέλουμε). Ένα άλλο όριο είναι ότι πίνακες μπορούν να έχουν μέχρι δέκα διαστάσεις (αρκετές πιστεύω). Οι μεταβλητές έχουν ότι χαρακτήρες θέλουμε (και όσους θέλουμε) αλλά το πρώτο να είναι γράμμα και εξαιρούνται κάποια σύμβολα που έχουν νόημα όπως το ίσον. Όμως όσο μεγαλύτερα είναι τα ονόματα τόσο επιβαρύνουμε το διερμημευτή (αφού τα χειρίζεται ως έχουν και όχι με διπλή μετάφραση, σε κάτι πιο απλό). Τα αλφαριθμητικά είναι σε UTF16LE αλλά όπως στα Windows, δηλαδή δυο μόνο bytes ανά χαρακτήρα, όπως το UCS-2. Οι πραγματικοί είναι double και οι ακέραιοι είναι double χωρίς δεκαδικά! Υπάρχουν οι Long (Μακρύς) που είναι πραγματικός ακέραιος 32bit. Επίσης υπάρχει το Έγγραφο που εσωτερικά είναι λίστα συνδεδεμένων αλφαριθμητικλων (ανά παράγραφο). Τέλος υπάρχουν δυο τύποι αντικειμένων η ομάδα και το όρισμα (το τελευταίο είναι ένα κανονικό COM αντικείμενο, π.χ. μπορεί να είναι το Word)

 

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

 

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

Γράφουμε εντολές με τόνους! Π.χ. Τύπωσε 10*3, 10 δια 4     ' εδώ το διά είναι η ακέραια διαίρεση

 

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

 

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

 

Εκτός όμως από εφαρμογές για παιδιά μπορεί κανείς να κάνει και πιο προχωρημένα πράγματα, όπως να φτιάχνει παιχνίδια με sprites (διαφάνειες, software sprites) ή και players (παίκτες, ως hardware sprites), να παίζει μουσική (έχει εντολές που παίζουν νότες που δίνουμε ως παρτιτούρα παράλληλα με την εκτέλεση του προγράμματος. με χρήση μέχρι δεκαέξι φωνών, ουσιαστικά καθοδηγούμε το midi συνθεσάιζερ του υπολογιστή). Και άλλα πολλά που δεν θέλω να κουράσω.

 

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

 

Μια απλή απάντηση λοιπόν στο "γιατί τη Μ2000" είναι στο δες και σκέψου αυτό που ο άλλος το ετοίμασε στο περιβάλλον, πώς θα το ετοιμάσεις στη Python; Π.χ. στην Μ2000 μπορείς να εμφανίζεις κείμενο με αναλογική γραφή και σε πλήρη στοίχιση...Έχει η Python τέτοια εντολή; Όχι απλά πρέπει να βρει κανείς τη βιβλιοθήκη να μάθε π,.χ. προγραμματισμό σε GTK και ...τελικά τίποτα δεν γίνεται...θες τρία εξάμηνα μελέτη για να κάνεις αυτό που έχω έτοιμο! Ασφαλώς με τη C++ κάνεις τα πάντα, αν έχεις χρόνο και είσαι κλάσης προγραμματιστής, ενώ αν δεν είσαι δεν κάνεις τίποτα.

 

Η Μ2000 φτιάχτηκε για εκείνον που βλέπει τις άλλες γλώσσες και τις παρατάει αμέσως διότι δεν ξέρει τι είναι "τούτα" τα wprintf,

Η Μ2000 έχει το όμοιο με τη Basic

Για ι=1 έως 1000
Τύπωσε ι
Επόμενο ι

 

Αλλά και το πιο γρήγορο

Για ι=1 έως 1000 {
Τύπωσε ι

Οι αγκύλες είναι το μπλοκ εντολών.

 

Αυτά για την ώρα. 

Για οποιαδήποτε σκέψη ή ιδέα ας τη συζητήσουμε εδώ!

Γ.Κ.

Επεξ/σία από M2000
  • Like 4
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • Απαντήσεις 308
  • Δημιουργία
  • Τελευταία απάντηση

Συχνή συμμετοχή στην ερώτηση

Συχνή συμμετοχή στην ερώτηση

Δημοφιλή Μηνύματα

Ω, θεέ μου... Νομίζω η εικόνα αυτής της παράθεσης λέει πάρα πολλά από μόνη της. Είναι σκέτο ποίημα. Ηλικία 16-17 (3η λυκείου). Nickname Brazzers 1080p. Αυτοπροσδιορίζεται ως εθνικιστής. Τελεία. Παρά

import turtle wn = turtle.Screen() # Set up the window and its attributes wn.bgcolor("lightgreen") wn.title("Tess") tess = turtle.Turtle() # Create tess and set some attributes tess.col

Δημοσιευμένες Εικόνες

Προτεινόμενες αναρτήσεις

  • 0

utf-8 είναι σίγουρα αυτό που θα πρεπει να χρησιμοποιείς μιας και έτσι δουλεύουμε κατα κόρον ωστε να μην έχει και θέμα με τα ελληνικά

 

Όχι πως έχω και πολύ ιδέα, αλλά AFAIK και να θέλει δε μπορεί because VB6.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Έχω θέμα αλλά θα το λύσω με τα ελληνικά.

Έχω βάλει αυτό * text=auto encoding=ISO-8859-7

στο .gitattributes  και έχω δώσει και εντολή για μόνιμο encoding αλλά δεν τα εφαρμόζει!!! Κάτι διάβασα πως αν δεν το διαβάσει σωστά τότε πάει σε πιο υψηλόβαθμο...configuation...(ίσως από εκεί να πάσχει το πράγμα).

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Έχω θέμα αλλά θα το λύσω με τα ελληνικά.

Έχω βάλει αυτό * text=auto encoding=ISO-8859-7

στο .gitattributes  και έχω δώσει και εντολή για μόνιμο encoding αλλά δεν τα εφαρμόζει!!! Κάτι διάβασα πως αν δεν το διαβάσει σωστά τότε πάει σε πιο υψηλόβαθμο...configuation...(ίσως από εκεί να πάσχει το πράγμα).

 

τα πας παρα πολυ κάλα , είσαι σε καλο δρόμο , σίγουρα θα την βρείς την λύση

 

επίσης αν ξέρεις απο IRC , server : freenode,net , channel: #git

 

και τους ρωτάς ότι θες , live chat, τα παιδία είναι αστέρια και ξερουν τα παντα για το git, επίσης υπάρχει και #github κανάλι.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Όχι το IRC δεν το έχω χρησιμοποιήσει. Πάντως ευχαριστώ για τις ιδέες..και σένα και τα άλλα μέλη εδώ για την παρακίνηση να βάλω το κώδικα στο git.

Τη γλώσσα από το 2003 μέχρι το 2013 την είχα παρατήσει σκεπτόμενος ότι η vb5 έχει πεθάνει, δεν είχα την 6. Βρήκα χρόνο το 2013 και μπήκαν νήματα, δηλαδή μέρη κώδικα της Μ2000 που τρέχει παράλληλα. Κάπου στην 6.5 έκανα αλλαγή σε Vb6. Υπήρχε διαφορά και ήθελε δουλει. Μετά μπήκα στο Vbforums και από το διάβασμα...απογειώθηκε η γλώσσα, έγινε unicode, μπήκαν τα στατικά αντικείμενα στην 7, και τώρα έχουμε και τα μη στατικά στην 8, μαζί με το χρωματισμό του κώδικα. Τώρα λοιπόν που είναι ώριμη η γλώσσα αποφάσισα να την παρουσιάσω. Θέλω σχόλια από τη χρήση της. Αν γίνεται!

  • Like 1
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Αφιερωμένο στα μέλη του insomnia.gr  (και είναι και στα αγγλικά ο κώδικας για να μην τρελαθείτε με τα ελληνικά, που μου αρέσουν εμένα)

http://georgekarras.blogspot.gr/2015/12/list-processing-in-m2000.html

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
Δημοσ. (επεξεργασμένο)

Πιανάκι νο3, (και αναθεώρηση 131)

Τώρα όταν σηκώνουμε ένα δάκτυλο από πλήκτρο τότε σταματάει και ο ήχος της νότας. Παίζει 15 φωνές (και μια 16η - η Νο 10- για την drum machine)

Οπότε μπορεί κανείς ναι παίζει δεύτερα, τέταρτα κ.α.  Οι νότες έχουν δυο στάθμες. Αν πατήσουμε τη νότα με πατημένο το διάστημα τότε θα παίξει δυνατά! Μπορούμε να παίζουμε ταυτόχρονα νότες με διαφορετική ένταση!

http://georgekarras.blogspot.gr/2015/12/2-131.html

 

 

(έκδοση 3. το δοκίμασα και σε κανονικό Windows 7)

Επεξ/σία από M2000
Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ανέβασα (στα αγγλικά) ένα πρόγραμμα για δημιουργία και χειρισμό Link.png Site: πίνακακατακερματισμού . Γράφτηκε για δοκιμές (για αλλαγές στην συνάρτηση κατακερματισμού). 

Αυτή είναι η έξοδός του:

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

hash.png

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Έκδοση 2 του πίνακα κατακερματισμού (εδώ κάθε στοιχείο του πίνακα έχει αντικείμενο με λίστα στοιχείων που βγάζουν τον ίδιο αριθμό από την συνάρτηση HASH)

http://georgekarras.blogspot.gr/2016/01/hash-table-20-134.html

 

@kilon

Το χρησιμοποιώ αλλά δεν το βλέπεις άμεσα! Έχω δικά μου windows...πάνω σε ένα user control που έχω φτιάξει και δίνει δυνατότητες όπως να κάνεις ζουμ άμεσα. Π.χ. η εντολή παρακάτω ανοίγει ένα message box που έχω φτιάξει! (και λειτουργεί χωρίς να κόβει τα νήματα της Μ2000)

Δες αυτό:

Τύπωσε Ρώτα("οκ") 

Δες και κάτι άλλο εδώ:

Αυτό που δεν φαίνεται στο βίντεο είναι ότι μετακινώ τη λίστα με πάτημα του αριστερού πλήκτρου και μια μικρή ώθηση προς τα πάνω ή προς κάτω!

 

Απλά δεν έχω φτιάξει ακόμα ειδικές εντολές για να φτιάχνεις τέτοιο gui Μέσα από την Μ2000.

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

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Link.png Site: ΠίνακαςΚατακερματισμού 2.0  

Ωραίο παράδειγμα. Δείχνει πως φτιάχνουμε πίνακα κατακερματισμού. Ειδικά σε αυτή την έκδοση κάθε στοιχείο του πίνακα είναι ένα αντικείμενο που κρατάει όλα τα στοιχεία που "συγκρούονται" στην συνάρτηση κατακερματισμού (επιστρέφουν το ίδιο νούμερο). Ταυτόχρονα κρατάμε και μια ταξινομημένη λίστα κλειδιών για να βλέπουμε τα στοιχεία αλφαβητικά. Το αντικείμενο πίνακας κατακερματισμού HashTable δίνει επίσης αντικείμενα για πέρασμα απ' ολα τα στοιχεία (iterator)

 

Link.png Site: Συνδεδεμένηλίστα - Αντικείμενο για υποστήριξη Malloc

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

 

 

Καλή χρονιά!

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

  • Δημιουργία νέου...

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.