Ο προγραμματισμός με Snap!

Καλωσήρθατε στον ιστότοπό μου

The wonderful thing about computer programming is that it is fun, perhaps not for everyone, but for very many people. There aren't many mathematical activities that appeal so spontaneously. Kids get caught up in the excitement of programming, in the same way that other kids (or maybe the same ones) get caught up in acting, in sports, in journalism (provided the paper isn't run by teachers), or in ham radio

Brian Harvey, δημιουργός του Snap

I tell my students, "the language in which you'll spend most of your working life hasn't been invented yet, so we can't teach it to you. Instead we have to give you the skills you need to learn new languages as they appear.

Brian Harvey, δημιουργός του Snap

Από τη Logo στο Snap

Η εμφάνιση της Logo

Το 1967 δημιουργήθηκε η εκπαιδευτική γλώσσα προγραμματισμού Logo. Στηρίζονταν στη γλώσσα Lisp, την πιο διάσημη γλώσσα συναρτησιακού(functional) προγραμματισμού και μια από τις δύο αρχαιότερες με ευρεία χρήση μέχρι τις μέρες μας.

Ένας από τους δημιουργούς της Logo, ο Seymour Papert, ήταν μαθητής του Jean Piaget.Ο Papert προσπάθησε να ενσωματώσει τη θεωρία του οικοδομισμού (costructivism) του Piaget στη διδασκαλία των μαθηματικών μέσω της Logo, επεκτείνοντας την μάλιστα στη θεωρία του εποικοδομισμού(constructionism). Σύμφωνα με αυτή, η μάθηση είναι πιο αποτελεσματική όταν οι μαθητές εμπλέκονται στη δημιουργία απτών αντικειμένων του πραγματικού κόσμου. Αποτέλεσμα της ιδέας αυτής ήταν η δημιουργία της "μαθηματοχώρας"(mathland), ενός περιβάλλοντος στο οποίο οι μαθητές μπορούσαν να εφαρμόσουν άμεσα τις ιδέες των μαθηματικών, δημιουργώντας προγράμματα με τη γλώσσα Logo.  Όπως έλεγε ο ίδιος ...

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

Το 1992, ο Brian Harvey ανέπτυξε στο πανεπιστήμιο του Berkeley τη UBCLogo, την πιο διαδεδομένη έκδοση της Logo, την οποία φιλοδοξούσε να χρησιμοποιήσει για τη διδασκαλία της επιστήμης των υπολογιστών. Έγραψε μάλιστα μια σχετική τριλογία, την Computer Sience, Logo Style (είναι δωρεάν online για προσωπική χρήση.Σημ. Οι σύνδεσμοι είναι περίπου στη μέση της σελίδας).

To Scratch

Το 2006, κάνει την εμφάνισή του το Scratch, δημιουργώντας νέα δεδομένα στη διδασκαλία του προγραμματισμού σε μικρές ηλικίες. Δημιουργός του ήταν ο Mitchel Resnick, του Lifelong Kindergarten Group στο MIT Media Lab.

Ο Resnick, όντας μαθητής του Seymour Papert, μετέφερε τις ιδέες του εποικοδομισμού στο Scratch. Το Scratch είναι ένα εξαιρετικά εύχρηστο περιβάλλον στο οποίο οι μαθητές μπορούν να δημιουργήσουν τις δικές τους ιστορίες, προσομοιώσεις και γενικότερα να εκφραστούν καλλιτεχνικά. Κύρια χαρακτηριστικά του είναι:

  • Οι εντολές έχουν τη μορφή μπλοκ, που είναι πλέον πολύ διαδεδομένη. Αυτή η δυνατότητα μηδενίζει την πιθανότητα εμφάνισης συντακτικών λαθών και επιτρέπει τους δημιουργούς να επικεντρώσουν την προσοχή τους στην υλοποίηση των ιδεών τους. Το πολύπλοκο συντακτικό αποτελεί έναν από τους πιο ανασταλτικούς παράγοντες στη χρήση επαγγελματικών γλωσσών για την εκμάθηση του προγραμματισμού από μαθητές μικρής ηλικίας.
  • Άμεση οπτικοποίηση των αποτελεσμάτων, αφού αποδέκτες των εντολών είναι ένας ή περισσότεροι χαρακτήρες(sprites) που "ζουν" και κινούνται σε ένα κλειστό περιβάλλον(τη Σκηνή). Στην πραγματικότητα αποτελούν την εξέλιξη της χελώνας της Logo.
  • Προγραμματισμός καθοδηγούμενος από γεγονότα(event driven).
  • Παράλληλος προγραμματισμός(multithreading).
  • Αντικειμενοστραφές περιβάλλον(object oriented) αφού στην πραγματικότητα τα sprites είναι αντικείμενα, με δυνατότητες αλλαγής του κώδικα την ώρα της εκτέλεσης(reflection).

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

