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

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

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

ilias_s

#75
Το ΙΕΠ πρέπει να ασχολείται με τέτοια θέματα. Κάποια στιγμή (λογικά σύντομα) κάποιες ομάδες θα ξεκινήσουν να αναμοφώνουν τα ΠΣ. Εκεί ίσως να μπορείς να δοκιμάσεις την τύχη σου! Καταλαβαίνεις όμως ότι η λογική λέει πως πρώτα καταρτίζεται το ΠΣ και στο τέλος υιοθετείται κάποιο εργαλείο που να εξυπηρετεί τους στόχους του. Εσύ έχεις έτοιμο ένα εργαλείο (για ποιο ΠΣ?) και περιμένεις ένα βολικό ΠΣ για να το εξυπηρετήσεις..! Από μόνο του αυτό ακούγεται κάπως ...

Προσπερνώντας και άλλα πολλά βασικά και σημαντικά ερωτήματα, θα σε ρωτήσω κάτι πολύ πρακτικό :

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

(κόντρα-μάθημα βάζει και η Κεραμέως στη Γ' λυκείου αλλά αυτή είναι "υπουργάρα" και πάλι έχει φάει το κράξιμο της αρκούδας!!!  ;D ;D ;D)

bugman

Πραγματικά δεν έχω επιχειρήματα για τα "διαπιστευτήρια". Το προσπερνάω. Με ενδιαφέρουν συστάσεις στο ΙΕΠ. Ονόματα και email αν είναι δυνατόν. Επικοινωνία θέλω να έχω. Αν τώρα για να επικοινωνήσω πρέπει να βρω "διαπιστευτήρια", θα τα βρω!
Και συνεχίζω να σκέφτομαι το μοτό μου:
Περιμένω την Άνοιξη! Κάποτε θα έρθει!

happiness

Γιατί δεν ξεκινάς γκουγκλάροντας;
Εγώ θα ξεκινούσα με ένα προφορικό ή γραπτό ερώτημα προς αυτό, σχετικά με το ποια διαδικασία θα πρέπει να ακολουθήσω για να υποβάλω το εκπαιδευτικό μου εργαλείο προς αξιολόγηση ->http://iep.edu.gr/el/grafeio-epikoinonias
Και ύστερα μάλλον εδώ ->http://iep.edu.gr/el/grafeio-stratigikis-kai-politikoy-sxediasmoy

bugman


Νίκος Αδαμόπουλος

Παράθεση από: bugman στις 27 Μαΐου 2020, 04:19:38 ΜΜ
Για να γίνει πάλι compiling θέλει απλά μια Visual Basic 6 Enterprise Edition. Δεν υπάρχουν κάποια ειδικά dll ούτε ocx. Από σχεδιασμό την έφτιαξα να μην έχει δεσμεύσεις με ξένες βιβλιοθήκες, πέρα από αυτές του λειτουργικού Win32 model. Το τελευταίο που αποδέσμευσα ήταν η βοήθεια που απαιτούσε το runtime της access, τώρα δεν τo χρειάζεται. Μπορούμε να φτιάχνουμε βάσεις δεδομένων με το Microsoft.Jet.OLEDB.4.0 το οποίο το δοκίμασα σε Windows 10 που δεν υπήρχε Access ούτε καν Word και δουλεύει.

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

bugman

#80
Όταν ξεκίνησα είχα την Vb5. Το 2003 αγόρασα  την Vb Net. Απογοητεύτικα όπως ο περισσότερος κόσμος. Μετά πέρασα στη VB6. Για πολλούς δεν έχουν πολλές διαφορές, αλλά στη πράξη έχουν.
Η χρήση της Vb6 για το σκοπό που ήθελα, ήταν αρκετή. Ήθελα να έχει ταχύτητα ο κώδικας, αφού ο διερμηνευτής δεν δημιουργεί AST, είναι όλος μια συνάρτηση, που καλεί άλλες συναρτήσεις και πολλές φορές την αρχική. Επίσης ήθελα να είναι η γλώσσα συμβατή με το λειτουργικό, με το μοντέλο Win32, καθώς επίσης να διαχειρίζεται γεγονότα. Πάντα με κώδικα που έχει γίνει γλώσσα μηχανής και όχι γλώσσα για εικονική μηχανή.
Επίσης έχει αλλαχθεί στον compiler ο τρόπος εξαγωγής του τελικού, από exe σε dll. Δηλαδή η γλώσσα μπορεί να φορτωθεί από οποιαδήποτε άλλη γλώσσα που φορτώνει αντικείμενα COM. Το m2000.exe είναι ένα πρόγραμμα που φορτώνει τη γλώσσα ακριβώς όπως το περιέγραψα. Στο m2000.exe έχω ορίσει μεγάλη στοίβα εκτέλεσης, ενώ όταν ξεκινάει η Μ2000 κάνει έλεγχο για το μέγεθός της. Ο κώδικας της M2000 έχει γίνει compiling χωρίς runtime έλεγχο στους πίνακες. Με αυτό κερδίζει ταχύτητα, είναι σαν να έχει γίνει με c compiler. Εννοείται ότι στους πίνακες που φτιάχνουμε στη Μ2000 γινεται έλεγχος ορίων. Απλά δεν έχω διπλό έλεγχο τώρα ενώ θα είχα αν το έκανα μετάφραση με το κανονικό τρόπο.
Άλλο τεχνικό ζήτημα που εμφανίστηκε από τα Windows 7 ήταν ο χειρισμός της ghost οθόνης. Μια εφαρμογή σε vb με event loop, δηλαδή με παράθυρα, πρέπει να εξυπηρετεί γεγονότα το πολύ σε ένα διάστημα, ένα χρόνο τύπου timeout, όπου αν τον περάσει χωρίς να απαντήσει η εφαρμογή, το λειτουργικό θεωρεί ότι έχει κρεμάσει και βγάζει μια λευκή οθόνη, τη λεγόμενη οθόνη φάντασμα. Έτσι αν δίναμε μια μεγάλη επανάληψη στη Μ2000 θα παίρναμε λευκή οθόνη όπου μετά μόνο κλείσιμο της εφαρμογής γίνονταν. Αφού μελέτησα το ζήτημα βρήκα τη λύση. Τέτοια πράγματα δεν γίνονται σε Net γλώσσα. Αν θες κώδικα να τρέχει πχ πέντε λεπτά σε ένα γεγονός, κλειδώνει η εφαρμογή . Για το λόγο αυτό υπάρχουν ασύγχρονες λειτουργίες, σε ξεχωριστά dll, με νήματα και μεγάλη πολυπλοκότητα. Να γιατί εμφανίστηκαν γλώσσες όπως η Rust για καλή διαχείριση νημάτων.
Στη M2000 επίσης έχω δύο συστήματα, ένα για χρήση νημάτων από τη γλώσσα, τα οποία δουλεύουν με ένα βασικό timer, το οποίο  καλεί μια μέθοδο σε τακτά χρονικά διαστήματα, καθώς και έναν διαχειριστή παραθύρων ο οποίος παίρνει γεγονότα και καλεί κώδικα της Μ2000. Αυτά τα δύο έδωσαν την δυνατότητα στη γλώσσα να φτιάχνει παράθυρα και νήματα, και να τα χρησιμοποιεί και τα δύο. Υπάρχει και αντικείμενο Mutex, σε χρήση από τον προγραμματιστή, αν θέλουμε έλεγχο πηγών αποκλειστικά.
Για τα παράθυρα η Vb6 είχε ή να φτιάξει κανείς προκαθορισμένες φόρμες, ή να έχει μεν προκαθορίσει κάποια στοιχεία ελέγχου σε πίνακα και να φορτώνει επιπλέον πάντα όμως τα ίδια ώστε τα γεγονότα να εξυπηρετούνται από στατικές μεθόδους με την ευκολία ενός index. Στην Net έκδοση αφαίρεσαν τους πίνακες στοιχείων ελέγχου, ή controls. Έτσι αποκλείστηκε η χρήση σε κάποια net γλώσσα.
Για να φτιάχνω λοιπόν ότι φόρμα θέλω με ότι στοιχεία θέλω ενώ τρέχει ήδη το περιβάλλον της γλώσσας έπρεπε να βρω μια λύση που να ικανοποιεί και τους κανόνες.
Επίσης τα στοιχεία της Vb6 έπασχαν από το θέμα της συμβατότητας με το Unicode.
Η λύση που σκέφτηκα ήταν δύσκολη αλλά εδωσε καρπούς. Έφτιαξα ένα δικό μου στοιχείο ελέγχου και βρήκα τρόπο να διαβάζω τους unicode χαρακτήρες από το πληκτρολόγιο στη γέννηση του γεγονότος που η visual basic έδινε την μετατροπή του σε ansi δηλαδή με την κωδικοσελιδα την ελληνική οπότε εκεί κάθε άλλος χαρακτήρας έβγαινε στο 63, το ερωτηματικό ?. Την λύση τη δημοσίευσα στο Vbforums. Μπορεί και άλλοι να την ήξεραν αλλά δεν είχε ποτέ δημοσιευθεί. Αφού λοιπόν είχα ένα βασικό στοιχείο ελέγχου, το οποίο είναι αντικείμενο, έφτιαξα άλλα αντικείμενα που το ενσωματώνουν δίνοντας διαφορετικές δυνατότητες. Για παράδειγμα ο διορθωτής κειμένου και κώδικα γράφτηκε ως αντικείμενο που οδηγεί το βασικό. Έχω πολύ καλό έλεγχο του διορθωτή όπου συμπεριλαμβάνει τρεις σελιδοδείκτες, με τα F6, F7, F8, τα οποία κάνουν το καθένα όλες τις λειτουργίες για να θέσουμε νέο, να νετακινηθούμε ή να σβήσουμε, όπως στα παλιά ραδιόφωνα με το προγραμματισμό σταθμών. Αν γράψουμε κείμενο μεταξύ των σελιδοδεικτών δεν χάνουν τη ρύθμιση τους. Έτσι ο χρήστης της Μ2000 σημαδεύει σημεία στο κώδικα και άμεσα μεταβαίνει εκεί. Τέτοιες δυνατότητες δεν έχουν τα έτοιμα στοιχεία, ούτε του Net.
Δεν είναι λοιπόν θέμα να είσαι σε νέο η σε παλιό περιβάλλον πχ vb η net, αλλά σε ποιο περιβάλλον έχεις τον απόλυτο έλεγχο. Στη vb6 υπάρχει ο απόλυτος έλεγχος. Σχεδιάστηκε σαν ελβετικός σουγιάς για προγραμματιστές. Σε κάθε έκδοση των windows προσαρμόζει η μαμά εταιρεία το βασικό κομμάτι της, ένα dll, το οποίο είναι οι συναρτήσεις και ο δικός της window manager, που δεν βάζει ο compiler μέσα στο τελικό πρόγραμμα, ώστε να υπάρχει πάντα συμβατότητα. Για το λόγο αυτό δεν μπορεί κανείς να φορτώσει άλλο dll στη θέση της vb6. Ενώ επί windows 98 η βασική βιβλιοθήκη ήταν redistributable, από Xp και πάνω δεν είναι. Τα windows 10 την έχουν, και θα την έχουν για πάντα. Δεν δουλεύουν χωρίς το σουγιά τους. Αυτή η βιβλιοθήκη χρησιμοποιεί το Win32 μοντέλο και τις βασικές βιβλιοθήκες του. Έτσι ένας πολλαπλασιασμός δύο variant, γίνεται από την Μ2000 με μια κλήση στη βιβλιοθήκη της Vb6 και από εκεί σε μια άλλη βιβλιοθήκη του συστήματος. Στο Net το ίδιο πράγμα γίνεται. Στο τέλος δηλαδή η ίδια ρουτίνα θα κληθεί. Γιατί γίνεται αυτό; Επειδή ο κώδικας που κάνει μια δουλειά γράφεται μια φορά στα Windows.
Είχα δώσει στο blog, ενα πρόγραμμα σε M2000 το οποίο έστελνε ένα source σε c με δυοσυναρτήσεις, εκτελούσε τον gcc compiler, έφτιαχνε το object, τελικά το έκανε link σε dll και το φορτωνε στη γλώσσα ώστε οι δύο συναρτήσεις να χρησιμοποιηθούν από τον ίδιο κώδικα της Μ2000. Δηλαδή έγινε late bound των συναρτήσεων.
Η Μ2000 μπορεί κατά την εκτέλεση να ανοίγει αντικείμενα COM με γεγονότα. Το κάνouν και οι net γλώσσες αλλά στατικά, δηλαδή οι δηλώσεις πρέπει να γίνουν πριν τρέξει το πρόγραμμα. Στη Μ2000 ο διερμηνευτής τρέχει ακόμα και όταν ήμαστε στη κονσόλα της Μ2000. Δηλαδή όλα γίνονται δυναμικά. Αν γίνει λάθος στο κώδικα δεν πέφτει η Μ2000, αλλά βγαινουμε στη γραμμή εντολών της πάμε και αλλάζουμε το κώδικα και τον τρέχουμε ξανά. Επίσης έχουμε το Esc, το ctrl+C και το Break για σταμάτημα κώδικα, όχι σταμάτημα του διερμηνευτή. Το ζήτημα με τις net γλώσσες είναι ότι είναι τέτοιες για να φτιάχνεις τελικό πρόγραμμα. Και η vb6 για τον ίδιο λόγο φτιάχτηκε ως RAD σύστημα, δηλαδή Γρηγόρης ανάπτυξης, αλλά δίνει δυνατότητες για low level προγραμματισμό. Πχ μπορεί κανείς να βάζει κατά το runtime κώδικα σε μνήμη και να τον εκτελεί. Πράγμα που μπορεί να χρησιμοποιηθεί κακόβουλα. Στη  Net το έκοψαν αυτό, με συνέπεια να κόψουν και την καλή χρήση.
Το ζήτημα της vb6 δεν είναι ως προς την εκτέλεση αλλά στο IDE. Μέχρι και τα 7 δεν έχει θέμα. Μετά βρέθηκαν workarounds, λύσεις δηλαδή και παίζει και στα 10.
Συμπέρασμα. Η παλαιότητα της γλώσσας δεν είναι σοβαρός λόγος μη αποδοχής. Ο σοβαρός λόγος είναι η μη συμβατότητα με την τρέχουσα τεχνολογία. Εφόσον το Win32 μοντέλο περιέχεται στα Windows 10, η τεχνολογία του είναι συμβατή με αυτά, δηλαδή ανήκει στις τρέχουσες τεχνολογίες.
Το θέμα του ονόματος δεν με απασχολεί. Ας την λες και Βαγγέλη! Ένα όνομα χρειάζεται για να συνεννοηθούμε!

alkisg

Παίζει η Μ2000 (ή ο Διερμηνευτής της ΓΛΩΣΣΑΣ) εντός του browser ή σε tablets ή σε touch screens κλπ; Μπα.
Πώς λοιπόν να ασχοληθεί κάποιος και να κάνει σύστημα όπου οι μαθητές θα λύνουν ασκήσεις online από τα κινητά τους, πιθανώς με αυτόματο έλεγχο ορθότητας ή βαθμολόγηση, κλπ κλπ;
Αν ο βασικός developer των γλωσσών αυτών το γυρίσει σε αγρότης, υπάρχουν άλλοι 100 ή 1000 να συνεχίσουν την ανάπτυξη; Μπα.
(Ο Κοίλιας έκανε κάποιες προσπάθειες ορισμού νέας Ψευδογλώσσας με υποστήριξη αρχείων με αριθμητικούς file descriptors τύπου Basic κλπ, αλλά ευτυχώς δεν υπήρχε δυνατότητα να μπουν στην ΑΕΠΠ).

Γι' αυτό η Μ2000 και η ΓΛΩΣΣΑ δεν είναι κατάλληλες για την εκπαίδευση.
Και άλλες γλώσσες ξεκίνησαν ως one-man-show, αλλά δεν έχει νόημα να μπαίνουν στην εκπαίδευση όσο είναι one-man-show. Στην εκπαίδευση είναι καλύτερα να μπαίνουν ευρέως αποδεκτά περιβάλλοντα. Το να εκπαιδευτούν χιλιάδες καθηγητές, να προετομαστεί το κατάλληλο υλικό για να διδάξουν όσο το δυνατόν καλύτερα, αντιστοιχεί σε χιλιάδες ανθρωποχρόνια προσπάθειας (ναι, χιλιάδες διδάξανε ΑΕΠΠ και τους πήρε πάνω από χρόνο να οργανώσουν σωστά τη διδασκαλία τους). Δεν πρέπει να κοιτάμε μόνο τις ώρες που έφαγε ένας developer για να φτιάξει ένα περιβάλλον. Μόνο και μόνο οι ώρες που συζητάμε για ασάφειες είναι πολύ περισσότερες από το χρόνο συγγραφής και της ΓΛΩΣΣΑΣ και του Διερμηνευτή.
Κι εγώ για λόγους επιδόσεων και συμβατότητας είχα φάει άπειρες ώρες ώστε να παίζει ο Διερμηνευτής από Windows 95 first edition μέχρι Windows 7 (και 10), με custom unicode controls και χειρωνακτικές υλοποιήσεις bottomless list controls για να μπορούν να φαίνονται  πίνακες με εκατομμύρια στοιχεία στην παρακολούθηση μεταβλητών άμεσα ακόμα και σε 386, και μάλιστα το Delphi συνεχίζεται ενεργά και μπορεί πλέον να κάνει και native compile σε Linux, αλλά δεν θα προσκαλούσα κανέναν να το συνεχίσει σε Delphi...
Αν ήταν να ξαναυλοποιηθεί η ΓΛΩΣΣΑ την σήμερον ημέρα, θα επέλεγα υλοποίηση σε HTML5. Αλλά εννοείται πρώτα θα επέλεγα όχι ΓΛΩΣΣΑ.

bugman

#82
Αυτό που προσπαθούσε ο κ Κοίλιας, για τα αρχεία, το έχει η Μ2000, σε δύο εκδόσεις  Ansi και Utf16LE. Επίσης επειδή έχει ένα αντικείμενο Έγγραφο έχει με μια εντολή  απευθείας σώσιμο εγγράφου. Τα έγγραφα μπορούν να αποθηκεύονται  σε τέσσερις κωδικοποιήσεις, ansi, utf16le, utf16be, utf8. Υποστηρίζει αυτόματη αναγνώριση τύπου κωδικοποίησης και τύπου αλλαγής γραμμής. Κατά το σώσιμο διατηρεί το τρόπο διαβάσματος αν το αντικείμενο φορτώθηκε από το δίσκο, αλλά μπορούμε να κάνουμε εξαγωγές όπως θέλουμε.
Εκτός από αρχεία κειμένου για εισαγωγή, εξαγωγή, προσθήκη, τυχαίας προσπέλασης, και χρήση αντικείμενου εγγράφου, υπάρχει συνδυασμός των εντολών αρχείων για δυαδικά αρχεία, ορίζοντας σημείο στο αρχείο και πλάτος μιας διάρθρωσης μνήμης για εισαγωγή από η εξαγωγή σε σημείο στο αρχείο.
Η γλώσσα είναι ολοκληρωμένη, και το περιβάλλον της. Δεν απαιτείται άλλη ανάπτυξη. Η παρουσία του δημιουργού της δεν είναι απαραίτητη.
Το ότι δεν παίζει σε browser μάλλον δεν κατάλαβες ότι παίζει ως script γλώσσα μέσα από άλλες γλώσσες. Όπως η vbscript. Όπως όλα τα μαθήματα πχ φυσική θα εξετάζονται μέσω μιας πλατφόρμας, με την ίδια θα εξετάζεται και ο προγραμματισμός. Δεν χρειάζεται το πρόγραμμα να εκτελείται online, αλλά η λύση, ως απάντηση, να δίνεται online, και η αξιολόγηση γίνεται από εξεταστή που διαβάζει την κάθε λύση.

Άρα. Το one man show, που γύρισε πάλι στη συζήτηση, δεν υπάρχει πια, δεν μιλάμε για άλλη ανάπτυξη. Η Μ2000 έχει τόσα πολλά, για όλες τις ηλικίες. έχει χρήση της ομιλίας με άμεση εντολή, χρήση μουσικής με 16 φωνές, 128 όργανα και γράφει κανείς μουσική με νότες με ενσωματωμένη γλώσσα μια μουσική, με 5 οκτάβες, με έλεγχο έντασης ανά όργανο.Στα παραδείγματα δίνω και ένα πιάνο που με καλό πληκτρολόγιο παίζει 6 νότες μαζί. Δείχνει τα πλήκτρα όπως τα πατάμε, μετράει και το σήκωμα του δαχτύλου από το πλήκτρο. Επίσης έχει sprites, δηλαδή αυτό που έχει το Scratch, τα οποία έχουν εντολές περιστροφής,αλλαγής μεγέθους, τοποθέτησης στη οθόνη καθώς και έλεγχο σύγκρουσης. Έχω δώσει και ένα pong τύπου παράδειγμα.
Συζητάτε για την logo. Αυτός  που την έφτιαξε πρόσθεσε κάτι που μέχρι τότε δεν είχε βάλει άλλος την οπτικοποίηση του δρομέα γραφικών. Στη Μ2000 μπορεί κανείς να βάλει ένα sprite να παίζει το ίδιο πράγμα. Επειδή έχει εκτός από καρτεσιανές και πολικές συντεταγμένες μπορούμε να ζωγραφίζουμε δίνοντας γωνία και απόσταση. Μια εντολή Χάραξε χαράζει γραμμές ενώ η Βήμα μετακινεί χωρίς γραμμή τον δρομέα.
Έχω δώσει το δένδρο του Πυθαγόρα με πολικές συντεταγμένες και έτσι βγαίνει με την γωνία που θέλουμε. Στο παράδειγμα δύο δένδρα εμφανίζονται με συμμετρία σημείου, υπό γωνία.
Μπορούμε να φορτώνουμε εικόνες, να φορτώνουμε τμήματα της οθόνης σε αλφαριθμητικά και να τα χρησιμοποιούμε ως εικόνες. Μπορούμε να περιστρέφουμε  και να τοποθετούμε εικόνες. Επειδή έχουμε τον έλεγχο της ανανέωσης της οθόνης μπορούμε να σχεδιάσουμε την οθόνη πριν την δείξουμε, και έτσι πετυχαίνουμε animation. Υπάρχουν παραδείγματα όπως εκκρεμές και ρολόι αναλογικό. Μπορούμε να χειριζόμαστε βίντεο και να δείχνουμε με ακρίβεια καρέ στην κονσόλα, σταματημένο βίντεο.
Μπορούμε εύκολα να παίξουμε με βάσεις δεδομένων και Sql ερωτήματα.
Δηλαδή η γλώσσα είναι απίθανη, έχει τέτοια ολοκλήρωση που φτιάχνεται όσα μαθήματα θέλετε από δημοτικό μέχρι και λύκειο.
Έχει αντικείμενα που φτιάχνει ο μαθητής με ιδιωτικά και δημόσια μέλη. Υπάρχουν παραδείγματα για διπλή συνδεδεμένη λίστα με δείκτες με OOP. Υπάρχει χρήση του OOP  για νέο τύπο, κλάσμα. Ορίζουμε πράξεις στα αντικείμενα, με μέλη Τελεστές.
Δείτε προγράμματα που έχω δημοσιεύσει στο http://rosettacode.org/wiki/Category:M2000_Interpreter είναι με τις αγγλικές εντολές αλλά γίνονται εύκολα με τις ελληνικές.
Άρα η ολοκλήρωση της Μ2000 δεν απαιτεί το δημιουργό της για υποστήριξη. Ο κώδικας είναι ανοιχτός και όλος, όλο το περιβάλλον. Η γνώση της Vb6 σε κάποιο βαθμό είναι γνωστή σε καθηγητές με εμπειρία, με χρόνια στο σχολείο, και Vb6 έχει πολλές άδειες το ελληνικό δημόσιο. Δεν θα πάνε χαμένες Σε περίπτωση που χρειάζεται να γίνει εμπλουτισμός της γλώσσας.
Το ωραίο στην Μ2000 είναι ότι μπορούμε τοπικά να χρησιμοποιούμε δεσμευμένες λέξεις για μεταβλητές ή ονόματα τμημάτων. Δηλαδή την Τύπωσε μπορούμε να την έχουμε μεταβλητή και συνάμα να είναι και εντολή. Και αυτό γίνεται τοπικά για όσο ένα τμήμα εκτελείται, αλλά δεν επηρεάζει τα τμήματα που καλούμε από εκεί  Έτσι παρόλο το λεξιλόγιο της Μ2000 που έχει 500+ αναγνωριστικά, είναι το 97% επαναχρησιμοποιούμενα. Οι βασικές εντολές αλλαγής ροής δεν αλλάζουν.
Η εκπαίδευση των καθηγητών γίνεται από εκπαιδευτές, όχι από το δημιουργό της γλώσσας. Το πρόβλημα ορισμού της ΓΛΩΣΣΑΣ, οι λεγόμενες ασάφειες ήταν λόγο έλλειψης διερμηνευτή από τους δημιουργούς της Στη M2000 δεν υπάρχουν ασάφειες. Η γλώσσα δεν ορίζεται μόνο σε χαρτιά αλλά υπάρχει άμεσα για χρήση στο περιβάλλον της. Μηδέν ασάφειες.
Στη Μ2000 το πέρασμα με αναφορά φαίνεται με τη χρήση του &. Τα αλφαριθμητικά φαίνονται με την υποχρεωτική χρήση του $ στα ονόματα μεταβλητών και συναρτήσεων που επιστρέφουν αλφαριθμητικά. Αυτή η λεπτομέρεια κατά άλλους είναι πιο εκπαιδευτική από ένα ορισμό τύπου αλφαριθμητικού κάπου στην αρχή, και μετά απλά ονόματα με ίδιο τρόπο αριθμητικά και αλφαριθμητικά.
Χρήση δεκαεξαδικών με 0x  στην αρχή. Υπάρχουν συναρτήσεις για δυαδικές πράξεις, όπως η πρόσθεση 32bit με αποκοπή του ovrflow bit. Χρησιμοποιείται σε αλγόριθμους hash. Έχω παράδειγμα με RIPEMD160 αλγόριθμο γραμμένο σε Μ2000.
Αν έμπαινε η Μ2000 σε σχολεία σε όλες τις τάξεις από τη Τετάρτη Δημοτικού, θα ήταν ήταν το ανάλογο της γυμναστικής, ως πνευματικής άσκησης και στις τελευταίες τάξεις θα προγραμμάτιζαν παπάδες όπως λένε οι της γενιάς μου. Τώρα με τα εργαλεία που έχουν, και που αλλάζουν συχνά δεν κάνουν τίποτα. Είναι πάντα σε φάση εισαγωγής. Τελειώνουν το σχολείο σε φάση εισαγωγής. Μια γεύση δηλαδή. Ο προγραμματισμός θέλει κόπο και χρόνο. Όταν κάψει ώρες ο μαθητής θα αποκτήσει όχι μόνο αλγοριθμική σκέψη, αλλά +20 IQ.. επιπλέον, (λέμε τώρα!).
Το ότι ζορίζονται οι εκπαιδευτικοί να εκπαιδευτούν δείχνει το βασικό πρόβλημα,η έλλειψη εξάσκησης στο προγραμματισμό. Μπορεί σε όλη τη φάση εκπαίδευσης ο φοιτητής  στο πανεπιστήμιο να έφτιαξε λιγότερα από 100 προγράμματα και από αυτά ίσως κανένα με πάνω από χίλιες γραμμές κώδικα. Εδώ είναι οι καθηγητές να πουν την γνώμη τους πάνω σε αυτό


Προσθήκη 29/6/2020: Έχει γίνει ανανέωση της Μ2000 με περισσότερες δυνατότητες στα αντικείμενα χρήστη, τις ομάδες και τις κλάσεις που δημιουργούν ομάδες. Έκδοση 9.9 αναθεώρηση >=33.

alkisg

Παράθεση από: bugman στις 01 Ιουν 2020, 10:43:44 ΠΜ
Η γλώσσα είναι ολοκληρωμένη, και το περιβάλλον της. Δεν απαιτείται άλλη ανάπτυξη. Η παρουσία του δημιουργού της δεν είναι απαραίτητη.
Το ότι δεν παίζει σε browser μάλλον δεν κατάλαβες ότι παίζει ως script γλώσσα μέσα από άλλες γλώσσες. Όπως η vbscript.

Δεν το έπιασες τι λέω. Άρα, στα σχολεία που δεν έχουν καν Windows, πώς θα γράφουν κώδικα οι μαθητές στην Μ2000;
Αν μιμηθούμε την Αμερική (δεν το προτείνω, αλλά δεν αποκλείεται κι όλας) και πάμε όλοι σε google education suite και chromebooks με μόνο chrome os, πώς θα παίζει η Μ2000;
Αν υιοθετήσουμε το μοντέλο bring your own device και οι μαθητές φέρνουν tablets, πώς θα παίζει η Μ2000;
Εδώ το βιβλίο του ΕΠΑΛ λέει για Python 2.x, και ήδη στις νέες διανομές Linux δεν υπάρχει καν διαθέσιμη για κατέβασμα... ό,τι δεν αναπτύσσεται ενεργά, πεθαίνει, και ισχύει και για τις γλώσσες και για τα βιβλία προγραμματισμού. Το scratch το ξαναέγραψαν εξ' αρχής 3 φορές μέχρι να το πάνε σε HTML5 για να παίζει και σε tablets.

Παράθεση από: bugman στις 01 Ιουν 2020, 10:43:44 ΠΜ
Το ότι ζοριζονται οι εκπαιδευτικοί να εκπαιδευτούν δείχνει το βασικό προβλημα,η έλλειψη εξάσκησης στο προγραμματισμό

Δεν σου πήρε Ν χρόνια να αναπτύξεις και να τεκμηριώσεις την Μ2000; Τα ίδια Ν χρόνια πήρε και στους εκπαιδευτικούς να οργανώσουν όσο καλύτερα μπορούν το μάθημά τους, ώστε να έχουν τις κατάλληλες δραστηριότητες για κάθε επίπεδο του μαθητή, να ανιχνεύσουν όλες τις πιθανές παρανοήσεις, να στήσουν γνωστικές συγκρούσεις...
Εσύ γιατί δεν ξαναέγραψες την Μ2000 σε HTML5; Είναι έλλειψη γνώσεων επειδή έχεις μείνει στην vb, ή έλλειψη όρεξης να ασχοληθείς με κάτι νεότερο; Να απαντήσω κι όλας, είναι η επένδυση τόσων χρόνων· είσαι περήφανος που μετά από τόσο κόπο το έφτασες στο σημείο "τελειότητας" που ήθελες. Γιατί δεν αναγνωρίζεις και στους άλλους ακριβώς τον ίδιο κόπο και περηφάνια, και τους απαξιώνεις με τέτοιες φράσεις; Η βασική ιδιότητα των καθηγητών είναι "εκπαιδευτικοί", όχι "προγραμματιστές". Το να μάθει κανείς vb μπορεί να θέλει μια βδομάδα· το να μάθει να την διδάσκει, χρόνια· το να μάθει να την αποφεύγει, ακόμα περισσότερο όπως φαίνεται! :)

