Αλλά και στην ψευδογλώσσα, πόσο λογικό ακούγεται ένας αριθμός να έχει άπειρα ψηφία; Δεν είναι ενάντια στον ψηφιακό κόσμο των Η/Υ, στους οποίους δεν υπάρχει τίποτα "άπειρο"; Ακόμα και οι αλγόριθμοι σε χαρτί θα πρέπει να σέβονται ορισμένους βασικούς περιορισμούς (και όντως τους σέβονται, δεν θα βρεις αλγόριθμο που να υποθέτει ότι οι αριθμοί έχουν άπειρα ψηφία)...
Να πω πάνω σε αυτό ότι ο Knuth στο βιβλίο του έτσι ακριβώς ορίζει την αποτελεσματικότητα (effetciveness). Δηλαδή θα πρέπει να μπορούν οι αλγόριθμοι να εκτελεστούν από τον άνθρωπο με μολύβι και χαρτί. Και αναφέρει σαν παράδειγμα ακριβώς αυτό που γράφει και ο Άλκης. Στην περίπτωση που έχουμε πράξεις με πραγματικούς αριθμούς αναπτυγμένους σε άπειρα δεκαδικά ψηφία παραβιάζεται η αποτελεσματικότητα λόγω του ότι δεν μπορεί να γίνει το ίδιο με μολύβι και χαρτί. Δεν μπορώ να μη θυμήσω την άποψή μου ότι το effectiveness μεταφέρθηκε λανθασμένα στα ελληνικά. Το effectiveness το χρησιμοποίησε ο Knuth με την άλλη έννοια που δίνουν τα λεξικά: αυτή της πραγματοποιησιμότητας και όχι της αποτελεσματικότητας. Ο χειρισμός απείρων δεκαδικών αναπτυγμάτων των πραγματικών είναι "μη πραγματοποιήσιμος". Τι θα μπορούσε να σημαίνει το "μη αποτελεσματικός";
Στα άλλα τώρα
Με είχε προβληματίσει παλαιότερα Ευριπίδη αυτό που λες για τη λογική. Μου φαινόταν και εμένα «παράλογο»
ότι κι αν σημαίνει τέλος πάντων λογικό και παράλογο.
Ας δούμε το παράδειγμα «Για ι από 1 μέχρι 5 με_βήμα -1»
Η λογική που αναφέρεις (και η δική μου δηλαδή) λέει το εξής:
«Ξεκινάω από 1 και θέλω να ανέβω αφού το άλλο άκρο είναι το 5. ʼρα ο συγκριτικός τελεστής που θα χρησιμοποιήσω είναι ο <=. ʼρα η ισοδύναμη Όσο είναι η παρακάτω:
ι<-1
Όσο ι<=5 επανάλαβε
ι<-ι-1
Τέλος_επανάληψης
ʼρα πάω σε ατέρμονα βρόχο.»
Η «λογική» που δείχνει να έχει το βιβλίο είναι η εξής: «Ξεκινάω από το 1 και θέλω να κατέβω αφού το βήμα είναι αρνητικό. ʼρα ο συγκριτικός τελεστής είναι το >=. ʼρα η ισοδύναμη Όσο είναι η παρακάτω:
ι<-1
Όσο ι>=5 επανάλαβε
ι<-ι-1
Τέλος_επανάληψης
ʼρα δεν μπαίνω καμία φορά στο βρόχο.»
Η διαφορά των 2 «λογικών» είναι στο κριτήριο με βάση το οποίο αποφασίζουμε αν ανεβαίνουμε ή κατεβαίνουμε. Η πρώτη λογική βασίζεται στο άλλο άκρο. Η δεύτερη λογική βασίζεται στο βήμα. Βέβαια το πρόβλημα είναι ότι έχουμε να κάνουμε με μια παθολογική περίπτωση (είτε 0 είναι οι επαναλήψεις είτε άπειρες). Έτσι το βήμα και το δεξί άκρο δίνουν διαφορετικές "εκτιμήσεις".
Στη λογική του βιβλίου τίθεται το θέμα του τι γίνεται με βήμα 0. Δεν υπάρχει σαφής ορισμός μετατροπής, οπότε η πρώτη σκέψη που θα μπορούσα να κάνω είναι η εξής:
Για να υπάρχει συμμετρία ως προς τις 2 κατευθύνσεις θα έπρεπε να χρησιμοποιηθεί ο τελεστής <>. Δηλαδή:
ι<-1
Όσο ι<>5 επανάλαβε
ι<-ι+0
Τέλος_επανάληψης
Βέβαια υπάρχει και η σκέψη του ʼλκη: «Αφού ο αριθμός επαναλήψεων πρέπει να είναι συγκεκριμένος και σταθερός τότε δεν επιτρέπεται να είναι ατέρμων ο βρόχος γιατί το άπειρο δεν είναι συγκεκριμένος αριθμός. ʼρα αν μπει βήμα 0 τότε δεν θα πρέπει να έχουμε ατέρμων βρόχο. ʼρα τι μένει; Να είναι λάθος εκτέλεσης»
Βασικά έχω προσέξει ʼλκη ότι εμείς οι 2 έχουμε μια διαφορετική προσέγγιση των πραγμάτων. Εσύ κυρίως ενδιαφέρεσαι για το πώς θα μπορούσαν να είναι τα πράγματα έτσι ώστε να βγαίνουν αληθής όλες οι προτάσεις του σχολικού βιβλίου. Λογικό μια που έχεις κάνει την υλοποίηση και κεντρικό σου μέλημα ήταν να υλοποιήσεις αυτό ακριβώς που περιγράφεται και όχι κάτι άλλο. Εγώ είμαι πιο πολύ «φιλόσοφος». Με απασχολεί το πως θα μπορούσαν να είναι τα πράγματα (συμπεριλαμβανομένου και του σχολικού βιβλίου) έτσι ώστε να δένουν όλα όσο γίνεται καλύτερα μεταξύ τους.
Αυτό που με απασχολεί εμένα (δεν το έχω σκεφτεί ακόμα αλλά το θέτω προς προβληματισμό) είναι το εξής:
Επιτρέπεται τελικά να ρωτήσουμε σε Σ-Λ αν η Για με βήμα 0 παραβιάζει την περατότητα;Αν είναι λάθος η σύνταξη της "Για" με βήμα 0 τότε δεν θα παραβιαστεί καμία περατότητα γιατί δεν υπάρχει τέτοια σύνταξη. Αν υπήρχε τέτοια σύνταξη τότε θα είχαμε παραβίαση της περατότητας. Αλλά δεν υπάρχει γιατί σύμφωνα με το βιβλίο "Η Για πρέπει να εκτελείται για προκαθορισμένο αριθμό επαναλήψεων" και το άπειρο δεν είναι προκαθορισμένος αριθμός επαναλήψεων. Για να το θέσω διαφορετικά: Υπάρχει περίπτωση να κατασκευάσει κάποιος ατέρμονα βρόχο στο Διερμηνευτή χρησιμοποιώντας τη Για; Εννοώ να τον βάλει να τρέξει και να μην τελειώνει ποτέ.
Από την άλλη μεριά το βιβλίο λέει: "το βήμα δεν μπορεί να είναι μηδέν γιατί ο βρόχος εκτελείται επ' άπειρον". Ίσως μια διέξοδος να είναι ότι η Για με βήμα 0 απλά δεν χρησιμοποιείται λόγω του ότι δε λύνει κάποιο πρόβλημα. Δηλαδή ότι το βιβλίο εννοεί ότι δεν χρησιμοποιείται και όχι ότι δεν γίνεται να χρησιμοποιηθεί. Θα μπορούσε δηλαδή να επιτρέπεται η χρηση του με τον κίνδυνο εγκλωβισμού σε ατέρμονα βρόχο.
Φυσικά δεν τίθεται κανένα θέμα παιδαγωγικής αξίας. Για να χρησιμοποιήσεις τη "Για" θα πρέπει να ξέρεις πόσες φορές θα την εκτελέσεις. ʼρα αποκλείεται να συλλάβεις λύση προβλήματος με "Για" που έχει βήμα 0.