AgentSheets

Εκδόσεις

Παλαιότερες εκδόσεις (π.χ. η 1.4b2) των AgentSheets για Apple MacOS (με επεξεργαστή της γενιάς PowerPC) και Mac/68K (με επεξεργαστή της γενιάς 68000) υπολογιστές ήταν ελεύθερα διαθέσιμες, αλλά έγινε εμπορικό προϊόν μετά την κυκλοφορία έκδοσης για Microsoft Windows. Η τελευταία είναι συμβατή με την έκδοση για Mac, δηλαδή μπορούν να τρέξουν σε αυτή οι διάφορες εφαρμογές και οι πράκτορες που έχουν δημιουργηθεί παλαιότερα σε Mac υπολογιστές. Τα διάφορα εγχειρίδια, όπως και άλλα ενδιαφέροντα κείμενα για την ερευνητική παιδαγωγική δουλειά που έχει γίνει με το περιβάλλον AgentSheets, έχουν μετατραπεί σε μορφή που μπορούν να χειριστούν τα Windows και υπάρχουν διαθέσιμα στον κόμβο τους στο Internet.

Πλέγμα

Οι Αgents οργανώνονται σε ένα πλέγμα που καλείται “agentsheet” (αντίστοιχα με το spreadsheet του Excel, μόνο που στα κελιά του πλέγματος κατοικούν agents). Η επικοινωνία μεταξύ των agents γίνεται είτε απευθείας είτε μέσω χωρικών σχέσεων που παρέχονται από το πλέγμα όπου κατοικούν. Ένας agent μπορεί να αναπαριστά ένα αλληλεπιδραστικό (που μπορεί δηλαδή να το χειριστεί ο χρήστης και αυτό να αντιδρά ανάλογα, πιθανώς τροποποιώντας την εμφάνιση του) ή και αυτόνομο δομικό αντικείμενο (component) που αναπαριστά κάποια οντότητα της εξομοίωσης, όπως για παράδειγμα διακόπτες, καλώδια και ηλεκτρικούς λαμπτήρες.

Ψηφίδες

Στο AgentSheets, ένας agent είναι μια αυτόνομη διεργασία που έχει την ικανότητα να αντιλαμβάνεται και να ενεργεί μέσα στο περιβάλλον στο οποίο βρίσκεται. Το πεδίο «αντίληψης» (perceptions) ενός agent περιλαμβάνει πατήματα των πλήκτρων του ποντικιού, ηχητική είσοδο (από μικρόφωνο), άλλους agents, τιμές ιδιοτήτων, είσοδο από το πληκτρολόγιο, το περιεχόμενο web σελίδων και μηνύματα που έχει οριστεί κατά τον προγραμματισμό του να αναγνωρίζει. Οι ενέργειες που μπορεί να κάνει ένας agent περιλαμβάνουν μετεγκατάσταση/μετακίνηση του, (συνθετική) ομιλία, αποστολή μηνύματος σε άλλους agents, υπολογισμών τιμής κάποιων ιδιοτήτων, αλλαγή εμφάνισης (είτε δικής του είτε γειτονικών agents), εμφάνιση κάποιας web σελίδας και παίξιμο ενός ήχου.

Σύνθεση

