Ας το πιάσω από αλλού: Ουσιαστικά το βιβλίο με την ψευδογλώσσα μιλάει σε «αλγοριθμικό επίπεδο» και με τη ΓΛΩΣΣΑ σε «προγραμματιστικό επίπεδο». Αυτό μπερδεύει καταρχάς τους συναδέλφους που προσπαθούν να τα συγχωνεύσουν όλα σε ένα επίπεδο, το οποίο θα τους άρεσε να το ονομάζουν αλγοριθμική, αλλά που στην ουσία είναι προγραμματισμός!
Έτσι λοιπόν η ψευδογλώσσα είναι πολύ πιο χαλαρή… και μάλλον εσκεμμένα έχει μικροδιαφορές στη σύνταξή της (μονά-διπλά εισαγωγικά, πεζά-κεφαλαία, κόμμα-τελεία για υποδιαστολή, κλπ) και κυρίως στη λειτουργία της από τη ΓΛΩΣΣΑ. Θα έλεγα ότι κάποια που λέμε θεωρητικά ότι γίνονται σε αλγοριθμικό επίπεδο, δεν προκύπτουν στην πράξη στο προγραμματιστικό επίπεδο! Τα παραδείγματα είναι πολλά και σκέφτομαι να ανοίξω ειδικό θέμα στο Στέκι. Ενδεικτικά, μερικά:
Α) Η ψευδογλώσσα δεν κάνει διάκριση ακέραιων και πραγματικών και για αυτό και δεν είχε μέχρι πρόσφατα div και mod. Υπήρχαν βέβαια τρόποι να βρούμε το πηλίκο και το υπόλοιπο ακέραιας διαίρεσης (π.χ =[Μ/2], =Μ-[Μ/2]*2). Βέβαια αυτό δεν μας άρεσε και ουσιαστικά προκαλέσαμε την πρόσφατη σχετική διόρθωση του βιβλίου, το οποίο όμως απομακρύνθηκε από το αρχικό πνεύμα του.
Β) Στη ΓΛΩΣΣΑ αναπόφευκτα έχουμε περιορισμούς στα μεγέθη των αριθμών. Έτσι, στην ψευδογλώσσα το παρακάτω λέμε ότι κάνει άπειρες επαναλήψεις.
i <- 10000
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
i <- i* 2
ΓΡΑΨΕ i
ΜΕΧΡΙΣ_ΟΤΟΥ i <= 100
Στην ΓΛΩΣΣΑ όμως όχι! (στον Διερμηνευτή της ΓΛΩΣΣΑΣ το δοκίμασα και κάνει μόλις 50!!!).
Γ) Ομοίως, στην ψευδογλώσσα το παρακάτω λέμε ότι δεν εμφανίζει τίποτα.
b <- 1/ 1000000000
ΑΝ b = 0.000000002 ΤΟΤΕ
ΓΡΑΨΕ '*'
ΤΕΛΟΣ_ΑΝ
Στην ΓΛΩΣΣΑ όμως εμφανίζει το «*» ! (με τις default ρυθμίσεις του Διερμηνευτή).
Δ) Ομοίως το παράδειγμα με τον περιβόητο αλγόριθμο υπολογισμό του a^b. Στην ψευδογλώσσα είναι ΟΚ, όμως στην ΓΛΩΣΣΑ όχι! Εκτός κι αν το πετσοκόψουμε και μιλάμε π.χ. για α^53.
Ε) Έτσι, το θέμα 3 σε ψευδογλώσσα δεν έχει (κατ' εμέ) πρόβλημα με Διάβασε Ν και πίνακες, ενώ στη ΓΛΩΣΣΑ δεν γίνεται (βέβαια σε άλλες γλώσσες γίνεται!)
-------------
Σε σχέση με την εντολή Δεδομένα δεν μίλησε κανείς για «ισοδυναμία» ούτε καν για «1-1». Οι 3 εναλλακτικές που αναφέρω είναι για την περίπτωση που κάποιος πήγαινε να κάνει μετατροπή του αλγορίθμου σε πρόγραμμα σε κάποια γλώσσα προγραμματισμού. Το γεγονός ότι δεν είναι εφικτές πάντα όλες αυτές οι μετατροπές σε ΓΛΩΣΣΑ, και εξετάζεις με διαφορετικό τρόπο μία μία περίπτωση, είναι επειδή ακριβώς λαμβάνεις υπόψη σου τους περιορισμούς της ΓΛΩΣΣΑΣ. Όμως αυτό ακριβώς είναι που δείχνει ότι δεν μετατρέπονται (αν δεν κατακρεουργηθούν) όλοι οι αλγόριθμοι του βιβλίου στη ΓΛΩΣΣΑ. Όμως αυτό δεν είναι σημαντικό ούτε και ουσιώδες, αφού (όπως ανέφερα παραπάνω) έτσι κι αλλιώς υπάρχουν σημαντικές διαφορές ανάμεσα στο «αλγοριθμικό επίπεδο» και στο «προγραμματιστικό επίπεδο», ή, αλλιώς, στη «λειτουργία» της ψευδογλώσσας από αυτήν της ΓΛΩΣΣΑΣ. Αρκεί που οι μετατροπές είναι εφικτές σε άλλες γλώσσες προγραμματισμού. Το τι νόημα έχει η εντολή αυτή προκύπτει από το βιβλίο καθηγητή και τη δημοσίευση του Κοίλια και όχι ανάλογα με το τι εκτιμάμε εμείς. Το να δίνουμε εμείς στην εντολή Δεδομένα διαφορετικό νόημα κάθε φορά, προκειμένου να καταστήσουμε συμβατή την ψευδογλώσσα με τη ΓΛΩΣΣΑ δείχνει ότι δεν διακρίνουμε το αίτιο από το αιτιατό. Το ότι δεν εφικτές όλες οι μετατροπές στη ΓΛΩΣΣΑ είναι αναπόφευκτο αποτέλεσμα, και όχι κάτι που πρέπει να καταπολεμήσουμε, αφού μας ενδιαφέρει η αλγοριθμική και όχι ο προγραμματισμός όπως λες.
Όλα αυτά δεν σημαίνουν ότι προτείνω πίνακες παντού (όπως τονίζω σε κάθε μήνυμά μου), αλλά άλλο είναι να λέμε ότι κάτι «είναι λάθος», άλλο είναι να λέμε ότι «δεν είναι η καλύτερη λύση».
Τα συγκεκριμένα παραδείγματά σου κατ' αμέ είναι αδύναμα αφού φαίνεται καθαρά ότι η επιχειρηματολογία τους είναι βεβιασμένη και επινοήθηκε εκ των υστέρων για να δικαιολογηθεί η άποψη της ΚΕΕ. Έτσι, επικαλείσαι την επίλυση προβλημάτων της καθημερινότητας χωρίς τη χρήση υπολογιστή, αλλά υιοθετείς περιορισμούς από το χώρο του προγραμματισμού υπολογιστών. Όμως οι αναλογίες σου θεωρώ θα προκαλούν προβληματισμό στα παιδιά! Έτσι, σύμφωνα με την επιχειρηματολογία σου δεν θα μπορούσαμε να ταξινομήσουμε τα CD αν δεν ξέρουμε από την αρχή πόσα είναι, το οποίο σε έναν μαθητή θα προξενούσε σύγχυση… Σύγχυση καταρχάς σε σχέση με το τι σημαίνει από την αρχή. Ποια είναι η αρχή; Όταν θα έχει διατυπωθεί το πρόβλημα; Ή μήπως αφού φροντίσουμε να έχουμε μάθει κάποιες επιπλέον πληροφορίες (βλ. το πλήθος των CD ως σταθερά); Σε επίλυση προβλημάτων χωρίς υπολογιστή αυτό δεν έχει σημασία! Η αναζήτηση των επιπλέον πληροφοριών μπορεί να είναι και μέρος της φάσης επίλυσης (βλ. το «Διάβασε» το πλήθος των CD ως μεταβλητή, ή και η ανεύρεση των απαιτούμενων θηκών που ναι μπορεί και να μην υπάρχουν). Μάλιστα, ο μαθητής θα σου έλεγε πως: «Εγώ τα CD μου τα έχω ήδη σε θήκες (βλ. σε πίνακες) και παρόλα αυτά δεν ξέρω πόσα είναι! Ξεκινάω τη διαδικασία της επίλυσης, αρχικά βλέπω πόσα είναι, και στη συνέχεια εφαρμόζω ταξινόμηση»! Τι θα του πεις τότε; Ότι «δεν επιτρέπεται αυτό» γιατί η μέθοδός του δεν ταιριάζει καλά σε αυτό που θέλεις να του εξηγήσεις; Ή ότι θα πρέπει να τα μετρήσει πρώτα και μετά να «κηρύξουμε» την έναρξη της επίλυσης; Και ποια είναι η διαφορά; Στο τέλος θα χάσουμε το δάσος για να μη μας χαλάσει το δέντρο! Τα προβλήματα της καθημερινότητας συνήθως είναι ανοιχτά – δεν έχουμε από την αρχή όλα τα δεδομένα και καμιά φορά θα πρέπει να τα ανακαλύψουμε μόνοι μας. Βιβλίο σελ. 12: «Δεν είναι πάντοτε ιδιαίτερα κατανοητό τι ακριβώς ζητάει ένα πρόβλημα. Σε μια τέτοια περίπτωση θα πρέπει να θέτονται μια σειρά από ερωτήσεις με στόχο την διευκρίνηση πιθανών αποριών σχετικά με τα ζητούμενα, τον τρόπο παρουσίασής τους, το εύρος τους κ.λπ. Οι ερωτήσεις αυτές μπορούν να απευθύνονται είτε στο δημιουργό του προβλήματος, είτε στον ίδιο μας τον εαυτό αν εμείς καλούμαστε να αντιμετωπίσουμε το πρόβλημα.» Όμως στο σχολείο έχουμε μάθει να μιλάμε για συγκεκριμένου τύπου προβλήματα, με αυστηρούς περιορισμούς, που τα απομακρύνουν από τον πραγματικό κόσμο (π.χ. να μην έχουμε ισοβαθμίες, να δεχτούμε ότι μπορεί κάποιος να κάνει πήδους ακόμα και 50 μέτρων αν η άσκηση δεν μας λέει το αντίθετο, να φροντίσουμε ώστε η μέθοδός μας να δουλεύει σωστά για όλους τους πλανήτες και στον αιώνα τον άπαντα, να μη βάζουμε μόνοι μας «αυθαίρετα» όρια, κλπ.) Αυτό μπορεί να ισχύει για τα μαθηματικά, όπου αυτή η αφαίρεση είναι αναγκαία και που η έννοια της απόδειξης καταλαμβάνει το κεντρικό ρόλο, ή στη φυσική-χημεία που λύνουμε προβλήματα υπό ιδανικές συνθήκες (π.χ. χωρίς τριβές), αλλά δεν θα έπρεπε σε εμάς. Για τους ίδιους λόγους μας ενοχλεί όταν κάποιες ασκήσεις του τετραδίου μαθητή δεν διευκρινίζουν απόλυτα ποια είναι τα δεδομένα και τα ζητούμενα. Μας ενοχλεί όταν υπάρχουν δεδομένα που περισσεύουν – που δεν παίζουν ρόλο στη λύση – ή όταν λείπουν πράγματα που χρειάζονται. Και θεωρούμε ότι είναι πολύ σημαντικό το αν θα ξέρουμε από την αρχή το πλήθος των CD ή αν θα κάνουμε Διάβασμα στην πορεία. Έτσι καταλήγουμε σε ανούσιους τυφλοσούρτες του στυλ «αν έχουμε Διάβασε Ν τότε δεν μπορούμε να…». Κι όμως η σχετική βιβλιογραφία για το επίπεδο της αλγοριθμικής δεν συμφωνεί καθόλου με κάτι τέτοιο (βλ. σχετική παρουσίαση στο WIE στην Τρίπολη φέτος)….
Από τη στιγμή που επικαλείσαι επίλυση προβλημάτων και όχι προγραμματισμό (όπως κι εγώ! – βλ. τελευταίο παραπάνω μήνυμά μου όπου παραθέτω και αναφορές από το σχολικό βιβλίο), τότε τέτοιοι αυστηροί περιορισμοί δεν θα έπρεπε να υφίστανται όταν είμαστε στο στάδιο της επινόησης του αλγορίθμου, αλλά όταν - και αν - πάμε στο στάδιο του προγραμματισμού. Με τη δικιά μου οπτική, λοιπόν, εσύ είσαι αυτός που δίνει έμφαση στον προγραμματισμό! Για αυτό και θεωρώ ατυχή την τελευταία αναφορά σου για το υπουργείο.
Παρασκευά δεν σου κρύβω ότι προχώρησα να απαντήσω με μεγάλη απροθυμία για διάφορους λόγους: α) σε εκτιμάω και σε σέβομαι επειδή γνωρίζω το επίπεδο που κρατάς ως εκπαιδευτικός, οπότε δεν ήθελα να χαλάμε τις καρδιές μας, β) θεωρώ όμως ότι μου δίνεις αποσπασματική και όχι ολοκληρωμένη απάντηση σε αυτά που είχα γράψει και για αυτό είχα σκεφτεί αρχικά να μην συνεχίσω, γ) έχει φανεί από την αρχή ότι ο καθένας που συμμετείχε σε αυτή τη συζήτηση έχει τις πεποιθήσεις του τις οποίες και δεν αλλάζει, για αυτό και η συζήτηση δεν καταλήγει πουθενά (θα λέγαμε ότι σε «αλγοριθμικό επίπεδο» η συζήτηση είναι ατέρμονη – σε «προγραμματιστικό επίπεδο» δεν μπορεί να είναι ατέρμονη μεν, αλλά δεν θα δώσει αποτέλεσμα δε!), δ) ίσως όλη η συζήτηση να αποδειχθεί άχρηστη στο μέλλον λόγω των σχεδίων του υπουργείου! Έτσι δεν νομίζω ότι θα επανέρθω, τουλάχιστον αν πρώτα δεν προκύψει θετικό αποτέλεσμα σε αυτό το τελευταίο.