Anyway δεν γράφω άλλα γιατί μου φαίνεται ότι δεν θες να καταλάβεις το σκεπτικό μας, οπότε τζάμπα παιδευόμαστε κι εμείς κι εσύ.

bugman

#84
Αυτή η ιδέα που αναφέρεις με το tablet είναι αντί εκπαιδευτική. Πρώτα γιατί ο εξοπλισμός κοστίζει και σε αγορά και σε συντήρηση. Ποιος θα είναι υπεύθυνος συντήρησης για το προσωπικό tablet του μαθητή; Θα υποχρεώσουν το γονέα να αγοράσει και να συντηρεί εξοπλισμό απαραίτητο για τη δωρεάν εκπαίδευση;
Η Μ2000 τρέχει σε linux σε virtualbox με Windows και με wine χωρίς δηλαδή εικονική μηχανή. Το τελευταίο έχει παραλλαγές και η καλύτερη είναι όταν χρησιμοποιούμε επιφάνεια εργασίας ιδιωτική στο wine.
Δεν στηλιτεύω την δυνατότητα των καθηγητών στο προγραμματισμό, διότι δεν υποχρεώθηκαν να είναι προγραμματιστές. Δεν πέρασαν εξετάσεις για αυτό το πράγμα.
Το πνεύμα μου ήταν στην παιδεία που δημιουργεί αναλφάβητους στο προγραμματισμό. Να γιατί θέλω να μπει ένα μάθημα με ένα περιβάλλον για πολλά έτη. Όπως και σε άλλα μαθήματα πχ στα Μαθηματικά το contex είναι κοινό, η εμβάθυνση αλλάζει.
Να προσθέσω ότι υπάρχει στο ίντερνετ ενοικίαση υπολογιστή απομακρυσμενου με όσους επεξεργαστές θέλεις για όσες ώρες θέλεις με όποιο λειτουργικό θέλεις με όση μνήμη θέλεις. Μπαίνεις από οπουδήποτε! Και από τηλέφωνο!
Στη πρώτη αναζήτηση έβγαλε αυτό:
https://desktop.rent/en/
Και αυτό, πιο φθηνό 25 δολάριο το μήνα.
https://www.apps4rent.com/microsoft-plans.html
Ας δούμε όμως και τις απόψεις των αλλων. Μην το κάνουμε διάλογο δύο ατόμων.

