AgentSheets

Το **AgentSheets** είναι ένα λογιστικό φύλλο (*spreadsheet*) βασισμένο σε πράκτορες λογισμικού (agents) που μπορεί να χρησιμοποιηθεί για να δημιουργηθούν αλληλεπιδραστικές προσομοιώσεις παρόμοιες με το SimCity, εποπτικά προγραμματιστικά περιβάλλοντα προσανατολισμένα σε συγκεκριμένα πεδία γνώσης, παιχνίδια, καθώς και κυψελικά αυτόματα. Συνδυασμένο με την εποπτική μέθοδο προγραμματισμού “Visual AgenTalk” την οποία ενσωματώνει, το AgentSheets είναι ένα ευέλικτο υπολογιστικό μέσο για μια ποικιλία από τελικούς χρήστες υπολογιστών, που κυμαίνεται από K-12 μαθητές (νηπιαγωγείου-δημοτικού) μέχρι επαγγελματίες. Πάνω από 100 εφαρμογές έχουν δημιουργηθεί με το περιβάλλον AgentSheets σε περιοχές που περιλαμβάνουν την εκπαίδευση, την τέχνη, την επιστήμη υπολογιστών και τη μηχανική.

Η εταιρεία AgentSheets και ο ιδρυτής της Alexander Repenning έχουν βραβευθεί και υποστηριχθεί από οργανισμούς και εταιρείες, όπως το MIT και η Apple, ενώ το 1998 χρηματοδοτήθηκε από το αμερικανικό ίδρυμα NSF (American National Science Foundation) με μια δωρεά 100.000 αμερικανικών δολαρίων για την εμπορική επέκταση του υπάρχοντος site ανταλλαγής agents (το καλούμενο Behavior Exchange).

## Εκδόσεις

