Δομημένος προγρ/σμός: επιτρέπει την άμεση μεταφορά των

Ξεκίνησε από Sergio, 29 Ιαν 2011, 10:49:21 ΠΜ

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

Sergio

Απορία μαθητή..

Και ο αδόμητος δεν την επιτρέπει;  Αφού οι περισσότερες γλώσσες  "..για λόγους συμβατότητας.. διατηρούν την GOTO στο ρεπερτόριό τους"..

Οπότε;




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


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

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

Με την ανάδειξη του δομημένου προγραμματισμού σε ανώτερη μεθοδολογία για την ανάπτυξη σωστών προγραμμάτων, επισημάνθηκαν οι κίνδυνοι από την αλόγιστη χρήση της εντολής goto και δημιουργήθηκαν νέες γλώσσες (ή εμπλουτίστηκαν παλιές) κατά τρόπο που να επιτρέπουν την ανάπτυξη των προγραμμάτων ΧΩΡΙΣ τη χρήση της εντολής goto.  Οι γλώσσες αυτές, που υποστηρίζουν την ανάπτυξη προγραμμάτων με χρήση των τριών βασικών αλγοριθμικών συνιστωσών (ακολουθίας - επιλογής και επανάληψης) καθώς και συνδυασμών τους, λέμε ότι υποστηρίζουν το δομημένο προγραμματισμό.

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

Αντίθετα, αν ΔΕΝ υποστηρίζει το δομημένο προγραμματισμό, δηλαδή δεν παρέχει τις απαραίτητες εντολές για την κωδικοποίηση απλών - σύνθετων - πολλαπλών επιλογών, βρόχων, και συνδυασμών τους αλλά στηρίζεται στη χρήση του goto για την κωδικοποίηση των αντίστοιχων δομών, αυτή η γλώσσα ΔΕΝ επιτρέπει την άμεση μεταφορά των αλγόριθμων (που έχουμε μάθει να αναπτύσσουμε με το δομημένο τρόπο) σε προγράμματα.
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

sstergou

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

http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf

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

Πάντως ούτε και εγώ καταλαβαίνω αυτό με την "άμεση μεταφορά"..

Sergio

#2
Παράθεση από: sstergou στις 29 Ιαν 2011, 11:01:55 ΠΜ
Μπορώ να έχω δομημένο προγραμματισμό με goto αρκεί να ακολουθούνται κάποιοι κανόνες όπως αυτός που αναφέρει το βιβλίο στο σημείο που αναλύει την εμφώλευση βρόχων.

http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf

Συμφωνώ απολύτως !!  Από προσωπική εμπειρία, επι 3 χρόνια αυτό έκανα, και μάλιστα σε Cobol.  Να είναι καλά ο σπουδαίος μου δάσκαλος, ο Δημήτρης ο Κόλιας προϊστάμενός μου στη UniSystems (και πλέον καλός φίλος) που εκπαίδευσε μια ολόκληρη ομάδα προγραμματιστών στο έργο branch automation στην πάλαι ποτέ Τράπεζα Πίστεως.  Εξαιρετικός, αμερικανοτραφής, προγραμματιστής με μοτό το "source programs should be written for .. human processors. As for the computer, that is the job of the compiler..".  Νά σαι καλά Δημήτρη :)

Τώρα όσο για την ιστορία του θέματος, να αναφέρω και μία ακόμα ανέκδοτη ιστορία.. την ίδια άποψη με αυτή που (σωστά και κατα τη δική μου άποψη, πλέον) αναφέρεις Στάθη, είχε εκφράσει στο μάθημα Advanced Programming (Manchester, 1989) ο καθηγητής Charles Lindsay, μέλος της ομάδας ανάπτυξης της Algol 60.  Με έβαλε σε σκέψεις, και αναζήτησα στη βιβλιοθήκη το άρθρο του Dijkstra (CACM, March 68: GOTO statement consodered harmful).  Το άρθρο περιλαμβάνει τη φράση: "..I became convinced that  GOTO statement should be abolished from all high level languages ..".  Τα αγγλικά μου με πρόδωσαν σε εκείνο το σημείο.. το λεξικό με έσωσε.. abolish = εξαφανίζω.  Επόμενο βήμα: knock-knock on Lindsay's door.. και κουβέντα επί μία ώρα..  Συμπέρασμα: ..δεν το εννοούσε έτσι ο Edgar (Dijkstra)..

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