evry

Αυτό που εννοεί ο Άλκης (αν κατάλαβα) είναι ότι σήμερα οποιοδήποτε περιβάλλον δεν έχει και μια online έκδοση σε HTML5/Javascript δεν προχωράει. Δες από την πλευρά της ανεξαρτησίας και της συμβατότητας. Ότι είναι σε html5 δεν εξαρτάται από το λειτουργικό, τρέχει παντού, ο interpreter ουσιαστικά είναι ο browser. Είναι μεγάλη ευκολία να μπορεί ο μαθητής να δοκιμάσει απλές εντολές και προγράμματα σε online περιβάλλον. Δεν θα γράψει πάνω από 100 γραμμές κώδικα. Δεν χρειάζεται κάποιο σούπερ περιβάλλον αλλά κάτι απλό και γρήγορο.
Έχω μαθητές που δεν έχουν υπολογιστή και δουλεύουν σε Python με Online interpreters από tablet. κάποιοι και από κινητό!

Επίσης πολλοί φοιτητές μου είχαν πρόβλημα με το R Studio και τώρα τρέχουν τις ασκήσεις τους στο R Studio Cloud, το οποίο είναι ένα κανονικό περιβάλλον προγραμματισμού στο cloud, απίστευτο!

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

Δυο παρατηρήσεις ακόμα:
@alkisg
Αυτό που είπες για τα αρχεία. Τι μανία είναι αυτή που έχουν κάποιοι με τα αρχεία. Έχω γνωρίσει αρκετούς που πιστεύουν ότι αποτελεί μεγάλη καινοτομία σε ένα μάθημα προγραμματισμού να έχεις ένα κεφάλαιο με read/write σε αρχείο και αυτό να γίνεται σε κάποια ...... ΓΛΩΣΣΑ!!! Αδιανόητα πράγματα.
Προσωπικά διαφωνούσα και με τα αρχεία που μπήκαν στην Python. Δεν έχει νόημα, δεν μαθαίνεις κάτι καινούργιο.
Θα είχε νόημα αν έγραφες κώδικα σε C, αλλά αυτό είναι αντικείμενο σχολών πληροφορικής.
(Προσωπικά πιστεύω ότι αρκετοί έχουν κατάλοιπα ίσως και εφιάλτες >:D από τους αλγορίθμους συγχώνευσης ταινιών που είχαν κάποια παλιά βιβλία δομών δεδομένων σε Pascal..)

