Σάββατο 8 Αυγούστου 2015

Μ2000 και εκπαιδευτική κοινότητα

Εδώ και δεκαπέντε χρόνια προσπαθώ να περάσω την "αναγκαιότητα" για μια εφαρμογή γλώσσας προγραμματισμού που να περιλαμβάνει διάφορες δραστηριότητες όπως χρήση γραφικών, βάσεων δεδομένων και πολυμέσων (βίντεο, ήχων και εικόνας).
Φυσικά αυτό μετά από δεκαπέντε χρόνια φαντάζει ακατόρθωτο. Και εδώ λοιπόν θα γράψω τις σκέψεις μου για το τι μπορεί να συμβαίνει!
Να ξεκαθαρίσω ότι δεν έχει σημασία η εργασία μου πάνω στην ιδέα μιας Ελληνικής γλώσσας προγραμματισμού, αλλά γενικά αν θα έπρεπε να φτιαχτεί κάτι τέτοιο.
Υπάρχει μάθημα στο λύκειο η ΑΕΠΠ που είναι μάλιστα και εξεταζόμενο πανελλαδικά, στις εξετάσεις για την εισαγωγή στη τριτοβάθμια εκπαίδευση. Για αυτό το μάθημα έχει γίνει πολύ καλή εργασία ετοιμασίας μιας γλώσσας προγραμματισμού απλής με σκοπό να μάθει ο μαθητής την αλγοριθμική, τον τρόπο να αναλύει ένα πρόβλημα με διακριτά απλά βήματα. Βεβαίως έχω ορισμένες ενστάσεις ως προς το πόσα θέματα αλγορίθμων πάνω σε ιδιαίτερες δομές δεδομένων είναι απαραίτητες να συμπεριληφθούν στην ύλη. Είναι ύλη που θα έπρεπε να ήταν στο πανεπιστήμιο! Αλλά δεν είναι πρώτη φορά που αναβαθμίζεται το λύκειο με την εισαγωγή εννοιών που διδάσκονται στην τριτοβάθμια εκπαίδευση. Ενώ δηλαδή φαντάζει καλή η αναβάθμιση εντούτοις αυτό που κάνει είναι να απαιτεί επιπρόσθετο κόπο και ίσως και χρήμα για ιδιαίτερα μαθήματα ώστε να ανταπεξέλθει ο μαθητής στις απαιτήσεις των εξετάσεων.
Μια γλώσσα προγραμματισμού σήμερα μπορεί να δίνεται δωρεάν από μεγάλες εταιρείες ή και ιδρύματα ή και από την κοινότητα των προγραμματιστών ελεύθερου λογισμικού. Υπάρχει μια διαφορά στο τι είναι αυτό που δίνουν ελεύθερα και το τι ακόμα χρειάζεται κανείς για να ολοκληρώσει μια εφαρμογή. Αυτό που δίνουν δεν είναι ένα μαγικό κουτί να πατήσεις δυο τρια κουμπιά και να πάρεις μια εφαρμογή. Απαιτεί πρώτα απ΄όλα ένα περιβάλλον ανάπτυξης, όπου θα γραφτεί ο πηγαίος κώδικας, θα δοκιμαστεί και θα διορθωθεί. Όμως ακόμα και αυτό το περιβάλλον απαιτεί εμπειρία για να το χρησιμοποίησει κανείς και σίγουρα κάποια μαθήματα ή και διάβασμα εγχειριδίου. Επιπλέον οι γλώσσες δίνονται με ένα μικρό αριθμό εντολών και για εξειδικευμένα θέματα ή θα πρέπει να ανακαλύψεις τον τροχό  (πράγμα αδύνατον) ή να συνδέσεις τη γλώσσα με έτοιμα εργαλεία, με κώδικα δηλαδή που κάνει αυτό που θέλεις.
Με απλά λόγια σε όλες αυτές τις δωρεάν γλώσσες το να φτιάξεις μια εφαρμογή που θα ανοίγει σε όλη την οθόνη μια φωτογραφία από ένα αρχείο στο δίσκο...για τον μην έμπειρο, για τον νέο δηλαδή αποτελεί μια προσπάθεια "βουνό", Η διαδικασία δηλαδή απαιτεί αρκετά βήματα, και η κατανόηση αυτών είναι δύσκολη, ίσως μηχανικά να είναι εύκολο αλλά θα πρέπει να ξέρει κανείς τι κάνει! Με καμία γλώσσα δεν μπορούμε να κάνουμε τα πάντα εύκολα. Η έννοια "εύκολο" δεν υπάρχει στο προγραμματισμό. Αυτό που υπάρχει είναι η έννοια "παραγωγικό". Δηλαδή αν κάτι θέλει πέντε βήματα σε σχέση με το άλλο που θέλει τρία είναι λιγότερο παραγωγικό. Φυσικά και ο χρόνος εκτέλεσης μετράει αλλά συνήθως περισσότερα βήματα σημαίνει περισσότερη καθυστέρηση με δεδομένο ότι οι εσωτερικές διαδικασίες στον υπολογιστή γίνονται γρήγορα. Στον αντίποδα όταν μειώνει κανείς τα βήματα μειώνει τις επιλογές, άρα χάνει σε ευελιξία, σε προσαρμογή. Το βέλτιστο είναι να πετύχει κανείς σε βάθος χρόνου να είναι και παραγωγικός και να προσαρμόζεται σε νέες απαιτήσεις στην εργασία του, και ο προγραμματισμός είναι μια εργασία. Έτσι ο γνώστης μπορεί να σχεδιάζει με περισσότερα βήματα (ευέλικτος) χωρίς καθυστερήσεις (παραγωγικός).
Ένα ερώτημα που μπαίνει εδώ είναι: "Τι εργασία είναι ο προγραμματισμός". Η απάντηση δεν είναι "η παραγωγή αλγορίθμων" και αυτό το αναφέρω γιατί σε επίπεδο γνώσεων λυκείου έχει περάσει η αντίληψη ότι πρόγραμμα είναι ο αλγόριθμος.  Ουσιαστικά το αντίθετο συμβαίνει, ένας αλγόριθμος μπορεί να προγραμματιστεί σε μια γλώσσα προγραμματισμού, αλλά δεν αποτελεί αυτός το πρόγραμμα. Το πρόγραμμα είναι το εργαλείο που το βάζουμε να μας κάνει μια δουλειά. Αν περιέχει ένα αλγόριθμο για να βάζει σε μια τάξη μερικά πράγματα τότε μπορούμε να λέμε ότι στο πρόγραμμά μας χρησιμοποιούμε τον τάδε αλγόριθμο. Υπήρχε μια εποχή που ο αλγόριθμος ήταν σαν μια εφαρμογή. Για παράδειγμα μέσα από το DOS μπορούσε κανείς να καλέσει ένα πρόγραμμα ταξινόμησης δίνοντας για παράμετρο ένα αρχείο ονομάτων και να πάρει γισ έξοδο (αποτέλεσμα), ένα αρχείο με ταξινομημένα τα ονόματα αλφαβητικά, και φυσικά το πρόγραμμα χρησιμοποιούσε έναν αλγόριθμο ταξινόμησης. Όμως ως πρόγραμμα είχε κάτι σημαντικά πραγματάκια που το έκαναν κάτι παραπάνω από έναν αλγόριθμο: Είχε ένα τρόπο να αναλύει την είσοδο και ανάλογα να ενεργήσει, και επιπλέον περιλάμβανε και μια λογική του τι θα γίνει αν δεν μπορεί να γράψει στο δίσκο, αν κάτι δηλαδή πάει στραβά. Ο αλγόριθμος ταξινόμησης δεν περιλαμβάνει το τμήμα αποκωδικοποίησης της εισόδου και το τμήμα λαθών κατά την εκτέλεση. Θα μπορούσε να πει κανείς ότι και αυτά αποτελούν αλγόριθμους, αλλά στην ουσία ένας αλγόριθμος οφείλει να είναι κάτι το γενικό, και για το λόγο αυτό του δίνουμε και ένα όνομα που αντιπροσωπεύει αυτό τον αλγόριθμο...οπουδήποτε. Έτσι ουσιαστικά η εργασία του προγραμματισμού είναι να φτιάχνει κανείς μια αυτοματοποιημένη διαδικασία, με χρήση γνωστών αλγορίθμων ή όχι, υπολογίζοντας όλες τις πιθανές καταστάσεις και τα προβλήματα που τυχόν θα προκύψουν. Αυτή η αυτοματοποιημένη διαδικασία λέγεται εφαρμογή και έχει όνομα που δηλώνει το αντικείμενό της. Έτσι ένας επεξεργαστής κειμένου είναι μια αυτοματοποιημένη διαδικασία με αντικείμενο το κείμενο. Κάθε εφαρμογή έχει όρια και αυτά πολλές φορές δεν είναι γνωστά στον χρήστη της εφαρμογής. Για το λόγο αυτό οι εφαρμογές "δίνονται ως έχουν" ή αγγλικά "AS-IS". Σημασία δηλαδή είναι για τις τρέχουσες  απαιτήσεις να ανταποκρίνονται. Εκείνος λοιπόν που φτιάχνει μια εφαρμογή, με μια γλώσσα προγραμματισμού, δουλεύει πάνω σε μια ιδέα του τι μπορεί να φορτώσει την εφαρμογή, τι μπορεί να προκύψει, τι λάθη πιθανόν θα κάνει ο χρήστης. Δεν μιλάμε δηλαδή για αλγόριθμους αλλά για πρόβλεψη καταστάσεων και προσδιορισμό απαιτήσεων. Ο προγραμματισμός λοιπόν είναι ουσιαστικά η "κατασκευή" μιας ιδέας.
Για να μπορείς να υλοποιείς όμως ιδέες πρέπει η γλώσσα που θα χρησιμοποιήσεις να σου παρέχει τα μέσα, και αυτά είναι κύρια οι έτοιμες βιβλιοθήκες ρουτινών. Οι ρουτίνες είναι μικρά προγράμματα εφαρμογές που μπορούμε να συνδέσουμε με το πρόγραμμά μας. Η κορυφαία γλώσσα C++ έχει μια μεγάλη συλλογή ρουτινών
Μέχρι εδώ ανέπτυξα το τι είναι εργασία προγραμματισμού και έδειξα την αναγκαιότητα για έτοιμα βοηθητικά προγράμματα. Οι μεγάλες γλώσσες (με μεγάλες βιβλιοθήκες ρουτινών) είναι μέρος της τριτοβάθμιας εκπαίδευσης. Στην πρωτοβάθμια και δευτεροβάθμια εκπαίδευση η δική μου πρόταση είναι μια γλώσσα προγραμματισμού με ενσωματωμένες εντολές γραφικών, βάσεων δεδομένων και πολυμέσων αντί για χρήση εξωτερικών βιβλιοθηκών, και ανάπτυξη εφαρμογών ώστε να μπορεί ο μαθητής να αντιληφθεί τι σημαίνει "προγραμματίζω", πώς σκέφτομαι να φτιάξω όχι απλά ένα τρόπο επίλυσης ενός προβλήματος αλλά μια αυτοματοποιημένη διαδικασία που θα συνδέεται με τις ενέργειες τους χρήστη.
Για την παραγωγικότητα λοιπόν του μαθητή μια γλώσσα πρέπει να έχει τα λιγότερα βήματα για τη δημιουργία μιας εφαρμογής. Επίσης πρέπει να δίνονται επιλογές στο μαθητή να ασχοληθεί με έναν τομέα όπως γραφικά, βάσεις δεδομένων και πολυμέσα. Για την επιτυχία της εργασίας του θα χρειαστεί να πειραματιστεί, να σχεδιάσει, να δοκιμάσει, πότε να εγκρίνει και πότε να απορρίψει μεθόδους προγραμματισμού. Μια γλώσσα προγραμματισμού με πολλά πεδία αλλά προσβάσιμα από τον μαθητή μαζί με προγράμματα εκπαίδευσης που θα ζητούν να εργαστεί ο μαθητής πάνω στην συγγραφή προγραμμάτων για την υλοποίηση μιας εφαρμογής, μόνος του ή με τη συμμετοχή άλλων (διαμοιρασμός εργασίας), μαθαίνει τον μαθητή όχι την χρήση της αλλά την συνεργασία, την αντίληψη του τι μπορεί να ζητάει κανείς από τον χρήστη, το πώς κάτι είναι εφικτό και πότε όχι, δηλαδή πολλά πράγματα που δεν έχουν να κάνουν με την γλώσσα την ίδια, τις ιδιοτροπίες της, αλλά με την χρήση της, με το αποτέλεσμά της, την εφαρμογή. Βάζουμε το μαθητή να υλοποιεί ιδέες και αντιμετωπίζει όλα τα προβλήματα που συμβαίνουν στη φάση της υλοποίησης. Δεν χρειάζεται να μάθει "απ' έξω" να εργάζεται. Αυτό θα το καταφέρει αν του γίνει συνήθεια. Ο μαθητής πρέπει να σκέφτεται πως μια ιδέα μπορεί να υλοποιηθεί και να ξεκινάει κάνοντας τα αρχικά βήματα, σχεδιάζοντας μια μικρή λύση, ελαττώνοντας τις απαιτήσεις. Κατόπιν αφού φτιάξει έναν σκελετό της κατασκευής, αρχίζει να την εμπλουτίζει μέχρι να πληροί τις απαιτήσεις. Αυτή η μετάβαση από την μη ικανοποιητική στην ικανοποιητική εφαρμογή είναι και η ουσία της εργασίας. Ο δάσκαλος πρέπει να κατευθύνει το μαθητή όχι στο πώς θα βρει τη λύση αλλά στο να του δείξει πόσο έξω είναι από τη λύση, να τον αναγκάσει δηλαδή να σκεφτεί πιο σωστά, να σκεφτεί το πώς και να πειραματιστεί.
Για να έχουμε όμως μια τέτοια διαδικασία εκπαίδευσης, πρέπει να υπάρχει το κατάλληλο εργαλείο, η κατάλληλη γλώσσα προγραμματισμού, ένα περιβάλλον στο οποίο θα τρέχει, εργαλεία ελέγχου που θα περιλαμβάνονται σε αυτό καθώς και τομείς πάνω στους οποίους η γλώσσα θα μπορεί να χρησιμοποιηθεί.
Η γλώσσα Μ2000 από το 2003 είχε ολοκληρώσει την αρχική ιδέα για την χρήση γραφικών, βάσεων δεδομένων και πολυμέσων (έκδοση 5), είχε πίνακες δέκα διαστάσεων, αναδρομή στις συναρτήσεις, χρήση αρχείων και βάσεων δεδομένων τύπου Access, και μπορούσε κανείς ότι παρήγαγε στην οθόνη (γραφικά και κείμενο) να τα παράγει και στον εκτυπωτή.
Η τωρινή έκδοση 8 έχει επιπλέον τύπο μεταβλητής το έγγραφο (όχι απλά ένα αλφαριθμητικό αλλά το κείμενο με τις παραγράφους του) και την ομάδα (μπορεί κανείς να βάλει μεταβλητές, πίνακες, τμήματα και συναρτήσεις και ομάδες σε μια ομάδα). Το έργο τελειώνει με το εγχειρίδιο χρήσης. Προς το παρόν τελειώνει το αγγλικό και ετοιμάζεται και το ελληνικό. Υπάρχει όμως ήδη ενσωματωμένη βοήθεια στα Ελληνικά και τα Αγγλικά (π.χ. γράφουμε Βοήθεια ΟΛΑ και παίρνουμε όλες τις εντολές σε μια φόρμα όπου με απλό κλικ με το ποντίκι βλέπουμε άμεσα κάθε εντολή με παραδείγματα).
Βεβαίως στο εκπαιδευτικό κομμάτι, πρέπει να γραφτούν "ιδέες" για εκπόνηση εφαρμογών. Προς το παρόν σε φροντιστήριο έχει χρησιμοποιηθεί η γλώσσα για εκμάθηση απλών εντολών σε παιδιά Τετάρτης δημοτικού και πολύ μικρών προγραμμάτων π.χ. βρες έναν αριθμό..όπου ο υπολογιστής θέτει έναν τυχαίο και ρωτάει τον χρήστη ποιος είναι και απαντάει αν είναι μεγαλύτερος ή μικρότερος ή αν τον βρήκε ο χρήστης. Οι εντολές γράφτηκαν με ελληνικά (η Μ2000 έχει όλες τις εντολές σε δυο γλώσσες, ελληνικά και αγγλικά). Επιπλέον οι μαθητές είδαν πως φτιάχνουμε διάφορα γραφικά, γραμμές και κύκλους και είδαν πως φτιάχτηκε μια σκακιέρα με πιόνια. Επιπλέον είδαν πώς γίνεται να έχουμε με μια μεταβλητή την σκακιέρα σε διάφορα μεγέθη! Ασφαλώς δεν βρήκαν οι μικροί μαθητές τη λύση, αλλά έδειξαν ενδιαφέρον και έγραψαν τις εντολές στον ενσωματωμένο διορθωτή και τις έτρεξαν. Ένα παιδί με μεγάλο πρόβλημα όρασης χρησιμοποίησε άνετα την Μ2000 αφού στις ρυθμίσεις βάλαμε μεγάλο μέγεθος γραμμάτων! Το κάθε παιδί διαμόρφωσε το δικό του περιβάλλον με τις επιλογές χρωμάτων. Είναι βασικό για τα παιδιά να μην περιορίζονται στα ίδια αλλά να έχουν αυτά που φτιάχνουν την προσωπική τους σφραγίδα, όπως είναι η ζωγραφιά τους!
Συνοψίζοντας: Το εργαλείο που έχω φτιάξει από μόνο του δεν μπορεί να ενταχθεί σε μια εκπαιδευτική διαδικασία. Πρέπει να φτιαχτούν ασκήσεις, και να το δει κανείς στην πράξη. Δεν είναι παράξενο πως δεν υπάρχει άλλη ελληνική γλώσσα προγραμματισμού με αυτήν την ολοκλήρωση της Μ2000 γιατί απαιτεί πολλά χρόνια ανάπτυξης. Έτσι η ουσιαστική ανυπαρξία ενδιαφέροντος εστιάζεται στο γεγονός ότι δεν "παραγγέλθηκε" μια γενικού σκοπού γλώσσα για την πρωτοβάθμια και την δευτεροβάθμια εκπαίδευση. Ακόμα και η ΓΛΩΣΣΑ στο λύκειο δεν παραγγέλθηκε ως μια υπαρκτή γλώσσα, αλλά απλά περιγράφονταν σε ένα βιβλίο, και ανεξάρτητα δυο Έλληνες έφτιαξαν ο καθένας την δική του εκδοχή της ΓΛΩΣΣΑΣ, η μια τελικά έγινε και επίσημα αποδεχτή από το σχολείο (την μια την έφτιαξε εκπαιδευτικός σε δημόσιο σχολείο και την άλλη εκπαιδευτικός στον ιδιωτικό τομέα, και τελικώς προτιμήθηκε η γλώσσα του πρώτου). Όμως όπως αναφέρθηκε και παραπάνω η ΓΛΩΣΣΑ εστιάζει στον αλγόριθμο, και όχι στο πρόγραμμα, δεν έχει βιβλιοθήκες ρουτινών ούτε εντολές για αρχεία, γραφικά, βάσεις δεδομένων και πολυμέσα. Μόνο πίνακες φτιάχνει και εκτελεί  συγκρίσεις και επαναλήψεις (όπως όλες οι γλώσσες). Οι δε έτοιμες συναρτήσεις είναι ελάχιστες.
Ουσιαστικά αν δεν υπήρχε ο Διερμηνευτής της Γλώσσας και η Γλωσσομάθεια το μάθημα θα γίνονταν στα χαρτιά. Εδώ δηλαδή έχουμε ασκήσεις μεν αλλά χωρίς το εργαλείο! Ασφαλώς σήμερα υπάρχει το εργαλείο (ο Διερμηνευτής της ΓΛΩΣΣΑΣ) αλλά δεν έχει τομείς δραστηριοτήτων εκτός από τους πίνακες!