Παλαιότερες εκδόσεις (π.χ. η 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 σελίδας και παίξιμο ενός ήχου.

## Visual AgenTalk (VAT)

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

Η Visual AgentTalk είναι ένα βασισμένο σε κανόνες (rule-based) προγραμματιστικό περιβάλλον για το AgentSheets που απευθύνεται στον τελικό χρήστη (end user). Εισάγει μια νέα προσέγγιση στον προγραμματισμό από τον τελικό χρήστη, που ονομάζεται “Tactile Programming” (χειροπιαστός προγραμματισμός). Οι βασικές εντολές (primitives) και τα προγράμματα σε αυτή τη μέθοδο προγραμματισμού όχι μόνο έχουν πλούσιες οπτικές αναπαραστάσεις για να ενισχύουν την αναγνωσιμότητα του προγράμματος (οι εντολές είναι κουτιά που η μορφή τους απεικονίζει την ενέργεια που επιτελούν και τις παραμέτρους που καθορίζουν αυτή), αλλά έχουν και αλληλεπιδραστικά στοιχεία για να συνδράμουν στην συγγραφή και τροποποίηση ενός προγράμματος (οι παράμετροι είναι μενού με εικόνες που δείχνουν όλες τις δυνατές τιμές μιας παραμέτρου ώστε επιλέγοντας μια από αυτές να μην υπάρχει περίπτωση εισαγωγής άκυρης τιμής).

Γενικά, τα λεγόμενα “visual” (εποπτικά) προγραμματιστικά περιβάλλοντα χρησιμοποιούν την οπτικοποίηση (εξαιρουμένης της μορφής αναγνώσιμου κειμένου κώδικα που προϋπήρχε και στα παλαιότερα περιβάλλοντα) για να αναπαραστήσουν προγράμματα και προγραμματιστικές κατασκευές. Αυτές οι αναπαραστάσεις, εκτός και παρέχουν κάποια μορφή πληροφορίας στο χρήστη (feedback) κατά την εκτέλεση του προγράμματος, είναι στατικές αναπαραστάσεις του προγράμματος. Το να βλέπεις τέτοια προγράμματα σε ένα δυναμικό μέσο, όπως είναι ο υπολογιστής, λίγα προσφέρει στο να τα κάνει πιο κατανοήσιμα σε σχέση με το να βλέπεις τα ίδια προγράμματα σε ένα στατικό μέσο όπως είναι το χαρτί (να τα βλέπεις δηλαδή εκτυπωμένα). Ο «χειροπιαστός προγραμματισμός» επεκτείνει τα ήδη υπάρχοντα στον εποπτικό προγραμματισμό προσθέτοντας την αντίληψη μέσω του χειρισμού (perception by manipulation).

Στην μέθοδο αυτή προγραμματισμού, οι εποπτικές αναπαραστάσεις εμπλουτίζονται με μια πιο χειροπιαστή έννοια ανάγοντας τα τμήματα του προγράμματος στην τάξη εποπτικών δομικών στοιχείων που μπορούν να συρθούν και ριφθούν σε διαφορετικά περιβάλλοντα πέραν από έναν επεξεργαστή κώδικα (program editor). Η εφαρμογή προγραμματιστικών αντικειμένων με τη ρίψη τους σε διαφορετικές θέσεις-κόσμους ενεργοποιεί δυναμική οπτικοακουστική ανάδραση που δημιουργεί αντίληψη μέση του χειρισμού. Η δυνατότητα να εφαρμόζονται τα προγραμματιστικά αντικείμενα σε διαφορετικά πλαίσια μέσω του ίδιου τρόπου χειρισμού από το χρήστη (drag&drop) είναι η κύρια έγνοια του «χειροπιαστού προγραμματισμού» και παρέχει υποστήριξη για την κατανόηση, τη σύνθεση και την ανταλλαγή προγραμμάτων.

Ο προγραμματισμός με τη Visual AgenTalk επικεντρώνεται γύρω από την έννοια των αντικειμένων που μπορούν να μετακινούνται με ευελιξία μεταξύ τριών διαφορετικών κόσμων, του κόσμου της εφαρμογής (application world), του προγραμματιστικού κόσμου (programming world) και του κόσμου της συνεργασίας (collaboration world):

* Ο κόσμος της εφαρμογής περιέχει τα αντικείμενα που έχουν άμεσο ενδιαφέρον για τον τελικό χρήστη. Στο AgentSheets, οι κόσμοι των εφαρμογών αποτελούνται από επικοινωνούντες agents οργανωμένους σε ένα πλέγμα. Οι agents μπορούν να αναπαριστούν αντικείμενα του πραγματικού κόσμου όπως αυτοκίνητα, δρόμους και φανάρια, αντίστοιχα με τα αντικείμενα που βλέπει ή χειρίζεται ο τελικός χρήστης μιας εφαρμογής σε άλλα προγραμματιστικά περιβάλλοντα, για παράδειγμα τα κουμπιά και τα πεδία αναπαράστασης δεδομένων στο HyperCard της Apple.

* Ο προγραμματιστικός κόσμος περιέχει αντικείμενα που περιγράφουν την συμπεριφορά των αντικειμένων του κόσμου της εφαρμογής. Στη HyperCard, τα προγραμματιστικά αντικείμενα είναι μέθοδοι και χειριστές γεγονότων, δηλαδή κώδικας γραμμένος στη γλώσσα HyperTalk, που περιγράφουν την συμπεριφορά αντικειμένων του κόσμου της εφαρμογής, όπως για παράδειγμα τι γίνεται όταν πατήσουμε ένα συγκεκριμένο κουμπί. Αντίστοιχα η Visual AgenTalk παρουσιάζει τρεις διαφορετικούς τύπους προγραμματιστικών αντικειμένων:

* Οι εντολές (comands) είναι μικρές αλληλεπιδραστικές φόρμες που αναπαριστούν στοιχειώδεις προγραμματιστικές ενέργειες και μπορούν να τις χειριστούν οι τελικοί χρήστες. Διασυνδέονται με το χρήστη μέσω γνωστών και φιλικών προς αυτόν γραφικών στοιχείων αλληλεπίδρασης όπως είναι τα μενού επιλογών. Μια εντολή αποτελείται από ένα όνομα και έναν καθορισμένο αριθμό παραμέτρων, ενώ έχει μια εποπτική σύνταξη που επιτρέπει το συνδυασμό κειμένου και εικονικών στοιχείων. Οι τελικοί χρήστες θέτουν τις τιμές των τυπικών παραμέτρων μέσα αλληλεπιδραστικών στοιχείων που καθορίζονται από τον τύπο της κάθε παραμέτρου (type interactors), όπως αριθμητικά πεδία, πεδία κειμένου, check boxes και αναδυόμενα μενού με κείμενο ή εικονίδια. Έτσι περιορίζονται οι τιμές που εισάγει ο χρήστης μόνο στις επιτρεπτές επιλογές και αποφεύγονται τα λάθη. Για παράδειγμα, ένας επιλογέας ήχου είναι ένα αναδυόμενο μενού που προσφέρει ως επιλογές μόνο το ονόματα των ήχων που υπάρχουν εγκατεστημένοι στο σύστημα. Επίσης οι παράμετροι μπορούν να είναι αναφορές σε αντικείμενα του κόσμου της εφαρμογής (εικονίδια). Η ύπαρξη μέσα στον προγραμματιστικό κόσμο ενός αντικειμένου του κόσμου της εφαρμογής, όπως ακριβώς απεικονίζεται σε αυτόν, βοηθά σημαντικά τον τελικό χρήστη να κάνει την απεικόνιση-συσχετισμό μεταξύ των δύο κόσμων.

* Οι κανόνες (rules) περιέχουν εντολές συνθηκών και εντολές ενεργειών. Για παράδειγμα, ένας κανόνας IF-THEN (εάν-τότε) αποτελείται από δύο μέρη, το IF (εάν=συνθήκες) και το THEN (τότε=ενέργειες). Έτσι το τμήμα IF αναπαρίσταται στο αριστερό μέρος ενός κανόνα ως ένα πλαίσιο που δέχεται συνθήκες και αποτελεί ένα λογικό ΚΑΙ αυτών (πρέπει να ισχύουν όλες για να επαληθεύεται ο κανόνας), ενώ το τμήμα THEN, στο δεξί μέρος του κανόνα, είναι ένα πλαίσιο που δέχεται μια ακολουθία ενεργειών προς εκτέλεση (εάν επαληθευτεί ο κανόνας).

* Οι αφορμές-γεγονότα (triggers), όπως το “Tool” που ενεργοποιείται με το πάτημα ενός εργαλείου πάνω σε έναν agent και έχει ως παράμετρο ένα μενού με τα εργαλεία που υπάρχουν στην παλέτα ενός φύλλου εργασίας (worksheet-agentsheet), επιτρέπουν στο χρήστη να ορίσει το είδος του γεγονότος που θα προκαλέσει τον κανόνα να ελεγχθεί προς επαλήθευση και να εκτελεστεί εάν είναι αληθής. Άλλοι τύποι γεγονότων περιλαμβάνουν χρονιστές, πατήματα των πλήκτρων του ποντικιού, γεγονότα του πληκτρολογίου και νέα μηνύματα που ορίζονται από τους τελικούς χρήστες και μπορούν να σταλούν σε συγκεκριμένους agents βάση της κλάσης τους ή της θέσης τους στο πλέγμα (συνήθως σε σχέση με τον agent που αποστέλλει το μήνυμα).

* Ο συνεργασιακός κόσμος περιέχει τα αντικείμενα του κόσμου της εφαρμογής και του προγραμματιστικού κόσμου που μοιράζονται μέσα σε μια προγραμματιστική κοινότητα χρηστών. Στην Visual AgenTalk, τα μοιραζόμενα αντικείμενα μπορούν να περιλαμβάνουν εξομοιώσεις, agents, κανόνες, εντολές και αφορμές. Σύμφωνα με αρκετές παιδαγωγικές έρευνες, αλλά και έρευνες στο προσωπικό μεγάλων εταιρειών, ένας χρήστης που είναι μέλος μιας μεγαλύτερης κοινότητας όπου μπορεί εύκολα κάποιος να μοιράζεται τη δουλειά του με τους άλλους, εμπλουτίζει τη διαδικασία της ατομικής του μάθησης. Για προγραμματιστικά περιβάλλοντα, το διαδίκτυο φαίνεται πως είναι το ιδανικό μέσο που επιτρέπει τις ανταλλαγές ανάμεσα σε μια κατανεμημένη κοινότητα, αλλά οι μηχανισμοί που χρησιμοποιούνται θα πρέπει να είναι εύκολοι στη χρήση και στενά συνδεδεμένοι με το υπόλοιπο προγραμματιστικό περιβάλλον, σε αντίθεση με το απλό FTP ή την ανταλλαγή email που χρησιμοποιείται συχνά μεταξύ των χρηστών.

Ο «χειροπιαστός προγραμματισμός» βασίζεται στην δυνατότητα των τελικών χρηστών να διέρχονται εύκολα τα σύνορα μεταξύ των κόσμων της εφαρμογής, του προγραμματισμού και του μοιράσματος. Η φιλοσοφία του είναι η δημιουργία ενός προγραμματιστικού περιβάλλοντος που παίρνει υπόψη και τους τρεις αυτούς κόσμους και παρέχει μια ενοποιημένη αντιμετώπιση όσον αφορά την προσπέλαση τους. Έτσι διευκολύνει την σύνθεση, την κατανόηση και την ανταλλαγή προγραμμάτων μεταξύ των χρηστών:
 
## Σύνθεση

Η διαδικασία προγραμματισμού στη 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 που έχουμε ανοικτό).