Πάντως αναφορικά με το μέλλον δε νομίζω ότι έχει νόημα να πάμε σε κάποια "εκπαιδευτική" γλώσσα από τη στιγμή που υπάρχουν εξαιρετικές επιλογές (python, ruby, javascript) για να κάνεις φανταστικές εφαρμογές πολύ γρήγορα.
Ένα τεράστιο πλεονέκτημα είναι οι κοινότητες που αναπτύσσονται γύρω από αυτές τις γλώσσες και παρέχουν εκπαιδευτικό υλικό, βιβλία, φύλλα εργασίας κλπ. Βοηθάει πολύ όταν είσαι καινούργιος σε ένα χώρο για να μπεις αμέσως στο νόημα.
Επίσης οι βιβλιοθήκες που αναπτύσσονται προσφέρουν απεριόριστες δυνατότητες, στο πλαίσιο ενός project-based μαθήματος. Θα μπορούσαμε να κάνουμε πράγματα με τα οποία οι άλλες ειδικότητες θα παραμιλούσαν.
Η εικόνα που έχουν οι άλλες ειδικότητες για εμάς είναι πολύ κακή και έχει να κάνει σε έναν βαθμό και με το γνωστικό μας αντικείμενο και το βάθος στο οποίο διδάσκεται.

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