Η ιδέα μου βασίζεται σε ένα υπολογιστή της δεκαετίας του 80 όπου στην Αγγλία φτιάχτηκε μετά από προκήρυξη ενδιαφέροντος για την παραγωγή εκπομπών τηλεόρασης. Το μοντέλο λέγονταν BBC Model B και καθιερώθηκε όχι μόνο στο κανάλι BBC αλλά και σε όλα τα σχολεία. Βρήκα τέτοια μοντέλα στο ΤΕΙ σε εργαστήριο χειρισμού εργαλειομηχανών CNC (computer numerical control). Τα πολύ καλά χαρακτηριστικά του μοντέλου το έκαναν χρήσιμο σε πολλές εργασίες. Εκτός από το Hardware εκείνο που είχε επίσης τη σημασία του ήταν το Software. Περιλάμβανε μια εκπληκτική Basic με δυνατότητες γραφικών και ήχου (δεν είχαμε πολυμέσα τότε). Έμαθα την χρήση του από το εγχειρίδιο και από το μηνιαίο Acorn User. Αγόρασα ξεχωριστό βιβλίο για γραφικά και το προχωρημένο εγχειρίδιο. Δεν είχα δάσκαλο και δεν υπήρχε διαδίκτυο για πληροφόρηση, μόνο περιοδικά. Σε αντίθεση στην Αγγλία είχαν τα πάντα! Σήμερα σκεφτόμαστε γιατί εμείς δεν είμαστε τόσο ανταγωνιστικοί όσο οι άλλοι. Και πώς να είμαστε όταν μας χωρίζουν χρόνια διαφοράς στην εκπαίδευση; Θυμάμαι ακόμα τον υπολογιστη ΚΑΤ της Gigatronics, το 1987, μιας ελληνικής εταιρείας που εκθείαζε ο Ανδρέας Παπανδρέου. Δεν περπάτησε. Δεν περπατάνε ιδέες στην Ελλάδα! Χωρίς ιδέες δεν πάμε μπροστά! Τα σημερινά αποτελέσματα δεν είναι τυχαία...έχουν αίτια στην κακή εκπαίδευση και την αντιμετώπιση του Έλληνα για κάθε νέα ιδέα.
Θέλω να είμαι αισιόδοξος ότι η δουλειά μου δεν θα πάει χαμένη (δεν συζητώ για υλική ανταμοιβή), και ότι κάποια στιγμή κάποια άτομα από την εκπαιδευτική κοινότητα δεν θα θελήσουν να ανακαλύψουν τον τροχό αλλά θα πάρουν κάτι έτοιμο και θα το αξιοποιήσουν!

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.