Sergio

Παράθεση από: sstergou στις 29 Ιαν 2011, 11:01:55 ΠΜΌσον αφορά τώρα το συγκεκριμένο σημείο δεν νομίζω ότι αφορά την μεταφορά αλγορίθμων αλλά την συντήρηση "παλιών" προγραμμάτων τα οποία χρησιμοποιούν την εντολή. Η κατάργησή της θα σήμαινε μία νέα γλώσσα ασύμβατη με την προηγούμενη.

Πάντως ούτε και εγώ καταλαβαίνω αυτό με την "άμεση μεταφορά"..

Ούτε εγώ :(

Επιπλέον, στη διόρθωση και συντήρηση των παλαιών προγραμμάτων αναφέρεται στο τελευταίο σημείο του ίδιου πλαισίου (σελ.136).

Επομένως στο «επίμαχο» μάλλον αλλού αναφέρεται.

Που όμως;  Πώς το εξηγούμε;
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

sstergou

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

Επίσης δεν είμαι σίγουρος σε τι εξυπηρετεί ο διαχωρισμός αλγορίθμου-προγράμματος. Ο Knuth περιγράφει αλγορίθμους σε μια assembly γλώσσα. Οπότε εκεί πέρα το jmp πάει σύννεφο. Τι πάει να πει δηλαδή ότι αυτό δεν είναι αλγόριθμος;

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

Sergio

Παράθεση από: sstergou στις 29 Ιαν 2011, 02:16:22 ΜΜ
..Επίσης δεν είμαι σίγουρος σε τι εξυπηρετεί ο διαχωρισμός αλγορίθμου-προγράμματος. Ο Knuth περιγράφει αλγορίθμους σε μια assembly γλώσσα. Οπότε εκεί πέρα το jmp πάει σύννεφο. Τι πάει να πει δηλαδή ότι αυτό δεν είναι αλγόριθμος;..

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

Τώρα τελευταία, μεταξύ σοβαρού και αστείου, όταν με ρωτούν οι μαθητές.. "κύριε, αλγόριθμο να κάνουμε;" τους απαντάω (σοβαρ - ψαρωτικά).. "ε όχι δα.. ολοκλήρωμα"... συνεχίζοντας αφού απολαύσω την έκπληξη - απορία τους για 1-2 δευτερόλεπτα.. "πάτε καλά μωρέ;.. τι άλλο να κάνετε; αυτό δεν κάνουμε όλη τη χρονιά;".. και ξανα-συνεχίζοντας μετά από άλλα 1-2 δευτερόλεπτα "απόλαυσης" με "..εκτός αν εννοείται κατα πόσον μου αρκεί να τον κωδικοποιήσετε σε ψευδογλώσσα ή θέλω προγραμματισμό σε ΓΛΩΣΣΑ..". 

ΜΙΑ - ΔΥΟ.. το πιάνουν το υπονοούμενο..

Απλά ο προγραμματισμός επιβάλλει μία μεγαλύτερη αυστηρότητα στη σύνταξη και αναγκάζει μία ..διάσπαση της προσοχής σε μη-αλγοριθμικής-φύσης θέματα.. Όπως συνήθως τους παρουσιάζω όταν κάνω το πρώτο μάθημα στο κεφάλαιο 7: «μέχρι τώρα ασχοληθήκαμε με το βασικό κομμάτι.. του χάμπουργκερ.. το μπιφτέκι.  Τώρα πλέον θα ασχοληθούμε και με τα ..αναγκαστικά.. δύο ψωμάκια που κάνουν το μπιφτέκι πιο νόστιμο και χρήσιμο. Το κάτω ψωμάκι και το πάνω ψωμάκι.. Το κάτω είναι ο υπολογιστής, και το πάνω ο χρήστης» και τους εξηγώ τον τίτλο του μαθήματος, χωρίζοντάς τον σε δύο μέρη:
1) Ανάπτυξη Εφαρμογών: με επεξήγηση του όρου εφαρμογή και αναφορά στις ιδιαιτερότητες που αφορούν στο χρήστη, (όπως εμφάνιση μηνυμάτων για την επικοινωνία μαζί του σε είσοδο και έξοδο, καθώς και για τον έλεγχο ορθής καταχώρησης)
2) σε Προγραμματιστικό Περιβάλλον: με αναφορά στις ιδιαιτερότητες που αφορούν στον υπολογιστή (όπως οι δηλώσεις των μεταβλητών & συμβολικών σταθερών καθώς και ο λόγος ύπαρξής τους, η ύπαρξη των ενσωματωμένων συναρτήσεων που αντικαθιστούν τα γνωστά μαθηματικά σύμβολα κ.ο.κ.  )
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