@bugman
Αναφορικά με την πρώτη σου ερώτηση, θα μπορούσες να παρουσιάσεις τη γλώσσα σου και σε κάποιο επιστημονικό συνέδριο πληροφορικής μαζί με μερικές ιδέες πως θα μπορούσε να βοηθήσει στη διδασκαλία κατά τη γνώμη σου και να πάρεις εκεί feedback από εκπαιδευτικούς. Ένα τέτοιο συνέδριο το οποίο έχει αρκετά για πληροφορική είναι το CIE
http://lefkimi.ionio.gr/cie/
What I cannot create I do not understand -- Richard Feynman
http://evripides.mysch.gr

bugman

@Evry
Ενδιαφέρον το συνέδριο!

Ως προς την επιλεγόμενη γλώσσα για εκπαίδευση:

Η δική μου πρόταση είναι για ένα ενιαίο περιβάλλον ανάπτυξης από τη Τετάρτη Δημοτικού μέχρι και το Λύκειο, όπου κάθε χρόνο θα προστίθεται μια τάξη ακόμα μέχρι την τελευταία του σχολείου, δηλαδή θα απαιτηθούν 9 χρόνια για να στρωθεί το μάθημα σε όλες τις τάξεις. Αυτό μπορεί να το παρέχει η Μ2000.

