Γλώσσα προγραμματισμού Scratch

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

Το όνομα Scratch παραπέμπει στην τεχνική του scratching στα παλαιά πικάπ, και αναφέρεται τόσο στη γλώσσα όσο και στην υλοποίηση της. Η ομοιότητα προς το scratching στη μουσική είναι η εύκολη επαναχρησιμοποίηση κομματιών: στο Scratch όλα τα αλληλεπιδραστικά αντικείμενα, γραφικά και ήχοι μπορούν εύκολα να εισαχθούν σε ένα νέο πρόγραμμα και να συνδυαστούν με νέους τρόπους. Έτσι οι αρχάριοι μπορούν να λάβουν γρήγορα αποτελέσματα και αποκτούν κίνητρο να προσπαθήσουν περαιτέρω.

Ο ιστότοπος δείχνει ταχεία ανάπτυξη της κοινότητας του Scratch: από το Μάρτιο 2007 ως τον Ιούνιο 2008, άνω των 119,000 λογαριασμών έχουν καταχωρηθεί, με άνω των 148,000 έργων να έχουν φορτωθεί. Η ταχέως αυξανόμενη διεθνής κοινότητα έχει μεταφράσει το Scratch σε διάφορες γλώσσες, με περισσότερες υπό εξέλιξη.

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

Το Scratch έχει αναπτυχθεί από μια μικρή ομάδα ερευνητών στο Lifelong Kindergarten Group  στο MIT Media Lab.

Η δικτυακή κοινότητα του Scratch έλαβε μια τιμητική μνεία στην κατηγορία Digital Communities στο Prix Ars Electronica 2008 .

Χρήση ως διδασκόμενη γλώσσα 

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

Το σλόγκαν του Scratch είναι "Φαντάσου · Προγραμμάτισε · Μοιράσου". Η έμφαση στο μοίρασμα είναι σημαντικό μέρος της παιδαγωγικής για το Scratch: τα προγράμματα δεν θεωρούνται μαύρα κουτιά, αλλά αντικείμενα που μπορούν να αναμιχθούν για τη δημιουργία νέων έργων. Ο μόνος τρόπος να γίνει ένα πρόγραμμα διαθέσιμο για χρήση είναι να δοθεί ο πηγαίος κώδικας του.

Περιβάλλον ανάπτυξης, ιστότοπος και Scratch Player 

Το περιβάλλον ανάπτυξης του Scratch μπορεί να μεταμορφωθεί δωρεάν και να εγκατασταθεί σε οποιοδήποτε υπολογιστή με Windows ή Mac OS X. Διάφορες εκδόσεις του Linux μπορούν να τρέξουν το Scratch, συγκεκριμένα για τα Suse Linux (openSUSE 11 και άνω) και Ubuntu, οι εγκαταστάτες (RPM για το Suse και DEB για Ubuntu) είναι διαθέσιμοι από τα επίσημα κοινοτικά αποθετήρια αυτών των εκδόσεων Linux. Ένας πειραματικός εγκαταστάτης για το Ubuntu είναι διαθέσιμος από το MIT. Το περιβάλλον ανάπτυξης του Scratch έχει υλοποιηθεί σε γλώσσα προγραμματισμού Squeak, ένα περιβάλλον ανάπτυξης για Smalltalk, που παρέχει ομοιόμορφη συμπεριφορά ανεξαρτήτως πλατφόρμας.

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

Αρχές εύρους και χρήσης της γλώσσας 

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

Εμπειρικές μελέτες έχουν γίνει για διάφορες λειτουργίες — αυτές που παρεμπόδιζαν την φυσική εκμάθηση απορρίφθηκαν, ενώ αυτές που ενθάρρυναν τους αρχάριους και έκαναν εύκολη τη διερεύνηση και την εκμάθηση, διατηρήθηκαν. Ορισμένα από τα αποτελέσματα προκαλούν έκπληξη, κάνοντας το Scratch αρκετά διαφορετικό από άλλες διδασκόμενες γλώσσες (όπως η BASIC, η Logo, ή η Alice).