Sergio

Sorry αλλά προηγουμένως ξέφυγα από το θέμα :(

Η ερώτηση παραμένει:

Παράθεση από: Sergio στις 29 Ιαν 2011, 10:49:21 ΠΜ
Απορία μαθητή..

Και ο αδόμητος δεν την επιτρέπει (την άμεση μεταφορά των αλγορίθμων σε προγράμματα);  Αφού οι περισσότερες γλώσσες  "..για λόγους συμβατότητας.. διατηρούν την GOTO στο ρεπερτόριό τους"..

Οπότε;
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

sstergou

Προσπαθώ να καταλάβω το συγκεκριμένο σημείο και το μόνο που μου έρχεται στο νου σαν εξήγηση είναι: οι αλγόριθμοι είναι δομημένοι οπότε αν μια γλώσσα υποστηρίζει δομημένο προγραμματισμό τότε μπορούμε εύκολα να κωδικοποιήσουμε έναν αλγόριθμο σε αυτήν.

Αν όντως αυτό υπονοείται (δεν μπορώ να το ξέρω) τότε το θεωρώ λάθος, γιατί από πουθενά δεν προκύπτει ότι ένας αλγόριθμος πρέπει να είναι δομημένος.

Η απορία του μαθητή σου ποια είναι ακριβώς; Αν μπορούμε να μεταφέρουμε έναν αλγόριθμο σε μια γλώσσα που έχει goto και όχι τις κλασσικές δομές; Την κατάλαβα καλά;

Sergio

Παράθεση από: sstergou στις 29 Ιαν 2011, 09:34:59 ΜΜ
Η απορία του μαθητή σου ποια είναι ακριβώς; Αν μπορούμε να μεταφέρουμε έναν αλγόριθμο σε μια γλώσσα που έχει goto και όχι τις κλασσικές δομές; Την κατάλαβα καλά;

Κάτι τέτοιο.. δηλαδή: προσπαθώντας να κατανοήσει τη σημασία των, επιγραμματικά, αναφερόμενων πλεονεκτημάτων του δομημένου προγραμματισμού (σελ.136), τα ερμηνεύει ένα-προς-ένα:
1. Δημιουργία απλούστερων προγραμμάτων: ασφαλώς.. και μόνο το αδόμητο παράδειγμα της σελ.134, πείθει πως τα δομημένα είναι απλούστερα
3. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα: ε.. ναι! αφού ο δομημένος προγραμματισμός περιέχει τόσο την ιεραρχική σχεδίαση όσο και τον τμηματικό προγραμματισμό (τελευταία πρόταση σελ.135)
4. Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος: βέβαια.. και μόνο η αποφυγή της αυθαίρετης αλλαγής ροής που επιτρέπει η goto, αλλά και η τμηματοποίηση που διευκολύνεται από ιεραρχική σχεδίαση και τμηματιμό προγραμματισμό..
5. Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους: φυσικά, το δομημένο εξάλλου είναι απλούστερο (σημείο 1 - παραπάνω)
6. Ευκολότερη διόρθωση και συντήρηση: φυσικό επακόλουθο πολλών από τα παραπάνω (π.χ. σημεία 1, 5)

Όμως:
2. Άμεση μεταφορά των αλγορίθμων σε προγράμματα: ;;; δηλαδή ;;; Αν ο αλγόριθμος είναι δομημένος, το καταλαβαίνω.. Αν όμως είναι αδόμητος;;

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

Ε.. στο σημείο που συζητάμε, δυσκολεύομαι :(
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

Sergio

Παράθεση από: sstergou στις 29 Ιαν 2011, 09:34:59 ΜΜ
..το μόνο που μου έρχεται στο νου σαν εξήγηση είναι: οι αλγόριθμοι είναι δομημένοι οπότε αν μια γλώσσα υποστηρίζει δομημένο προγραμματισμό τότε μπορούμε εύκολα να κωδικοποιήσουμε έναν αλγόριθμο σε αυτήν..

Μπράβο ρε Στάθη.. αυτό πρέπει να'ναι.. (α ρε ευλογημένο Στέκι..)  Τελικά αυτό με τους Χιώτες, επαληθεύεται (ακόμα κι αν ο ένας είναι στη Ρόδο και ο άλλος στη Λάρισα ;) )

Λοιπόν, νομίζω ότι αρχίζω να βγάζω νόημα.. Η εντολή αυτή (goto: που επιτρέπει την άναρχη και απρόβλεπτη αλλαγή της σειράς εκτέλεσης των βημάτων του αλγόριθμου), πρωτο-παρουσιάζεται -στο πλαίσιο του μαθήματος πάντα- στο κεφάλαιο 6.  Καμία αναφορά σε αδόμητους αλγόριθμους δε γίνεται μέχρις εκείνο το σημείο.  Αντίθετα, όσα διδάσκονται στο πρώτο μέρος (κεφ.2,3) ουσιαστικά επιβεβαιώνουν τη δήλωση που γίνεται αργότερα στο κεφ.6 (σελ.135) ότι: «..όλα τα προγράμματα μπορούν να γραφούν χρησιμοποιώντας μόνο αυτές τις τρεις δομές, καθώς και συνδυασμό τους..», βασικό συστατικό του «ορισμού» του δομημένου προγραμματισμού και "αφετηρία" για τον ορισμό των νέων γλωσσών, αλλά και τον εμπλουτισμό παλαιότερων, με τις αντίστοιχες εντολές.

Τώρα, αν μία γλώσσα δεν υποστηρίζει κάποια(ες) από αυτές τις βασικές αλγοριθμικές συνιστώσες (όπως για παράδειγμα παλιές εκδόσεις της Cobol), τότε η μεταφορά του αλγόριθμου σε πρόγραμμα δε μπορεί να γίνει τόσο «άμεσα».  Απεναντίας, ο προγραμματιστής είναι υποχρεωμένος να «υλοποιήσει» τον αλγόριθμο χρησιμοποιώντας απαραίτητα την goto, προκειμένου να «μιμηθεί» τις πολλαπλές διακλαδώσεις μίας επιλογής ή την ανακύκλωση μιας επανάληψης..

Νομίζω ότι κάπως έτσι θα μπορούσε να στηριχτεί μια επιχειρηματολογία που να «εξηγεί» τη συγκεκριμένη φράση.. Ασφαλώς, στο πλαίσιο της συζήτησης που δημιουργείται μπορεί να αναφερθεί ότι, εάν ο αλγόριθμος είναι αδόμητος (κάτι που υποτίθεται, σκοπίμως δε διδάχτηκαν, ως υποδεέστερο τρόπο σκέψης), ο δομημένος προγραμματισμός δε μπορεί να τους προσφέρη αυτό το "πλεονέκτημα"

ε;
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

sstergou

Αν υποθέσουμε ότι οι αλγόριθμοι είναι δομημένοι τότε όντως, με αυτόν τον τρόπο εξηγείται η συγκεκριμένη φράση.

Από την στιγμή που οι αλγόριθμοι που παρουσιάζονται στο βιβλίο είναι όλοι χωρίς goto (εκτός από τον πολλαπλασιασμό αλά ρωσικά που παρουσιάζεται και σε φυσική γλώσσα κατά βήματα) τότε νομίζω μπορούμε να καθησυχάσουμε τους ανήσυχους μαθητές. :angel:

gthal

Κι εγώ στο ίδιο συμπέρασμα με εσάς καταλήγω.
Και κρίνοντάς το ίσως λίγο πιο "κακόβουλα", επισημαίνω ότι το βιβλίο (εμμέσως και όχι σαφώς) με τον τρόπο που παρουσιάζει τα πράγματα μας ωθεί (και τους μαθητές) να ταυτίσουμε τον αλγόριθμο με την ψευδογλώσσα και επίσης την ψευδογλώσσα με την ψευδογλώσσα του βιβλίου (όπως τονίζει και ο evry αλλού), η οποία είναι μια πολύ αυστηρά ορισμένη γλώσσα (χωρίς καθόλου ελευθερίες - που θα έπρεπε να ήταν κι ο λόγος για τον οποίο θα άξιζε να διδάσκεται - έτσι που είναι δεν αξίζει) τόσο που ανάγεται σε γλώσσα προγραμματισμού (φανταστείτε ότι μπορεί να περνάει από διερμηνευτή !!! )
Για το βιβλίο λοιπόν είναι προφανής ο ακόλουθος συνειρμός:
Ο αλγόριθμος γράφεται σε ψευδογλώσσα κι ό,τι είναι γραμμένο σε ψευδογλώσσα (του βιβλίου) μεταφέρεται χωρίς καμιά, πρακτικά, αλλαγή σε ΓΛΩΣΣΑ !!!   >:D
Φιλικά,
Γιώργος Θαλασσινός

Sergio

Παράθεση από: gthal στις 30 Ιαν 2011, 02:42:04 ΜΜ
.. κρίνοντάς το ίσως λίγο πιο "κακόβουλα", επισημαίνω ότι
μάλλον αυστηρά θα το έλεγα.. όχι κακόβουλα.. Και είναι λογικό σε ένα βαθμό να καταλήγει κανείς σε αυτά τα συμπεράσματα..

Παράθεση από: gthal στις 30 Ιαν 2011, 02:42:04 ΜΜ
το βιβλίο (εμμέσως και όχι σαφώς) με τον τρόπο που παρουσιάζει τα πράγματα μας ωθεί (και τους μαθητές) να ταυτίσουμε τον αλγόριθμο με την ψευδογλώσσα και επίσης την ψευδογλώσσα με την ψευδογλώσσα του βιβλίου (όπως τονίζει και ο evry αλλού), η οποία είναι μια πολύ αυστηρά ορισμένη γλώσσα (χωρίς καθόλου ελευθερίες - που θα έπρεπε να ήταν κι ο λόγος για τον οποίο θα άξιζε να διδάσκεται - έτσι που είναι δεν αξίζει)

Από την άλλη, το ίδιο το βιβλίο  ενθαρρύνει σε αρκετά σημεία την απαραίτητη (σε επίπεδο ψευδογλώσσας) ελευθερία, είτε με εκφράσεις της μορφής "αν χ είναι άρτιος" είτε με συμβουλές / υποδείξεις της μορφής "μπορούμε επίσης να δεχθούμε τις συνήθεις τυπογραφικές συμβάσεις για την αποτύπωση τύπων.. α2.. το σύμβολο της τετραγωνικής ρίζας..".  Δεν ασχολείται με τύπους μεταβλητών, ούτε με "είδη" διαιρέσεων, χρησιμοποιεί το μαθηματικό συμβολισμό του ακέραιου μέρους ([]) στον πολλαπλασιασμό αλλά ρώσικα (ή τουλάχιστον τον χρησιμοποιούσε μέχρι πέρυσι, όταν και η "οργή του λαού" μεταφράστηκε -εσφαλμένα κατά τη γνώμη μου- σε "φωνή θεού" και έγινε το ατόπημα -πάλι κατά τη γνώμη μου- να συμπεριληφθεί ο τελεστής div στο εισαγωγικό στάδιο εξοικείωσης με την αλγοριθμική σκέψη)..

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

Παράθεση από: gthal στις 30 Ιαν 2011, 02:42:04 ΜΜτόσο που ανάγεται σε γλώσσα προγραμματισμού (φανταστείτε ότι μπορεί να περνάει από διερμηνευτή !!! )

Ίσως τελικά δεν είναι τόσο το βιβλίο που επιβάλει αυτή την "αναγωγή" αλλά οι προσωπικές μας εμπειρίες και διδακτικές προτιμήσεις.  Σύμφωνα με το βιβλίο, ο μαθητής θα μπορούσε να γράψει κάτι σαν:

                   _______
         -β +\/ β2 - 4.α.γ
X1 <-  ____________
                2.α

Δε νομίζω ότι είναι εύκολο να φτιαχτεί διερμηνευτής γι' αυτό.  Κι όμως, σε πρόσφατη συζήτηση με πολύ αξιόλογο συνάδελφο εξέφρασε το φόβο πως, αν σε κάποιο γραπτό υπάρξει η παραπάνω "διατύπωση" θα βαθμολογηθεί από αρκετούς ως ΛΑΘΟΣ.  Και φοβάμαι πως έχει (δυστυχώς) δίκαιο..

Παράθεση από: gthal στις 30 Ιαν 2011, 02:42:04 ΜΜΓια το βιβλίο λοιπόν είναι προφανής ο ακόλουθος συνειρμός:
Ο αλγόριθμος γράφεται σε ψευδογλώσσα κι ό,τι είναι γραμμένο σε ψευδογλώσσα (του βιβλίου) μεταφέρεται χωρίς καμιά, πρακτικά, αλλαγή σε ΓΛΩΣΣΑ !!!   >:D

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

Κατόπιν (κεφ.7 και μετά) μαθαίνουν ποιοι είναι οι περιορισμοί για την μεταφορά του αλγόριθμου σε προγραμματιστικό περιβάλλον:

1. πώς -και γιατί- η εντολή για τον υπολογισμό της ρίζας της δευτεροβάθμιας ΔΕ μπορεί να γραφεί σε προγραμματιστικό περιβάλλον παρά μόνον ως:
Χ1 <- (-β + Τ_Ρ(β^2-4*α*γ))/(2*α)

2. γιατί υπάρχουν τύποι μεταβλητών και ποιοι είναι αυτοί

3. τι είναι οι συμβολικές σταθερές και σε τι εξυπηρετούν

4. τι σημαίνει ανάπτυξη εφαρμογής σε προγραμματιστικό περιβάλλον

5. τι είναι ο χρήστης

6. γιατί κατά την επικοινωνία μαζί του χρειάζεται να διαμορφώνονται μηνύματα

7. τι έννοια έχει ο έλεγχος ορθής καταχώρησης και πώς γίνεται

κ.λπ.

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

Αλλά τι να λέμε.. τώρα στη δύση του μαθήματος (ελπίζω πως όχι αλλά φοβάμαι πως ναι.. τουλάχιστον για τον κλάδο μας) εξακολουθούμε να συζητάμε για το αν επιτρέπεται αλλιως_αν χωρίς αλλιώς.  Το 2002, άκουσον - άκουσον, πίστευα πως θα εξυπηρετούσε η ύπαρξη BNF notation για το μάθημά μας. Τόσο μακριά από την ουσία του μαθήματος ήμουν.  Και τώρα, εν έτη 2011 ακόμα για τέτοια (λίγο πολύ) συζητάμε..

Τώρα πείτε μου εσείς.. ποιος θα φταίει αν το μάθημα (ή κάποια παραλλαγή του) το πάρουν τελικά και το διδάσκουν οι μαθηματικοί..  Και δεν είναι το πρόβλημά μου αυτό.. Απλά πιστεύω πως η αλγοριθμική, στη διάσταση που παίρνει  μέσα από την ενασχόληση με τον προγραμματισμό, έχει πολύ περισσότερα να προσφέρει στην ανάπτυξη της αναλυτικής και συνθετικής σκέψης απ'ότι η μαθηματική της διάσταση.. Ο Knuth έχει γράψει αρκετά επί του θέματος αλλά .. ξεφεύγουμε..
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)