Αν θέλουν να δουλεύει σε Tablets. να μισθώσει το κράτος virtual desktop υπολογιστές και να παρέχει πρόσβαση σε όλους τους μαθητές από ότι έχουν, δηλαδή να δουλεύουν μέσω ενός χαζού τερματικού!

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

bugman

#87
Το Παράδειγμα Αποστολή Λουλουδιών, στη Μ2000
Το πρόγραμμα τρέχει, χωρίς να βάλουμε στοιχεία.
1. Δημιουργεί τις κλάσεις
2. Κάνουμε τις δηλώσεις αντικειμένων όπως Γιώργος κ.ο.κ
3. Εκτελούμε τις μεθόδους (τμήματα αντικειμένων) και όπου χρειάζεται βάζουμε αναφορά στο αντικείμενο συνεργασίας. Οι εσοχές δείχνουν τα φωλιασμένα μέρη των συνεργασιών.

Παρατήρηση: Αντικείμενο με & στην αρχή του ονόματος είναι Αναφορά. Αναφορά σημαίνει ότι περνάει στο τμήμα "με αναφορά", δηλαδή μπορεί να αλλάξει κατάσταση.

Ορισμένα τμήματα κλάσεων (μέθοδοι) θέλουν μια παράμετρο ως αναφορά. Για ευκολία δίνουμε στο όνομα της παραμέτρου το όνομα της κλάσης που μας ενδιαφέρει. Μπορούμε να δώσουμε άλλο όνομα!

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

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