Η διαδικασία προγραμματισμού στη VAT περιλαμβάνει την δημιουργία προγραμμάτων μέσω της σύνθεσης τους από αντικείμενα του προγραμματιστικού κόσμου. Παρόμοια με το εκπαιδευτικό περιβάλλον Boxer και το LiveWorld, η Visual AgenTalk εισάγει μια χωρική μεταφορά, όπου τα προγράμματα αναπαριστώνται ως κουτιά που μπορούν να μπουν το ένα μέσα στο άλλο (φωλιασμένα). Η σύνθεση πραγματοποιείται με την τοποθέτηση αντικείμενα του προγραμματιστικού κόσμου μέσα στα κουτιά αυτά, ενώ ένα προγραμματιστικό αντικείμενο μπορεί να λειτουργεί και αυτό ως κουτί, δεχόμενο μέσα του άλλα αντικείμενα. Υποστηρίζονται δυο διαφορετικές προσεγγίσεις για τη διαδικασία τοποθέτησης των αντικειμένων μέσα στα κουτιά, η απευθείας σύνθεση και η σύνθεση μέσω παραδείγματος.
Στην απευθείας σύνθεση (direct composition), οι χρήστες συνθέτουν προγράμματα επιλέγοντας εντολές από τις παλέτες συνθηκών (condition) και ενεργειών (action) και σύροντας τις μέσα σε κανόνες που περιέχονται σε ένα παράθυρο επεξεργασίας κανόνων (λειτουργεί και αυτό ως ένα κουτί - το πιο έξω κουτί που περιέχει όλα τα άλλα) της Visual AgenTalk. Ένα σύνολο κανόνων ερμηνεύεται από την κορυφή προς τα κάτω και αν ο μεταφραστής κανόνων βρει έναν κανόνα του οποίου όλες οι συνθήκες είναι αληθείς θα εκτελεστούν όλες οι ενέργειες αυτού, πάλι από πάνω προς τα κάτω (οι ενέργειες τοποθετούνται μέσα στο κουτί “then” ενός κανόνα “if-then” [εάν-τότε]). Η εκτέλεση ενός κανόνα συνεπάγεται και έξοδο από τη διαδικασία αναζήτησης αληθούς κανόνα, δηλαδή οι κανόνες που βρίσκονται παρακάτω από αυτόν που τελικά επαληθεύτηκε και εκτελέστηκε δεν ελέγχονται, ενώ με τον επόμενο κύκλο του μεταφραστή θα ξαναρχίσει η αναζήτηση αληθούς κανόνα από την κορυφή.
Στην σύνθεση μέσω παραδείγματος, η σύνθεση αντικειμένων του προγραμματιστικού κόσμου γίνεται μέσω του χειρισμού αντικειμένων του κόσμου της εφαρμογής. Για παράδειγμα, κρατώντας πατημένο ένα ειδικό πλήκτρο, χειριζόμαστε τα αντικείμενα που θέλουμε να προγραμματίσουμε, όπως κάνουμε και στο Office όταν καταγράφουμε μια μακροεντολή, δηλαδή δείχνουμε τι θέλουμε να κάνει ένα αντικείμενο. Μπορούμε να κάνουμε κλίκ σε έναν γειτονικό agent αυτού που προγραμματίζουμε τη συμπεριφορά, ώστε να προστεθεί στο πεδίο «εάν» του τρέχοντος «εάν-τότε» κανόνα η συνθήκη πως πρέπει να υπάρχει στην αντίστοιχη κατεύθυνση δίπλα στον δικό μας agent ο agent στον οποίο κάναμε κλικ. Διαγράφοντας στη συνέχεια τον διπλανό μας agent δείχνουμε στη Visual AgenTalk πως η πρέπει να βάλει στο πεδίο «τότε» του αντίστοιχου κανόνα την ενέργεια που διαγράφει το γειτονικό μας agent. Έτσι μπορεί να προγραμματιστεί ένας agent καρχαρίας που όταν συναντά ένα ψάρι το τρώει. Στη συνέχεια μπορούμε να προσθέσουμε και άλλες ενέργειες στο κουτί «τότε» του κανόνα αυτού, π.χ. να πάρουμε από την παλέτα “Action” την ενέργεια “Play Sound”, η οποία παίζει έναν ήχο και έχει ως παράμετρο ένα αναδυόμενο μενού με τους ήχους που έχουν εγκατασταθεί στο σύστημα, να τη σύρουμε πάνω από τον κανόνα if-then που αναφέρεται στην καταβρόχθιση του γειτονικού ψαριού και να τη ρίξουμε στο κουτί “then” του κανόνα αυτού. Την παράμετρο που έχει να κάνει με το ποιος ήχος θα παιχτεί όταν καταβροχθίζεται το ψάρι, μπορούμε να την ρυθμίσουμε από την αρχή, ενώ η ενέργεια βρίσκεται στην παλέτα ενεργειών (χρήσιμο αν πρόκειται να ρίξουμε ξανά την ίδια ενέργεια και σε άλλους κανόνες π.χ. για να παίζεται ο ίδιος ήχος όταν ο καρχαρίας μας καταβροχθίζει άλλα είδη ψαριών), ή να τη ρυθμίσουμε αφού εισαχθεί στον κανόνα εάν-τότε.

Κατανόηση