Η πρώτη έκδοση του Scratch(1.4) ήταν offline και υλοποιήθηκε με τη γλώσσα Squeak, μια διάλεκτο της Smalltalk(της πρώτης καθαρά Object Oriented γλώσσας). Η δεύτερη έκδοση(2013) ήταν online και υλοποιήθηκε σε Actionscript(Flash). Η τελευταία έκδοση (2019) στηρίζεται εξολοκλήρου σε JavaScript και είναι κατάλληλη και για φορητές συσκευές(Android, iOS).

Το Snap(πρώην BYOB)

To 2011, κάνει την εμφάνισή του το ΒΥΟΒ(Build Your Own Blocks). Επηρεασμένο από το Scratch(το Scratch 1.4 και το BYOB 3.1.1 είναι οπτικά πανομοιότυπα), αποτελεί επέκτασή του με στόχο να χρησιμοποιηθεί για τη διδασκαλία του προγραμματισμού και σε μεγαλύτερες ηλικίες(ακόμη και μετά τη μέση εκπαίδευση).

Δημιουργός του είναι ο Jens Moning υπό τις ιδέες και την καθοδήγηση του Brian Harvey, στο πανεπιστήμιο του Berkeley. Ο Harvey επηρεασμένος από τη Logo(βλ. παραπάνω) αλλά και από το βιβλίο Structure and Interpretation of Computer Programs(SICP) , το οποίο θεωρεί ως το καλύτερο βιβλίο για την επιστήμη των υπολογιστών που γράφτηκε ποτέ, επανέφερε τον functional προγραμματισμό στην εκπαίδευση.

Το SICP χρησιμοποιήθηκε από το MIT για το εισαγωγικό μάθημα στην επιστήμη υπολογιστών. Θεωρείται ένα από τα κλασσικά βιβλία του κλάδου. Βασίζεται στη γλώσσα Scheme, μια διάλεκτο της Lisp. Πολύ συζήτηση υπάρχει γύρω από το ζήτημα του κατά πόσο μια functional γλώσσα είναι καταλληλότερη για την εισαγωγή στον προγραμματισμό, σε σχέση με μια από τις διάσημες "επαγγελματικές γλώσσες"(C++, Java, Python κλπ). Πληροφορίες σχετικά με το θέμα μπορείτε να βρείτε

Πάντως θα πρέπει να σημειωθεί ότι το ΜΙΤ, χρησιμοποιεί πλέον την Python ως εισαγωγική γλώσσα.

Η προσωπική μου άποψη ...

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

 Τα χαρακτηριστικά του BYOB

Το BYOB κληρονόμησε όλα τα χαρακτηριστικά του Scratch(εντολές σε μορφή μπλοκ, περιβάλλον(sprites και σκηνή), event driven, παράλληλος και imperative προγραμματισμός) και προσέθεσε πολλά ακόμη με σημαντικότερα:

  • Τη δημιουργία υποπρογραμμάτων(διαδικασιών και συναρτήσεων). (Σημ. αυτό υπάρχει πλέον και στο Scratch 2.0 αλλά πολύ περιορισμένο σε σχέση με τις δυνατότητες που προσφέρει το BYOB).
  • Την υποστήριξη συναρτησιακού προγραμματισμού.
  • Ως άμεση συνέπεια του παραπάνω την υποστήριξη first class και high order διαδικασιών και συναρτήσεων, δηλαδή τα υποπρογράμματα αντιμετωπίζονται ως δεδομένα και μπορούν να περαστούν ως παράμετροι σε άλλα υποπρογράμματα. Οι διαδικασίες που γίνονται παράμετροι ονομάζονται first class, ενώ οι διαδικασίες που τις δέχονται ως παραμέτρους ονομάζονται high order.
  • first class λίστες, μια δυνατότητα που εμφανίζεται πολύ περιορισμένα στο Scratch.
  • Ανάκλαση(reflection) ,δηλαδή ο κώδικας του προγράμματος μπορεί να τροποποιήσει τον εαυτό του κατά τη διάρκεια της εκτέλεσης.
  • First class sprites.
  • Το παραπάνω επιτρέπει την υποστήριξη Object Oriented προγραμματισμού, υπό τη μορφή prototyping. Στο prototyping, δεν υπάρχουν κλάσεις και αντικείμενα, αλλά μόνο αντικείμενα τα οποία μπορεί να είναι είτε πρωτότυπα, είτε κλώνοι που προέρχονται από πρωτότυπα.  Η μορφή αυτή απλοποιεί αρκετά τις ιδέες του Object Oriented προγραμματισμού, όπως είναι η κληρονομικότητα και ο πολυμορφισμός(στο μενού ΒΥΟΒ 3.1.1 θα βρείτε σχετικό παράδειγμα). Σημ. το prototyping το χρησιμοποιούν και "επαγγελματικές γλώσσες" όπως η Javascipt. 