\\ Αποστολή λουλουδιών
\\ Βασικό σχέδιο
Κλάση Πελάτης {
      Όνομα$, Επώνυμο$, Διεύθυνση$,
      Τηλέφωνο$, Emali$
      Τμήμα ΚάνειΠαραγγελια  (&Ανθοπώλης){
      }
      Τμήμα ΠαραλαμβάνειΑνθοδέσμη {
      }
}
Κλάση Ανθοπώλης {
      Επωνυμία$,
      Όνομα$, Επώνυμο$,
      Διεύθυνση$, ΑΦΜ$,
      Τηλέφωνο$, Emali$,
      Τραπεζικός_Λογαρασμός$, Κωδ_Δικ_Συν
      Τμήμα ΔέχεταιΠαραγγελία {
      }
      Τμήμα ΖητάΣυνεργασία (&Ανθοπώλης) {
      }
      Τμήμα ΑποδέχεταιΣυνεργασία {
      }
      Τμήμα ΑναθέτειΑνθοδεσία (&Ανθοδέτης) {
      }
      Τμήμα ΑναθέτειΠαράδοση (&Ταχυμεταφορέας) {
      }
}
Κλάση Ανθοδέτης {
      Επωνυμία$,
      Όνομα$, Επώνυμο$, Διεύθυνση$,
      ΑΦΜ$, Τηλέφωνο$,
      Emali$, Ειδικότητα$, Ωριαία_αμοιβή
      Τμήμα ΕτοιμάζειΑνθοδέσμη {     
      }
}
Κλάση Ταχυμεταφορέας {
      Επωνυμία$,
      Όνομα$, Επώνυμο$, Διεύθυνση$,
      ΑΦΜ$, Τηλέφωνο$,
      Emali$,   Τύπος$
      Τμήμα ΠαραδίδειΑνθοδέσμη (&Πελάτης){
      }
}


Μαμά=Πελάτης()
Γιώργος=Ανθοπώλης()
Τζιοβάνι=Ανθοπώλης()
Αντόνιο=Ανθοδέτης()
Πέπε=Ταχυμεταφορέας()
Άννα=Πελάτης()


\\ Παραγγελία Μαμά - Γιώργος
Μαμά.ΚάνειΠαραγγελια &Γιώργος
      Γιώργος.ΔέχεταιΠαραγγελία
      \\ Συνεργασία Γιώργος - Τζιοβάνι
      Γιώργος.ΖητάΣυνεργασία &Τζιοβάνι
            Τζιοβάνι.ΑποδέχεταιΣυνεργασία
            \\ Ανάθεση Ανθοδοσίας  Τζιοβάνι - Αντόνιο
            Τζιοβάνι.ΑναθέτειΑνθοδεσία &Αντόνιο
                  Αντόνιο.ΕτοιμάζειΑνθοδέσμη
            \\ Ανάθεση Παράδοσης Τζιοβάνι - Πέπε
            Τζιοβάνι.ΑναθέτειΠαράδοση &Πεπε
                  \\ Παράδοση Πέπε - Άννα
                  Πέπε.ΠαραδίδειΑνθοδέσμη &Αννα
                        Αννα.ΠαραλαμβάνειΑνθοδέσμη

bugman

#88
Το πσράδειγμα λουλούδια ένα βαθμό ολοκλήρωσης παραπάνω.
1. Έγιναν αλλαγές σε μερικά τμήματα για να γίνουν συναρτήσεις να γυρνούν αληθής ή ψευδής.
2. Ορισμένα αντικείμενα έγιναν γενικά, για να αποφύγουμε σε αυτή τη φάση να τα συμπεριλάβουμε σε καταστάσεις (λίστες) εντός αντικειμένων, και να αποφύγουμε να γράψουμε κώδικα που να τις δουλεύει.
Ό,τι δεν είναι γενικό σημαίνει ότι δεν το αναζητούμε μέσα στα αντικείμενα. Πχ η Μαμά δεν είναι γενικό, γιατί το χρησιμοποιούμε μια φορά στη θέαση του τρέχοντος τμήματος (ο κώδικας τρέχει σε ένα τμήμα πχ Α). Ο Γιώργος επίσης είναι τοπική μεταβλητή, δεν τον καλεί μέσα σε τμήμα κανένα αντικείμενο στο παράδειγμα, ενώ οι Τζιοβάνι και Αντόνιο υποτίθεται ότι τους βρίσκει τον μεν πρώτο ο Γιώργος και τον δεύτερο ο Τζιοβάνι. Ο Πέπε είναι και αυτός τοπική (όχι γενική) γιατί τον έχουμε σε μια γραμμή εντολής τοπικά μόνο με το Τζιοβάνι.ΑναθέτειΠαράδοση &Πεπε ενώ η Άννα είναι Γενική γιατί υποτίθεται ότι ο Τζιοβάνι έχει καταγράφει την Άννα και την χρειάζεται για την ανάθεση παράδοσης.

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

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


3. Το πρόγραμμα έχει τώρα τερματισμό "Παραλήφθηκε" που κάνει το τμήμα της Άννας.


Το συμπέρασμά μου για το παράδειγμα του βιβλίου είναι:
Αν κάποιος έχει υπολογιστική σκέψη θα καταλάβει ότι παίζουν αναμονές και ότι δεν γίνεται αυτό που λέει το παράδειγμα "σειριακά" στην πράξη, ενώ αναγκαστικά, αν πρέπει να κάνουμε κάτι, γίνεται χωρίς να βάλουμε κώδικα, ή όπως εδώ να βάλουμε απευθείας γενικές για να βάλουμε τον ελάχιστο δυνατό κώδικα, ο οποίος δεν μπορεί να χρησιμοποιηθεί για άλλη περίπτωση αποστολής λουλουδιών.
Δηλαδή το παράδειγμα ταιριάζει για εκείνον που πάσχει από υπολογιστική σκέψη και θα ακολουθήσει το παράδειγμα, όπως αυτό που δόθηκε στο προηγούμενο μήνυμα.