Η αντίληψη μέσω του εποπτικού χειρισμού των εντολών (perception by manipulation) επιτρέπει στους τελικούς χρήστες να ελέγχουν αποδοτικά την λειτουργικότητα μιας εντολής. Τα δομικά στοιχεία της γλώσσας, δηλαδή οι κανόνες (if-then: εάν ισχύουν οι X συνθήκες κάνε τις Y ενέργειες), οι ενέργειες (π.χ. μετακινήση του agent ή παίξιμο κάποιου ήχου), οι συνθήκες (π.χ. το αν ο τάδε agent βρίσκεται στο αριστερό μέρος του agent μας στο πλέγμα όπου κατοικούν και κινούνται), μπορούν να συρθούν με το ποντίκι και να ριφθούν πάνω σε κάποιον agent που βρίσκεται σε ένα worksheet (το φύλλο εργασίας που καλείται και agentsheet), οποιαδήποτε στιγμή κατά τη διάρκεια μιας εξομοίωσης, αλλά και όσο αυτή είναι σταματημένη. Το γλωσσικό στοιχείο που ρίχνουμε σε έναν agent εκτελείται και παρέχει οπτικοακουστική πληροφορία (feedback) υποδεικνύοντας εάν οι συνθήκες είναι αληθείς ή ψευδείς και παρουσιάζοντας τις συνέπειες των εκτελούμενων ενεργειών.
Για παράδειγμα, παίρνοντας την ενέργεια “Play Sound” από την παλέτα ή από κάποιο πρόγραμμα και ρίχνοντας τη πάνω σε έναν agent μέσα σε ένα agentsheet, θα παιχθεί ο ήχος που φέρει και απεικονίζει ως παράμετρο η εντολή αυτή. Αντίστοιχα αν πάρουμε την συνθήκη See έχοντας ρυθμίσει την πρώτη παράμετρό της να είναι το δεξί κατευθυντήριο βελάκι και τη δεύτερη να είναι κάποια συγκεκριμένη μορφή ενός Χ agent, τότε ρίχνοντας την πάνω σε έναν agent, αυτός θα μας απαντήσει σε ένα πλαίσιο διαλόγου αν βλέπει στα δεξιά του τον X agent για τον οποίο τον ρωτήσαμε, δηλαδή αν η συνθήκη είναι αληθής ή ψευδής. Αν ρίψουμε έναν ολόκληρο κανόνα if-then σε έναν agent, τον βλέπουμε να εκτελείται, αφού αλλάζει χρώμα το κουτί συνθηκών του ενώ ελέγχεται και στη συνέχεια το κουτί των ενεργειών εάν οι συνθήκες ήταν αληθείς και οι ενέργειες εκτελεστούν. Αντίθετα, αν κάποια από τις συνθήκες ήταν ψευδής (πρέπει να είναι όλες οι συνθήκες αληθείς στο αντίστοιχο κουτί του κανόνα για να εκτελεστούν οι ενέργειες που φέρει), ακούγεται σχετικός ήχος και εμφανίζεται ποια ήταν η ψευδής συνθήκη (και αυτές ελέγχονται μέσα στο κουτί συνθηκών με φορά από πάνω προς τα κάτω, ενώ και οι ενέργειες εκτελούνται με τη σειρά που έχουν από πάνω προς τα κάτω μέσα στο αντίστοιχο κουτί - και τα δυο αυτά κουτιά είναι μέσα σε ένα μεγαλύτερο κουτί που αποτελεί τον κανόνα).

Μοίρασμα κώδικα μεταξύ χρηστών

Ο «χειροπιαστός προγραμματισμός» του AgentSheets υποστηρίζει τη μετάβαση από τον μοναχικό στον κοινωνικό προγραμματισμό. Ολόκληρες εξομοιώσεις, μεμονωμένοι agents, γλωσσικοί κανόνες και νέες στοιχειώσεις εντολές (συνθήκες/ενέργειες) μπορούν να επαναχρησιμοποιηθούν και να μοιρασθούν μέσα στα πλαίσια της κοινότητας των χρηστών του AgentSheets, με χρήση του Internet και συγκεκριμένα του World Wide Web ως MIME types (ένας τύπος δεδομένων που χρησιμοποιήται από τους web browsers, όπως ο Internet Explorer και το Netscape Navigator, για να αντιστοιχούν τα multimedia δεδομένα ανάλογα με τον τύπο τους σε εφαρμογές που κατανοούν τη δομή τους και μπορούν να τα χειριστούν). Δεν χρειάζεται κάποιο plug-in πρόγραμμα για το web browser, αλλά υπάρχει δυνατότητα απ´ευθείας μεταφοράς από τη web σελίδα στην τοπικά εγκατεστημένη (στο μηχάνημα του χρήστη) εφαρμογή των AgentSheets, είτε μέσω drag&drop, είτε με κλικ στο αντίστοιχο αντικείμενο, οπότε και γίνεται αυτόματη μεταφορά του στο κατάλληλο σημείο στο περιβάλλον των AgentSheets (π.χ. ένας agent που φέρνουμε από μια web σελίδα εμφανίζεται στην παλέτα του τρέχοντος project που έχουμε ανοικτό).