## Ristretto

Ristretto είναι το όνομα μιας πολύ πρόσφατης τεχνολογικής προσθήκης στο περιβάλλον των AgentSheets, που επιτρέπει στους τελικούς χρήστες να μετατρέψουν εργασίες (projects) που έχουν υλοποιηθεί σε AgentSheets, απευθείας σε Java applets (μικροεφαρμογές που μπορούν να κατεβαίνουν από ένα παροχέα web σελίδων και να τρέχουν μέσα σε μια web σελίδα αλληλεπιδρώντας με το χρήστη). Ετσι πλέον μπορεί κάποιος, χωρίς την ανάγκη να μάθει και καταλάβει τις έννοιες και τον προγραμματισμό στη γλώσσα Java, πατώντας ένα απλό κουμπί, να δημιουργήσει αλληλεπιδραστικές εξομοιώσεις που ανταγωνίζονται το SimCity και μπορούν εύκολα να εισαχθούν στις προσωπικές web σελίδες του ή σε συλλογές εξομοιώσεων που διατηρεί η κοινότητα των AgentSheets στο Internet. Τα Java applets που δημιουργεί το Ristretto μπορούν να χρησιμοποιηθούν μέσω του World Wide Web (WWW) από μια πληθώρα διαφορετικών μηχανών, συμπεριλαμβανομένων των PC/Windows, του Macintosh και Unix υπολογιστών.