\\ Αποστολή λουλουδιών
\\ Βασικό σχέδιο
Κλάση Πελάτης {
      Όνομα$, Επώνυμο$, Διεύθυνση$,
      Τηλέφωνο$, Emali$
      Τμήμα ΚάνειΠαραγγελια  (&Ανθοπώλης){
            Ανθοπώλης.ΔέχεταιΠαραγγελία
      }
      Τμήμα ΠαραλαμβάνειΑνθοδέσμη {
            Τύπωσε "Παραλήφθηκε"
      }
}
Κλάση Ανθοπώλης {
      Επωνυμία$,
      Όνομα$, Επώνυμο$,
      Διεύθυνση$, ΑΦΜ$,
      Τηλέφωνο$, Emali$,
      Τραπεζικός_Λογαρασμός$, Κωδ_Δικ_Συν
      Τμήμα ΔέχεταιΠαραγγελία {
            \\ τώρα βρίσκει ότι πρέπει να απευθυνθεί στον Τζιοβάνι
            \\ προφανώς από μια λίστα συνεργατών
            \\ Συνεργασία Γιώργος - Τζιοβάνι
            Αυτό.ΖητάΣυνεργασία &Τζιοβάνι
            Αν Τζιοβάνι.ΑποδέχεταιΣυνεργασία() Τότε
            \\ όλα καλά!
            \\ πληρώνεται προκαταβολικά!
            Τέλος Αν
      }
      Τμήμα ΖητάΣυνεργασία (&Ανθοπώλης) {
      }
      Συνάρτηση ΑποδέχεταιΣυνεργασία {
            \\ Ψάχνει ια ανθοδέτη και βρίσκει τον Αντόνιο
            \\ Ανάθεση Ανθοδοσίας  Τζιοβάνι - Αντόνιο
            \\ Το Αυτό μπορούμε να το διαγράψουμε, αφήνουμε την τελεία.
            \\  =.ΑναθέτειΑνθοδεσία(&Αντόνιο)
            =Αυτό.ΑναθέτειΑνθοδεσία(&Αντόνιο)
      }
      Συνάρτηση ΑναθέτειΑνθοδεσία(&Ανθοδέτης) {
            \\ εδώ πρέπει να έχουμε ασύγχρονη λειτουργία
            \\ έστω ότι το κάνει άμεσα!
            \\ η Ενώ είναι σαν την Όσο της ΓΛΩΣΣΑΣ
            Ενώ Ανθοδέτης.ΕτοιμάζειΑνθοδέσμη()
                         \\ αναμονή μέχρι να την φτιάξει
            Τέλος Ενώ
            =Αληθής
      }
      Τμήμα ΑναθέτειΠαράδοση (&Ταχυμεταφορέας) {
             \\ Την Αννα την βρίσκει από μια λίστα εκκρεμοτήτων.
             \\ Παράδοση Πέπε - Άννα
            Ταχυμεταφορέας.ΠαραδίδειΑνθοδέσμη &Αννα
       }
}
Κλάση Ανθοδέτης {
      Επωνυμία$,
      Όνομα$, Επώνυμο$, Διεύθυνση$,
      ΑΦΜ$, Τηλέφωνο$,
      Emali$, Ειδικότητα$, Ωριαία_αμοιβή
      Συνάρτηση  ΕτοιμάζειΑνθοδέσμη {
            \\ όσο ετοιμάζει είναι αληθής
            \\ εδώ δίνουμε άμεσα ψευδής
            \\ την ετοίμασε σε χρόνο dt
            =Ψευδής
      }
}
Κλάση Ταχυμεταφορέας {
      Επωνυμία$,
      Όνομα$, Επώνυμο$, Διεύθυνση$,
      ΑΦΜ$, Τηλέφωνο$,
      Emali$,   Τύπος$
      Τμήμα ΠαραδίδειΑνθοδέσμη (&Πελάτης){
      }
}


Μαμά=Πελάτης()
Γιώργος=Ανθοπώλης()
\\ κάνουμε γενική όποιο αντικείμενο θέλουμε να φαίνεται μέσα σε τμήματα
\\ για ευκολία στο απλό πρόγραμμα
Γενική Τζιοβάνι=Ανθοπώλης()
Γενική Αντόνιο=Ανθοδέτης()
Πέπε=Ταχυμεταφορέας()
Γενική Άννα=Πελάτης()


\\ Παραγγελία Μαμά - Γιώργος
Μαμά.ΚάνειΠαραγγελια &Γιώργος
\\ έστω ότι όλα πήγαν καλά
\\ Ανάθεση Παράδοσης Τζιοβάνι - Πέπε
Τζιοβάνι.ΑναθέτειΠαράδοση &Πεπε
Αννα.ΠαραλαμβάνειΑνθοδέσμη


bugman

Ανέβηκε η αναθεώρηση 28, και σε αυτήν έχω μέσα στο info αρχείο πρόγραμμα που δείχνει το παράδειγμα με τα Λουλούδια με χρήση όμως μιας τεχνικής που δεν περιγράφεται με τα UML διαγράμματα, τα οποία δείχνουν μεν "σχέσεις" και "ενέργειες" αλλά η αλήθεια στο προγραμματισμό είναι κάπως διαφορετική!

Παραθέτω την έξοδο του προγράμματος (βάζει ένα κείμενο επεξήγησης στην αρχή). Η ουσιαστική διαφορά είναι αυτές οι γραμμές που ακολουθούν. Υπάρχουν λίστες με αντικείμενα. Τα αντικείμενα έχουν γραφτεί με τρόπο που να μην γνωρίζουν που αποθηκεύονται. Μέσα στη ρουτίνα καλούμε μια ενέργεια της Μαμάς: Μαμά.ΚάνειΠαραγγελια(&Κύριος, Προορισμός$) αυτό δημιουργεί όλη την εξοδο. Για να βρίσκουν τα αντικείμενα πχ ο Ανθοπώλης τον Ανθοδέτη, χρησιμοποιούνται γεγονότα, κλήσεις γεγονότων. Τις οποίες βέβαια το πως δηλώνονται και πώς λειτουργούν (όχι ειδικά στη Μ2000) είναι προχωρημένη γνώση. Όμως αυτό το παράδειγμα των 150 γραμμών αν αφαιρέσουμε τις σημειώσεις, ανοίγει τα μάτια και τη σκέψη του πώς δουλεύουν οι σύγχρονες γλώσσες!

\\\ Καταστάσεις με αντικείμενα (όλες με κλειδί το όνομα)
Κατάσταση Πελάτες= "Μαμά":=Πελάτης("Μαμά"), "Άννα":=Πελάτης("Άννα")
Κατάσταση Ανθοδέτες="Αντόνιο":=Ανθοδέτης("Αντόνιο")

Κατάσταση Ταχυμεταφορείς="Πέπε":=Ταχυμεταφορέας("Πέπε")
Κατάσταση Ανθοπώλεις ="Γιώργος":=Ανθοπώλης("Γιώργος"), "Τζιοβάνι":=Ανθοπώλης("Τζιοβάνι")

\\ εδώ είναι η ρουτίνα που λέει ποιος κάνει παραγγελία, σε ποιον και για ποιον
Παραγγελία("Μαμά", "Γιώργος", "Άννα")