DedSec Project

io — συγκεντρωτικός οδηγός — DedSec Project

io — συγκεντρωτικός οδηγός Io Τι προσφέρει η γλώσσα Η Io είναι γλώσσα βασισμένη σε prototypes: τα αντικείμενα χειρίζονται μηνύματα και κληρονομούν συμπεριφορά από άλλα αντικείμενα, χωρίς…

Io

Τι προσφέρει η γλώσσα

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

Μικρό παράδειγμα προς μελέτη

Vehicle := Object clone
Vehicle speed := 0
car := Vehicle clone
car speed = 25
car speed println

Άλλαξε τιμή στο clone και διάβασε ανεξάρτητα την τιμή του prototype. Σχεδίασε σε ποιο αντικείμενο αναζητείται ένα μήνυμα που δεν έχει το clone.

Τι να επαληθεύσεις

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

Παγίδα ειδική για το θέμα

Το clone και η μεταβολή mutable slots δεν ισοδυναμούν με ανεξάρτητο αντίγραφο κλάσης· παρακολούθησε τον ιδιοκτήτη κάθε slot.

Εργαστήριο εξάσκησης: Io

Αλυσίδα μηνυμάτων

Η Io βασίζεται σε objects που λαμβάνουν messages, αντί για το συνηθισμένο σύστημα κλάσεων. Σε προσωρινό numbers.io δοκίμασε:

numbers := list(1, 2, 3)
squares := numbers map(n, n * n)
squares println

Αναμένεται συλλογή με 1, 4, 9. Η map επεξεργάζεται τα στοιχεία δημιουργώντας νέο αποτέλεσμα. Η println είναι message στον receiver, όχι καθολική συνάρτηση εκτύπωσης όλων των γλωσσών. Κατάγραψε τη μορφή που εμφανίζει ο συγκεκριμένος Io interpreter, χωρίς να υποθέτεις πανομοιότυπη εμφάνιση ανά έκδοση.

Slots και κλωνοποίηση

Δημιούργησε Account := Object clone και slot με Account balance := 0. Σύγκρινε ένα Account clone με το αρχικό αντικείμενο και παρατήρησε από πού γίνεται lookup για το balance. Η κλωνοποίηση prototype δεν αποδεικνύει αυτόματα βαθιά αντιγραφή κάθε εμφωλευμένης κατάστασης. Πρόσθεσε message αύξησης μόνο για θετικά ποσά και εξήγησε πού πρέπει να γίνει validation.

Αστοχία δυναμικής αποστολής

Στείλε σε αριθμό message που δεν υποστηρίζει, σε ξεχωριστό δοκιμαστικό αρχείο. Κράτησε πραγματικό μήνυμα αποτυχίας, receiver και όνομα message. Πρόκειται για δυναμικό lookup και όχι για σφάλμα στατικού compiler. Μη μετατρέπεις σιωπηλά το σφάλμα σε δήθεν έγκυρη τιμή.

Αυτόνομη άσκηση

Φτιάξε counter object με increment και ανάγνωση τιμής. Δημιούργησε δύο clones και εξέτασε αν μοιράζονται την κατάσταση ή όχι, καταγράφοντας παρατηρήσεις. Δοκίμασε κενή συλλογή, μηδέν, αρνητικούς και πολλαπλές κλήσεις. Δήλωσε πραγματική έκδοση Io. Αναφορά: https://iolanguage.org/