Για παράδειγμα, ο πολυνηματικός κώδικας μέσω περάσματος μηνυμάτων είναι θεμελιώδης για το Scratch, αλλά δεν έχει διαδικασίες ή Είσοδο/Έξοδο αρχείων (I/O) και υποστηρίζει μόνο μονοδιάστατους πίνακες, γνωστούς ως Λίστες. Οι αριθμοί κινητής υποδιαστολής και τα αλφαριθμητικά υποστηρίζονται από την έκδοση 1.3, αλλά με περιορισμένη ικανότητα διαχείρισης αλφαριθμητικών.

Ο κώδικας ομαδοποιείται σε διαφορετικές φιγούρες, καθεμία από τις οποίες μπορεί να κινηθεί ανεξάρτητα και να έχει πολλαπλές ενδυμασίες για δημιουργία κινούμενης εικόνας. Η γλώσσα μοιάζει περισσότερο με γλώσσες κινούμενης εικόνας όπως η ActionScript παρά με τις παραδοσιακές γλώσσες προγραμματισμού.

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

Το περιβάλλον χρήστη του περιβάλλοντος ανάπτυξης του Scratch χωρίζει την οθόνη σε πολλαπλές περιοχές: στα αριστερά είναι η παλέτα με τα τμήματα κώδικα, στο κέντρο είναι οι πληροφορίες για την τρέχουσα φιγούρα και η περιοχή των σεναρίων (κώδικα), και στα δεξιά είναι η σκηνή και η λίστα με τις φιγούρες. Η παλέτα των τμημάτων κώδικα έχει τμήματα κώδικα (καλούνται "blocks") που μπορούν να συρθούν πάνω στην περιοχή των σεναρίων για τη δημιουργία προγραμμάτων. Για να διατηρηθεί η παλέτα σε όχι πολύ μεγάλο μέγεθος, οργανώνεται σε 8 ομάδες τμημάτων κώδικα: κίνηση, όψεις, ήχος, πένα, έλεγχος, αισθητήρες, αριθμοί, και μεταβλητές.

Σημειώσεις

Εξωτερικοί σύνδεσμοι 

 αρχική σελίδα Scratch
 Lifelong Kindergarten Group του MIT Media Lab - δημιουργοί του Scratch
 Chirp, μια "κοινοτική έκδοση" του Scratch από το χρήστη Jens
 picoBoard πλακέτα αισθητήρων για το Scratch

Πηγές εκμάθησης
 Βιβλίο για τη δημιουργία παιχνιδιών με το Scratch
 Γνωριμία με το Scratch
 Οδηγός για το Scratch
 Ενα wiki για το scratch 

Άρθρα για το Scratch στις ειδήσεις

 Free tool offers 'easy' coding
 A Programming Language Like Playing With Blocks
 With simplified code, programming becomes child's play

Ακαδημαϊκά έργα για το Scratch ή αναφερόμενα σε αυτό

 Maloney, J., Burd, L., Kafai, Y., Rusk, N., Silverman, B., and Resnick, M. (2004). Scratch: A Sneak Preview. Second International Conference on Creating, Connecting, and Collaborating through Computing. Kyoto, Japan, pp. 104-109. 
 Resnick, M., Kafai, Y., Maloney, J., Rusk, N., Burd, L., & Silverman, B. (2003). A Networked, Media-Rich Programming Environment to Enhance Technological Fluency at After-School Centers in Economically-Disadvantaged Communities. Proposal to National Science Foundation.
 Peppler, K., & Kafai, Y. (2005). Creative coding: The role of art and programming in the K-12 educational context.
 Resnick, M., Maloney, J., & Rusk, N. (2006). Scratch and technological fluency (Powerpoint slide 2.5MB). 
 Monroy-Hernández, A. and Resnick, M. (2008). Empowering kids to create and share programmable media. interactions 15, 2 (Mar. 2008), 50-53.
 Monroy-Hernández, A. (2009) Designing a website for creative learning. In: Proceedings of the WebSci'09: Society On-Line, 18-20 March 2009, Athens, Greece
Άλλες γλώσσες οπτικού προγραμματισμού
 Catrobat
Οπτικές γλώσσες προγραμματισμού