Όπως χαρακτηριστικά αναφέρουν οι δημιουργοί του, το Ristretto είναι ένας espresso που φτιάχνεται με λιγότερο (το μισό) νερό απ´ότι χρειάζεται για να φτιάξει κανείς έναν κανονικό espresso (η «κουλτούρα» της Java περιλαμβάνει μεταξύ άλλων και το εικονίδιο ενός φλιτζανιού καφέ, αφού το όνομα της το πήρε από την ομώνυμη μάρκα καφέ που συνηθίζουν να πίνουν οι αρχικοί εμπνευστές/προγραμματιστές της).

Η δημιουργία και δημοσιοποίηση μιας εφαρμογής Java με το Ristretto έχει τρία βήματα:

* Δημιουργία μιας εξομοίωσης με το AgentSheets

* Πάτημα του κουμπιού Ristretto στην μπάρα εργαλείων του AgentSheets

* Τοποθέτηση (upload) του αυτόματα δημιουργηθέντος applet στις σελίδες που θέλουμε στο web (π.χ. με το FrontPage ή με απλό FTP στην κατάλληλη θέση στο λογαριασμό μας), ή αποστολή τους σε κάποιον άλλο χρήστη που δεν έχει το AgentSheets, αλλά έχει Java ή web browser που ενσωματώνει μια εικονική μηχανή Java (JVM - Java Virtual Machine).

