Το να γράφει κανείς προγράμματα διαφέρει από το να μαθαίνει κάποιον προγραμματισμό. Το δεύτερο θέλει μικρή γνώση προγραμματισμού γιατί απευθύνεται σε μαθητές και έτσι εκεί περισσότερο μετράει ο τρόπος εκπαίδευσης.
Έχω ασχοληθεί με τον προγραμματισμό χωρίς να έχω δάσκαλο..(αν και έτυχε να είχα σε ΤΕΙ καθηγητές πληροφορικής που δίδασκαν τα βασικά, ενώ βρισκόμουν σε προχωρημένο στάδιο).
Παρόλα αυτά έτυχε να μου ζητηθεί να δείξω μερικά πράγματα και έτσι σχημάτισα μια γνώμη για την εκπαίδευση.
Διαχώρησα λοιπόν την εκπαίδευση στους υπολογιστές σε δυο κύριες ομάδες, σε εκείνη που χρησιμοποιεί τον υπολογιστή σαν εργαλείο και σε εκείνη την ομάδα που το χρησιμοποιεί σαν συσκευή. Η διαφορά είναι ότι το εργαλείο πρέπει να ρυθμιστεί και να παράγει έργο σε εύλογο χρονικό διάστημα, ενώ η συσκευή παραδίδεται με ένα εγχειρίδιο και δίνει άμεσα αποτελέσματα, το τελικό προϊόν.
Ο περισσότερος κόσμος ασχολείται με τον υπολογιστή ως συσκευή. Βάζει apps με ευδιάκριτα μενού και περιμένει μια ομαλή απόκριση. Ο επιστημονικός κόσμος όμως θέλει έναν υπολογιστή παραμετροποιήσιμο. Παλιά το ζήτημα είχε να κάνει με τα δεδομένα. Τα πρώτα βιβλία είχαν να κάνουν με τις δομές δεδομένων. Όποιος μπορούσε να τα χειριστεί είχει τον υπολογιστή ως εργαλείο. Οι πρώτοι υπολογιστές δεν είχαν δυνατότητες γραφικών. Όταν λοιπόν εφαρμόστηκε το γραφικό περιβάλλον τότε έγινε κατανοητή η λύση προβλημάτων με αντικειμενοστραφή προγραμματισμό. Τα αντικείμενα χρησιμοποιούσαν μεν δομές δεδομένων, αλλά εκείνο που μέτραγε πια ήταν η επικοινωνία μεταξύ τους, και αυτό απαίτησε ειδικά μοντέλα όπως το COM,
http://www.cs.umd.edu/~pugh/com/ όπου το βασικό τους χαρακτηριστικό είναι να είναι ανεξάρτητα από γλώσσα προγραμματισμού, και παράλληλα να είναι σαν συσκευές με κλειδί για λειτουργία και εγχειρίδιο. Ασφαλώς η τεχνολογία έχει προχωρήσει. Σε κάθε περίπτωση όμως παραμένει το χαρακτηριστικό να μπορεί κανείς να χρησιμοποιεί πληθώρα προγραμαμτιστικών γλωσσών και περιβαλλόντων αυτών μαζί με έτοιμα αντικείμενα.
Έτσι όταν μιλάμε για προγραμματισμό δεν πρέπει να μένουμε μόνο στο πως μια γλώσσα δίνει δυνατότητες για είσοδο, έξοδο, μεταβολή ροής, επαναλήψεις, και έλεγχο συνθηκών, ή ακόμα και τι μεταβλητές υποστηρίζει, αλλά και πώς μπορούμε να χρησιμοποιήσουμε αντικείμενα για διάφορες εργασίες. Τέτοιες εργασίες είναι η εκτύπωση, το σκανάρισμα, η χρήση βάσεων δεδομένων (αντικειμένων που άμεσα συνδέουν ένα πρόγραμμα με μια βάση δεδομένων).
Δυστυχώς με μια γλώσσα όπως αυτή που γίνεται χρήση εδώ στο SpiNet, ο προγραμματισμός παραμένει σε επίπεδο "δημοτικού". Τα προγράμματα τελικά είναι προγράμματα επίδειξης, demo για κάποιες εντολές. Τα δε δύσκολα προβλήματα σχετίζονται με τον χρόνο που θα πάρει σε κάποιον να το σκεφτεί, ουσιαστικά να διαβάσει το ζήτημα, και καμία φορά τα λάθη που θα κάνει από αβλεψία (δεν υπάρχει δύσκολο πρόβλημα....αν υπάρχει σωστή προσφώνηση...η οποία επειδή είναι σωστή θα έχει λογικά αποκλείσει οποιαδήποτε παρανόηση). Ουσιαστικά όποιος κόβεται στον προγραμματισμό, σίγουρα συμβαίνουν ένα από τα τρία: Δεν διάβασε καλά το πρόβλημα, διάβασε αλλά δεν είχε χρόνο...επειδή σκέφθηκε κάτι άλλο, ή κατάλαβε τι ήθελε το πρόγραμμα αλλά έκανε λάθος σε ένα πρόσημο ή στο γνωστό πρόβλημα του συν ένα....(έβαλε κάπου ένα +1 ή αντί για > έβαλε >=)
Το ερώτημα που μένει είναι αν μπορεί κάποιος να ζητήσει περισσότερα πράγματα για το προγραμματισμό από μαθητές γυμνασίου, λυκείου ή και των δύο! Η απάντηση εδώ έχει να κάνει με το ίδιο το μάθημα. Θα έπρεπε ο προγραμματισμός να είναι μέρος άλλων μαθημάτων και όχι να αποτελεί ξεχωριστό κομμάτι. Έτσι θα μπορούσε κανείς να χρησιμοποιήσει προγραμματισμό σε ένα Excel για αυτοματισμό. Επίσης θα μπορούσε σε ένα μάθημα ηλεκτρονικών να φτιάξει ένα απλό πρόγραμμα μέτρησης θερμοκρασίας σε ένα μικροελεγκτή που συνδέεται με ένα όργανο, ή σε ένα μάθημα ρομποτικής να μάθει να μετακινεί έναν βραχίονα μαθαίνοντας πράγματα και πέρα από τον προγραμματισμό.
Προς το παρόν εδώ θα βλέπουμε απλά προγράμματα επίδειξης εντολών...και αυτός που θα τα διαβάζει θα κάνει wow όταν τα καταλαβαίνει (και έχει το κουράγιο να τα διαβάσει). Ας μείνουμε λοιπόν στο τι δίνει ο καθένας μας, στο κάτι, και ας αφήσουμε το κάτι άλλο να το ανακαλύψει μόνος του ο μαθητής (γιατί μπορεί, υπάρχουν όλα στο διαδίκτυο). Ασφαλώς ο blackgul αναφέρεται στο κάτι άλλο που μπορεί να δώσει...αλλά όπως έγραψα δεν υπάρχει λόγος να το κάνει...δεν το απαιτεί ο μαθητής, δεν είναι στην ύλη του!