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

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 202
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #30 στις: 09 Μάρ 2017, 01:30:52 πμ »
Έχει ανέβει η έκδοση 8.4 όπου έχω προσθέσει πολλά στη γλώσσα, όπως αντικείμενα που γυρνούν και παίρνουν τιμές σαν μεταβλητές, καθώς και ιδιότητες μόνο για ανάγνωση ή και για εγγραφή, οι οποίες είναι και αυτές αντικείμενα, και μπορούν να έχουν συναρτήσεις, τμήματα αλλά και άλλες ιδιότητες. Επίσης τα αντικείμενα μπορούν να έχουν δικούς τους τελεστές, και έτσι να ορίσουμε πχ την πρόσθεση, και το αποτέλεσμα να είναι τιμή ή αντικείμενο. Έχει αρκετές βελτιώσεις ακόμα και στην ταχύτητα εκτέλεσης.

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 202
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #31 στις: 13 Μάρ 2017, 09:18:14 πμ »
Ανέβασα έναν διερμηνευτή mini Lisp γραμμένο σε Μ2000, και μάλιστα σε δυο εκδόσεις, με Τμήματα (Διαδικασίες) και με Ρουτίνες.  Στη Μ2000 ξεχωρίζουν οι Ρουτίνες από τα Τμήματα. Οι ρουτίνες έχουν δικό τους σωρό επιστροφής ενώ τα τμήματα χρησιμοποιούν τον γενικό. Επιπλέον οι ρουτίνες βλέπουν τις μεταβλητές του τμήματος που ανήκουν ενώ τα τμήματα δεν βλέπουν, παρά μόνο ότι ορίζουμε σε αυτά και ότι είναι γενικό! Παρόλα αυτά το πρόγραμμα με τα τμήματα χρησιμοποιεί μια ειδική κλήση που κάνει τα τμήματα να τρέχουν σαν να είναι το τμήμα που τα καλεί. Από την έκδοση 8.4 έχουμε όμως εξίσου γρήγορη εκτέλεση ρουτινών (η αναζήτηση γίνεται μια φορά και καταχωρείται σε λίστα), οπότε το δεύτερο πρόγραμμα εκτελεί το κώδικα της Lisp πιο γρήγορα!


bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 202
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #32 στις: 18 Απρ 2017, 10:07:58 πμ »
Ένα ωραίο πρόβλημα για προγραμματισμό είναι το γνωστό πρόβλημα με το βοσκό, το λύκο, το πρόβατο και το χορτάρι, που πρέπει να περάσουν ένα ποτάμι, με μια βάρκα που σε αυτήν μπορεί να μπαίνει μόνο ο βοσκός και το πολύ ένα από τα άλλα τρία. Όσο είναι μαζί ο βοσκός, ο λύκος δεν τρώει το πρόβατο και το πρόβατο δεν τρώει το χορτάρι. Το πρόγραμμα πρέπει να δείχνει τι υπάρχει κάθε φορά σε κάθε όχθη, και στην βάρκα. Τερματίζει όταν όλα είναι στην όχθη προορισμού.
Το πρόγραμμα πρέπει να αποφασίζει ποιοι θα είναι οι επιβάτες στη βάρκα σε κάθε μετακίνηση.
Υπάρχει λύση σε Μ2000 με χρήση αντικειμένων, αλλά είναι δυνατόν να γραφτεί σε ΓΛΩΣΣΑ του σχολείου, ή σε Python, ασφαλώς με χρήση πινάκων. Το ενδιαφέρον του προγράμματος είναι στην αναπαράσταση των μετακινούμενων, γιατί θα πρέπει να γραφτεί και τι τρώει το καθένα ώστε να γίνεται έλεγχος.
« Τελευταία τροποποίηση: 18 Απρ 2017, 10:51:18 πμ από bugman »

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 202
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #33 στις: 26 Ιούν 2017, 03:59:50 μμ »
Μια και τελείωσε το σχολείο, θεώρησα καλό να ενημερώσω για την τελευταία έκδοση της Μ2000 και ίσως κάποιοι καθηγητές ρίξουν μια ματιά!