To Ristretto αποτελείται από δύο είδη μεταγλωττιστών, τον resource compiler (μεταγλωττιστής αρχείων δεδομένων) που μετατρέπει απευθείας εικόνες και ήχους που έχουν δημιουργήσει οι τελικοί χρήστες σε τύπους αρχείων που είναι συμβατά με τη Java (π.χ. εικόνες .gif, .jpg), και τον behavior compiler (μεταγλωττιστής συμπεριφορών) που, με ταχύτητα της τάξης των 10000 και άνω γραμμών κώδικα το δευτερόλεπτο, μεταφράζει την Visual AgenTalk γλώσσα απευθείας σε εκτελέσιμο κώδικα Java (Java byte codes). Επειδή το Ristretto βγάζει Java bytecode και όχι πηγαίο Java κώδικα, ο κώδικας που δημιουργεί δεν χρειάζεται περαιτέρω μεταγλώττιση με κάποιον Java compiler, αλλά είναι άμεσα εκτελέσιμος από κάποια Java Virtual Machine όπως αυτή που ενσωματώνει ο Internet Explorer ή το Netscape Navigator.

Η ευκολία στον προγραμματισμό που δίνει η Visual AgenTalk, συνδυασμένη με τη διάφανη χρήση της τεχνολογίας ενός Java compiler επιτρέπει πλέον και στους τελικούς χρήστες, πέραν των επαγγελματιών προγραμματιστών, να δημιουργήσουν τις δικές τους αλληλεπιδραστικές εξομοιώσεις και παιχνίδια για το Internet μέσα σε μερικά λεπτά.

## 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 που έχουν δημιουργήσει άλλοι χρήστες ή η ομάδα που δημιούργησε και συνεχίζει να βελτιώνει το περιβάλλον αυτό.

## Δημιουργία ενός project σε AgentSheets

# Αφού ξεκινήσει η εφαρμογή και κάνουμε κλίκ στην εισαγωγική οθόνη που αναφέρει τους δημιουργούς και τους χρηματοδότες των AgentSheets, επιλέγουμε το μενού “File/New Project”. Δίνουμε ένα νέο όνομα για το project, εισάγοντας όνομα για τον κατάλογο που θα δημιουργηθεί κάτω από τον κατάλογο Projects όπου αναζητά η εφαρμογή AgentSheets τα projects της όταν επιλέγουμε “File/Open Project”. Στη συνέχεια επιλέγουμε από ένα μενού προκαθορισμένων διαστάσεων το μέγεθος που θα έχουν οι agents σε αυτό το project, ενώ ίδιο μέγεθος θα έχουν τα κελιά του πλέγματος όπου κατοικούν οι agents του project μας. Το προτεινόμενο μέγεθος είναι 32x32, αλλά μπορούμε να επιλέξουμε το “Custom…” από το μενού και να εισάγουμε το δικό μας πλάτος και ύψος για τους agents που θα δημιουργήσουμε σε αυτό το Project.