Behavior Exchange

Η παραδοσιακή, υποστηριζόμενη από τον υπολογιστή, διαδικασία σχεδίασης είναι κυρίαρχα μια ιδιωτική προσπάθεια. Η ιδέα υποστήριξης της συνεργασίας υπάρχει εδώ και αρκετό καιρό, αλλά μέχρι πρόσφατα, πριν την εκρηκτική ανάπτυξη της δικτυακής υποδομής, δεν υπήρχαν αρκετά ισχυρές τεχνολογίες διαθέσιμες για την υλοποίηση τέτοιων ιδεών. Με την εφεύρεση του World Wide Web ως το πανταχού παρόν μέσο, τα μοντέλα και περιβάλλοντα σχεδιασμού-προγραμματισμού πρέπει να τροποποιηθούν ώστε να παίρνουν υπόψη τη νέα δυναμική.
Καθώς οι υπολογιστές διασυνδέθηκαν και οι μηχανισμοί επικοινωνίας έγιναν όλο και πιο εξειδικευμένοι, μια μετάβαση προς την κοινωνική συνεργατική σχεδίαση έγινε δυνατή και άλλαξε τον τρόπο που η γνώση μπορεί να ανταλλαχθεί και επαναχρησιμοποιηθεί.
Η βασική ιδέα της κονστρακτιβιστικής/δομησιακής μάθησης (constructionism) είναι η κατασκευή γνωσιακών αναπαραστάσεων κατά την κατασκευή «τεχνικών» ή «έντεχνων» αντικειμένων. Η μάθηση συντελείται στο πλαίσιο όπου η γνώση είναι σχετική. Αρα παρέχει κίνητρο. Η αποδόμηση (breakdown) βοηθά στον εντοπισμό λάθος θεωρήσεων σχετικά με το υποκείμενο μοντέλο. Η χρήση κατασκευών που άλλοι χρήστες δημιούργησαν και η εξέταση λύσεων που βρήκαν για τα προβλήματα τους, μπορεί να επάγει μια νέα κοινή μεταξύ των χρηστών κατανόηση του χώρου ενός προβλήματος.
Πάνω σε αυτές τις ιδέες βασίστηκε η σχεδίαση και δημιουργία ενός μηχανισμού με τον όποιο οι χρήστες του AgentSheets μπορούν να δημοσιοποιήσουν τη συμπεριφορά (behavior) κάποιου agent και τις διαφορετικές απεικονίσεις-μορφές αυτού. Οταν είμαστε σε κατάσταση σχεδίασης (μενού Gallery/Views), μπορούμε να επιλέξουμε κάποιον agent από την παλέτα με τους agents (Galery) και μέσω του μενού “Web/ Upload Agent” να τον μεταφέρουμε σε ένα κοινό αποθετήριο (repository), απ’όπου και μπορούν άλλοι χρήστες των AgentSheets να τον κατεβάσουν, χρησιμοποιήσουν, τροποποιήσουν και πιθανώς επαναδημοσιοποιήσουν με τη σειρά τους ως νέα, δικιά τους, βελτιωμένη/τροποποιημένη έκδοση του αρχικού agent. Η εμφάνιση αυτού του αποθετηρίου που ονομάζεται “Behavior Exchange”, γίνεται από το μενού Web, μέσω της επιλογής “Browse Behavior Exchange”, η οποία ανοίγει τον τρέχοντα web browser σε δυναμικές web σελίδες που δημιουργούνται από το μηχάνημα που διατηρεί τη βάση δεδομένων του αποθετηρίου με τους agents. Το πιο ενδιαφέρον χαρακτηριστικό, πέραν της αναμενόμενης οργάνωσης των agents ανά θεματική περιοχή, είναι η δυνατότητα εισαγωγής ενός agent απευθείας στην παλέτα του τρέχοντος ανοικτού project με απλό κλικ πάνω σε αυτόν (για να γίνεται αυτό πρέπει πρώτα να ρυθμιστεί ο web browser ώστε να δίνει στο AgentSheets να χειριστεί τα αρχεία με κατάληξη .agent - οδηγίες γι’αυτό υπάρχουν στον κόμβο του Behavior Exchange και έχουν να κάνουν με την ρύθμιση του AgentSheets ως βοηθητικής (“File Helper”) εφαρμογής για το χειρισμό του MIME τύπου application/agent.
Οι σχεδιαζόμενες επεκτάσεις του κόμβου αυτού έχουν να κάνουν με την προσθήκη μιας μηχανής αναζήτησης agents, αφού όσο αυξάνεται το πλήθος των agents που υπάρχουν εκεί δυσκολεύει η αναζήτηση των επιθυμητών προς χρήση σε κάποια συγκεκριμένη προσομοίωση/πείραμα που θέλουμε να κάνουμε, αλλά και με την δυνατότητα ανταλλαγής με όμοιο τρόπο όπως και με την ανταλλαγή agents, των υπόλοιπων στοιχείων των AgentSheets, δηλαδή ολόκληρες εξομοιώσεις μαζί με τους agents που περιλαμβάνουν, κανόνες, ενέργειες και συνθήκες αλλά και νέες εντολές που δημιουργούν οι πιο πεπειραμένοι χρήστες με την γλώσσα OPUS που ενσωματώνει το AgentSheets.

Γλώσσα OPUS

Οι αντικειμενοστραφείς γλώσσες απέδειξαν πως είναι μια ισχυρή μέθοδος προγραμματισμού για την υπερπήδηση των προβλημάτων που έχουν σχέση με την κατασκευή λογισμικού. Θέματα όπως η γρήγορη πρωτοτυποποίηση, η γρήγορη υλοποίηση, η ευκολία συντήρησης και τροποποποίησης υποστηρίζονται αρκετά καλά σε συστήματα που παρέχουν χρηστικά περιβάλλοντα υψηλού βαθμού αλληλεπίδρασης. Η προγραμματιστική γλώσσα Common Lisp είναι ιδανική πλατφόρμα για να χτίσει κανείς επάνω της αντικειμενοστραφή εργαλεία, επειδή το περιβάλλον της υποστηρίζει την αυξητική ανάπτυξη λογισμικού.
Η OPUS είναι ένα αντικειμενοστρεφές σύστημα βασισμένο στην Common Lisp και επηρεασμένο από τη Smalltalk. Αποτελείται από ένα συμπαγή πυρήνα (kernel) που είναι εύκολα μεταφέρσιμος σε διαφορετικά περιβάλλοντα Common Lisp. Σε αντίθεση με τα περισσότερα αντικειμενοστραφή περιβάλλοντα που βασίζονται στη Lisp, η OPUS αντιμετωπίζει τις κλάσεις ως πραγματικά αντικείμενα, δηλαδή οι κλάσεις έχουν τις δικές τους μεθόδους και μεταβλητές. Αντί να εκμεταλλεύεται πολλές διαφορετικές απόψεις με ένα υβριδικό τρόπο, η OPUS εισάγει λίγες έννοιες και τις εφαρμόζει ομοιόμορφα παντού.
Ολες οι εντολές (συνθήκες και ενέργειες) που μπορεί να αντιληφθεί ένας agent είναι προγραμματισμένα στη γλώσσα OPUS που ενσωματώνει το AgentSheet (διάλεκτος της Lisp) και μπορεί να δημιουργηθούν και ενσωματωθούν στο περιβάλλον και νέες εντολές από τον χρήστη αν έχει οικειότητα με τη Lisp, αλλιώς μπορεί να κατεβάσει και τοποθετήσει στον κατάλογο “Extensions” του AgentSheets τα προγράμματα επέκτασης του AgentSheets που έχουν δημιουργήσει άλλοι χρήστες ή η ομάδα που δημιούργησε και συνεχίζει να βελτιώνει το περιβάλλον αυτό.