Όλα τα παραπάνω κάνουν το BYOB μοναδικό, αφού υποστηρίζει τα τρία βασικά παραδείγματα προγραμματισμού(imperative-επιτακτικός, functional - συναρτησιακός και Object Oriented - Αντικειμενοστραφής), χαρακτηριστικό που δύσκολα το συναντά κάποιος ακόμα και σε "επαγγελματικές γλώσσες".

Όπως αναφέρει ο Jens Moening(ελεύθερη απόδοση)

Αν στο παρελθόν θεωρούσαμε τη Logo, ως μια Lisp μεταμφιεσμένη σε BASIC, σήμερα μπορούμε να ισχυριστούμε ότι το BYOB είναι μια Scheme μεταμφιεσμένη σε Scratch.

To BYOB αναπτύχθηκε, όπως και το Scratch, σε γλώσσα Squeak.

 To Snap

To Snap είναι ο online διάδοχος του BYOB(θα μπορούσαμε να πούμε ότι είναι το BYOB 4.0). Έχει υλοποιηθεί εξολοκλήρου σε Javacript/HTML5, γεγονός που σημαίνει ότι μπορεί να εκτελεστεί χωρίς καμία εγκατάσταση και από φορητές συσκευές(Android, iOS) όπως tablets και smartphones.

Αυτό που λείπει σε σχέση με το BYOB, πέρα από τα χαρακτηριστικά που σχετίζονται με το desktop όπως πχ το τοπικό δίκτυο, είναι η υποστήριξη του OOP. Αυτό το χαρακτηριστικό αναμένεται να επανέλθει στην έκδοση 4.1 (Σημείωση:  Το χαρακτηριστικό αυτό υποστηρίζεται πλέον).

Το Snap βρίσκεται πλέον στην έκδοση 5(Ιούνιος 2019) και πέραν των επιπλέον δυνατοτήτων του(θα επανέλθω με σχετικό άρθρο), ο ιστότοπός του περιλαμβάνει πλέον, πλούσιο υποστηρικτικό/εκπαιδευτικό υλικό.

Το Snap χρησιμοποιείται εκτενώς στο εκπαιδευτικό πρόγραμμα The Beauty and Joy of Computing του UC Berkeley που απευθύνεται σε μαθητές λυκείου αλλά και όσους, γενικότερα, επιθυμούν να κάνουν μια πρώτη γνωριμία με την επιστήμη των υπολογιστών, που όμως δε θα είναι επιφανειακή. 

ΝέαΑνακοινώσεις
Βοήθεια στα Ελληνικά
  • Τελευταία Ενημέρωση: Σεπτέμβριος 2019

Το SnapHE.gr διαθέτει όλες τις οθόνες βοήθειας των εντολών στα Ελληνικά.

Σε αυτές συμπεριλαμβάνονται τα νέα μπλοκ της έκδοσης 5.1, της υποστήριξης δικτύου και της βιβλιοθήκης "OpenLayers maps".

Περισσότερα...
Το SnapHE.gr στο Φωτόδεντρο

Έχουν δημοσιευτεί στο "Φωτόδεντρο" τα εργαλεία με τα οποία δημιουργήθηκε ο παρών ιστότοπος.

Περισσότερα...
Βέλτιστη Πρακτική

Το εκπαιδευτικό υλικό του ιστότοπου βραβεύτηκε σε διαγωνισμό του Φωτόδεντρου.

Διαβάστε περισσότερα ...
Snap

Το Snap είναι μια γλώσσα πλακιδίων. Αποτελεί εξέλιξη του Scratch.

Διαβάστε περισσότερα ...
The Beatuty and Joy of Computing

Το BJC είναι εκπαιδευτικό πρόγραμμα του UC Berkeley.

Διαβάστε περισσότερα ...
The Hour of Code

Η "Ώρα του Κώδικα" είναι μια διεθνής καμπάνια του code.org, που αφορά μαθητές.

Διαβάστε περισσότερα ...