# Με τη δημιουργία του νέου project, θα εμφανιστεί το άδειο παράθυρο Gallery, όπου απεικονίζονται οι agents και οι διάφορες όψεις αυτών (σε δενδρική μορφή). Από το μενού Gallery, επιλέγουμε το “New Agent…” και δίνουμε κάποιο όνομα στον agent που δημιουργούμε, απαντώντας στην σχετική ερώτηση που μας γίνεται. Αμέσως μετά, εμφανίζεται στην Gallery ένα κενό πλαίσιο που φέρει το όνομα που δώσαμε. Με διπλό κλίκ επάνω του εμφανίζεται ένα υποτυπώδες περιβάλλον ζωγραφικής, όπου μπορούμε να ζωγραφίσουμε κάποια απεικόνιση. Εναλλακτικά μπορούμε να «συλλάβουμε» κάποια εικόνα από την οθόνη με τις αντίστοιχες επιλογές στο μενού Gallery, “Grab Screen 1:1” για λήψη μιας περιοχής ίσου μεγέθους με τον agent μας, “Grab Any Size” για λήψη μεγαλύτερης/μικρότερης περιοχής και αλλαγής διαστάσεων αυτής ώστε να έχει το μέγεθος του agent μας και Grab Again, που χρησιμεύει για επανάληψη της σύλληψης της τελευταίας περιοχής που επιλέξαμε, ώστε να μπορούμε να συλλάβουμε για παράδειγμα καρέ από κάποιο video που παίζει στην οθόνη μας. Στο μενού Gallery παρέχονται επίσης επιλογές για δημιουργία νέων απεικονίσεων του agent που θα μοιράζονται όλες το ίδιο πρόγραμμα-συμπεριφορά (New Depiction), ενώ δίνονται πολλές δυνατότητες για αυτόματη δημιουργία απεικονίσεων (Duplicate Depiction / Run Duplication Script), όπως για παράδειγμα οι περιστροφές 90,180 και 270 μοιρών ενός αμαξιού, έχοντας σχεδιάσει ή συλλάβει μόνο μια εικόνα του. Οι εικόνες αυτές μπορούν να είναι διαφανείς, ορίζοντας ποιο χρώμα τους θα θεωρεί διαφανές (μάσκα) το AgentSheets.

# Από το μενού “File/New Worksheet” μπορούμε να δημιουργήσουμε ένα νέο πλέγμα που φιλοξενεί agents και πάνω στο οποίο εξελίσσεται μια προσομοίωση. Το πλέγμα έχει πάντα μέγεθος 100x100 κελιά, αλλά συνήθως μόνο ένα μέρος του χρησιμοποιείται. Στο αριστερό του μέρος το παράθυρο του πλέγματος (Worksheet), φέρει μια εργαλειοθήκη, όπου υπάρχει ένα μολύβι για την τοποθέτηση της απεικόνισης του agent που έχουμε επιλέξει από τη gallery, ζωγραφίζοντας μέσα στο worksheet, μια γόμα για την αφαίρεση agents που έχουμε τοποθετήσει σε κελιά, ένα χέρι και ένα σφυρί που δεν χρησιμοποιούνται από το AgentSheets απευθείας, αλλά μπορούν οι χρήστες να προγραμματίσουν κάποιους agents ώστε να αντιδρούν ανάλογα όταν αυτά χρησιμοποιηθούν πάνω τους, δύο εργαλεία για σύνδεση και αποσύνδεση δύο agents (αποστέλλονται τα μηνύματα LINK και UNLINK σε αυτούς και αν δεν τα αναγνωρίζουν εμφανίζουν ανάλογο μήνυμα), σχεδίασης περιοχής (μια παραλληλόγραμμη περιοχή γεμίζει με τον επιλεγμένο agent από τη Gallery) και βοήθειας (ένας agent μπορεί να αντιδρά σε αυτό το εργαλείο και να δείχνει κάποιο μήνυμα σε ένα μπαλόνι - help balloon - στο στύλ των hint παραθύρων βοηθείας του MacOS).