Τελευταία έκδοση η 8.8 στην αναθεώρηση 11, της Μ2000. Έχω ανεβάσει παράδειγμα για την ανάγνωση json αρχείου, σε δομή δεδομένων, και πάλι την εξαγωγή κειμένου από τη δομή. Η γλώσσα Μ2000 έχει εκτός από μεταβλητές και πίνακες, ορισμένες δομές που λειτουργούν με δείκτη, και μια από αυτές είναι και ο πίνακας με δείκτη. Δείκτες δεν μπορούμε να δώσουμε εμείς, γιατί πάντα μας δείχνει η γλώσσα αυτό που δείχνουν οι δείκτες, και σε εκχώρηση η αντιγραφή του δείκτη γίνεται "αθέατα".
Τέσσερα αντικείμενα είναι με δείκτες στη Μ2000:
1. ο πίνακας με δείκτη (δεν έχει παρενθέσεις),
2. η κατάσταση (ζευγάρια ξεχωριστών κλειδιών και τιμών) - υπάρχει παραλλαγή ως "κατάσταση ουρά" όπου δέχεται όμοια κλειδιά.
3. ο σωρός τιμών (συνδεδεμένη λίστα τιμών, χρησιμοποιείται και ως στοίβα)
4. και η διάρθρωση μνήμης (τμήματα μνήμης όπου ορίζουμε μια δομή, ή πίνακα δομών, ενώσεων δομών κ.ο,κ).
Στα τρία πρώτα οι τιμές μπορεί να είναι οτιδήποτε, πχ δείκτης σε άλλη δομή, πίνακας, αντικείμενο. Στο τέταρτο οι τιμές είναι αριθμοί χωρίς πρόσημο του ενός, των δύο και των τεσσάρων bytes, πραγματικοί των οκτώ bytes, και αλφαριθμητικά των  δυο ή του ενός byte ανά χαρακτήρα.

Οι μεταβλητές στη Μ2000 είναι αριθμητικές (με % στο τέλος είναι ακέραιες, ενώ εσωτερικά είναι πραγματικές) ή αλφαριθμητικές (έχουν το $ στο τέλος), και υπάρχουν και δυο ακόμα η τύπου Μακρύς (Long) ακέραιος 32bit και το αντικείμενο Έγγραφο ως αλφαριθμητικό με χωριστές εσωτερικά τις παραγράφους.

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

Οι ομάδες είναι αντικείμενα που μπορεί να έχουν όλα τα παραπάνω και επιπλέον τμήματα (διαδικασίες δηλαδή), συναρτήσεις, άλλες ομάδες, να επιστρέφουν τιμή ή να δέχονται τιμή ή και τα δύο, να έχουν ιδιότητες (ομάδες που δέχονται τιμές ή δίνουν ή κάνουν και τα δύο). Δεν υπάρχει χωριστή αναφορά σε διεπαφή στα αντικείμενα αυτά, και δεν έχουμε δείκτες σε αυτά. Μπορούμε έμμεσα να έχουμε δείκτες αν τοποθετήσουμε τις ομάδες σε κάποια από τα 1 έως 3 αντικείμενα με δείκτες.

Στο παράδειγμα που δίνω στο Blog για την ανάγνωση των json αρχείων, όλες οι τιμές τοποθετούνται σε ομάδες μέσα σε Καταστάσεις όταν το jsον έχει αντικείμενα με ζευγάρια τιμών και σε πίνακες με δείκτη όταν έχει πίνακα. Ακόμα όμως και οι καταστάσεις και οι πίνακες είναι πρώτα σε ομάδες καταχωρημένες. Έτσι όλη η δομή ξεκινάει με μια ομάδα που μπορεί να έχει πίνακα ή κατάσταση και μέσα σε αυτά άλλες ομάδες με οτιδήποτε τιμές δέχεται το json αρχείο. Το πρόγραμμα έχει γραφτεί με εντολές της Μ2000 στα αγγλικά. Αν κάποιος το τρέξει με Δοκιμή Α (έστω στο Α έχουμε αντιγράψει το πρόγραμμα) θα μπορέσει να το εκτελέσει βήμα προς βήμα. Μπορεί σε διάφορα σημεία να βάζει την εντολή Δοκιμή "τίτλος" και τότε σταματάει η εκτέλεση και δείχνει το σημείο του κώδικα που εκτελείται, και μπορούμε ε[πιπλέον  να επιλέξουμε αργή εκτέλεση ή να κλείσουμε το παράθυρο του ελέγχου, ή να δώσουμε διακοπή, ή να εμφανίσουμε τιμές που θέλουμε (υπάρχει μια Τύπωσε στη φόρμα αυτή για να εμφανίζει τιμές).
Οποιοσδήποτε το δοκιμάσει ας γράψει εδώ τα συμπεράσματά του!

bugman

  • Δεινόσαυρος
  • *****
  • Μηνύματα: 202
  • The Bug Eater
    • Πληροφορική Προγραμματισμός
Απ: Γλώσσα Προγραμματισμού Μ2000 έκδοση 8
« Απάντηση #34 στις: 18 Ιούλ 2017, 12:58:58 μμ »
Τελική έκδοση 8.9 αναθεώρηση 14. Έχει γραφτεί 100% η βοήθεια, και στο blog εμφανίζονται όλα τα αναγνωριστικά εντολών και συναρτήσεεων, στα ελληνικά και στα αγγλικά (υπάρχουν και προγράμματα για το πως μέσα από τη γλώσσα διαβάζουμε τη βοήθεια σε αρχείο txt και το ανοίγουμε σε WordPad).
Με Βοήθεια Όλα ή Help All έχουμε τις λίστες αυτές ομαδοποιημένες.
Καλό Καλοκαίρι!