# Επειδή οι agents που σχεδιάσαμε μέχρι τώρα δεν έχουν κάποια προγραμματισμένη συμπεριφορά, αν πατήσουμε το κουμπί Run στην toolbar του AgentSheets για να ενεργοποιήσουμε το φύλλο εργασίας που έχουμε επιλέξει, δεν θα δούμε κάποια κινητικότητα σε αυτό, αλλά οι agents θα είναι στάσιμοι. Επιλέγουμε λοιπόν κάποιον agent στη Gallery και από το μενού “Gallery/Edit Behavior” εμφανίζουμε τον επεξεργαστή κανόνων της Visual AgenTalk. Εκεί εμφανίζεται η απεικόνιση του agent μας (η πατρική απεικόνιση από την οποία «κατάγονται» όλες οι επόμενες που δημιουργήσαμε για τον agent και ένα “while running” trigger που περιλαμβάνει έναν κανόνα με άδεια if και then πεδία. Το trigger αυτό ενεργοποιείται σε κάθε κύκλο της εξομοίωσης των AgentSheets, από μια φορά για κάθε agent και αφού τελειώσει η επεξεργασία της λογικής κάθε agent, αρχίζει από την αρχή με νέο κύκλο. Οι κανόνες που θα μπούν μέσα στο κουτί αυτό θα ελεγχθούν από την κορυφή προς τα κάτω και ο πρώτος του οποίου οι συνθήκες στο κουτί IF του θα επαληθευτούν όλες, θα ενεργοποιηθεί. Η ενεργοποίηση (firing) ενός κανόνα σημαίνει την εκτέλεση των ενεργειών που υπάρχουν στο κουτί THEN που είναι μέσα στον κανόνα, με σειρά από πάνω προς τα κάτω σε αυτό το κουτί. Αφού εκτελεστούν οι ενέργειες, δεν θα ελεγχθούν άλλοι κανόνες, αλλά θα συνεχιστεί ο τρέχων κύκλος εξομοίωσης με τον επόμενο agent που βρίσκεται σε κάποιο κελί στο φύλλο εργασίας στο οποίο τρέχει η εξομοίωση. Με το κουμπί “New Rule” που βρίσκεται στο παράθυρο αυτό, μπορούμε να εισάγουμε έναν νέο κανόνα, ενώ με το κουμπί “New Method” μια νέα μέθοδο (μια μέθοδος είναι ένα κουτί που περιλαμβάνει ένα trigger - διακόπτη/γεγονός - που ενεργοποιεί τη μέθοδο όταν ο agent λάβει το αντίστοιχο μήνυμα που το ενεργοποιεί, και ένα σύνολο κανόνων που ελέγχονται ακολουθιακά από πάνω προς τα κάτω μέχρι να εξαντληθούν ή να βρεθεί κάποιος που επαληθεύεται ώστε να ενεργοποιηθεί-εκτελεστεί). Αλλα βοηθητικά κουμπιά είναι το Copy για αντιγραφή κανόνων (το ίδιο γίνεται και με drag&drop τους), καθώς και το Apply (για εφαρμογή του προγράμματος απευθείας στον agent ενώ τρέχει η εξομοίωση και χωρίς να κλείσει το παράθυρο αυτό) και OK (για κλείσιμο του παραθύρου και εφαρμογή του νέου προγράμματος. Αν κλείσουμε το παράθυρο χωρίς να πατήσουμε Apply ή OK θα ερωτηθούμε αν θέλουμε να μεταγλωττίσουμε και κρατήσουμε το νέο πρόγραμμα ή να ακυρωθούν οι αλλαγές που κάναμε στο τρέχον πρόγραμμα του agent. Επίσης στην κάτω δεξιά γωνία του παραθύρου βρίσκεται ένας σκουπιδοτενεκές, όπου μπορούμε να ρίψουμε κάποιο προγραμματιστικό στοιχείο που δεν χρειαζόμαστε πλέον.

# Για να εισάγουμε συνθήκες στο πεδίο IF και ενέργειες στο πεδίο THEN ενός κανόνα, μπορούμε να τις αντιγράψουμε με drag&drop από άλλους κανόνες (από το ίδιο ή από άλλο αντίστοιχο παράθυρο για κάποιον άλλον agent), ή να τις πάρουμε από τις παλέτες Conditions και Actions αντίστοιχα, τις οποίες μπορούμε να εμφανίσουμε από το μενού Tools. Παρομοίως Triggers για χρήση σε νέες μεθόδους (που δημιουργούμε με το κουμπί New Method που προαναφέρθηκε) μπορούμε να παρουμε από την παλέτα Triggers η οποία επίσης υπάρχει στο μενού Tools. Αυτές είναι και οι εξορισμού παλέτες στο AgentSheets, αλλά μπορούμε να κατεβάσουμε επεκτάσεις του από το Web που τοποθετούμενες στον υποκατάλογο Extensions του AgentSheets, εμφανίζονται κάτω από το μενού Tools ως παλέττες που προσφέρουν νέα προγραμματιστικά στοιχεία (triggers, conditions, actions).

# Έχοντας δημιουργήσει τους agents μας μπορούμε να ξεκινήσουμε κάποια εξομοίωση με το κουμπί Run, να τη σταματήσουμε με το κουμπί Stop και να τη δούμε βήμα-προς-βήμα με το κουμπί Step (δίπλα στο Run). Αν μας ικανοποιεί η εξομοίωση μας, από το μενού Gallery/Views, έχοντας επιλέξει τους agents που θέλουμε να βλέπει ο τελικός χρήστης στην παλέτα του επιλέγουμε το Define End User Depictions (κάποιες απεικονίσεις μπορεί να τις θέλουμε κρυφούς επειδή μπορεί να χρησιμοποιούνται π.χ. για ενδιάμεσες καταστάσεις ενός agent, όπως την έκρηξη αυτού και δεν θέλουμε να μπορεί να τις εισάγει στην εξομοίωση ο τελικός χρήστης). Αν τυχόν δεν θυμόμαστε αργότερα ποιες απεικονίσεις έχουμε επιλέξει, ή θέλουμε να αφαιρέσουμε κάποια χωρίς να τις ξαναδιαλέξουμε μετά όλες και να κάνουμε ξανά “Define”, επιλέγουμε από το ίδιο μενού το “Select End User Depictions” για να επιλεγούν αυτόματα όλες οι απεικονίσεις των agents που βλέπει ο τελικός χρήστης στην παλέτα του. Αποεπιλέγουμε όσες δεν θέλουμε, ή επιλέγουμε και άλλες και πατάμε πάλι “Define End User Depictions” για να καθορίσουμε και πάλι τις απεικονίσεις που βλέπει και μπορεί να χρησιμοποιήσει ο τελικός χρήστης της εξομοίωσης μας. Τέλος, Από το ίδιο μενού επιλέγουμε “User View” και εισερχόμαστε στην κατάσταση χρήστη, όπου μπορούμε να δοκιμάσουμε ως τελικοί χρήστες την εξομοίωση και να δούμε αν αλληλεπιδρά μαζί μας όπως αναμένουμε.

# Εάν το τελικό αποτέλεσμα είναι ικανοποιητικό και θέλουμε να δημιουργήσουμε κάποιο Java Applet με την εξομοίωση μας, μπορούμε να πατήσουμε το κουμπί Ristretto για να μεταγλωττίσουμε σε εκτελέσιμο Java κώδικα την εξομοίωση μας και να πάρουμε έναν κατάλογο αρχείων που μπορούμε να τοποθετήσουμε σε κάποιο χώρο που έχουμε στο World Wide Web, προσπελαύνοντας το applet μας μέσω κάποιας HTML σελίδας. Εναλλακτικά μπορούμε να μοιράσουμε το applet μας ως εφαρμογή σε όσους χρήστες έχουν εγκατεστημένη κάποια Java Virtual Machine στο μηχάνημα τους (η Java VM της Apple λέγεται MRJ, ενώ υποστηρίζεται και από τον Internet Explorer, ο οποίος παρέχει και δικιά του Java VM όπως και το Netscape Navigator).

## Πηγές

* Ιστότοπος AgentSheets - https://web.archive.org/web/20151113073857/http://www.agentsheets.com/

Κατηγορία:Εργαλεία ανάπτυξης παιχνιδιών
Κατηγορία:Οπτικές γλώσσες προγραμματισμού
Κατηγορία:Τεχνητή νοημοσύνη