fantom — συγκεντρωτικός οδηγός — DedSec Project
fantom — συγκεντρωτικός οδηγός Fantom Τι προσφέρει η γλώσσα Η Fantom στοχεύει σε virtual-machine περιβάλλοντα με typed classes, modules που ονομάζονται pods και κοινή standard library…
Fantom
Τι προσφέρει η γλώσσα
Η Fantom στοχεύει σε virtual-machine περιβάλλοντα με typed classes, modules που ονομάζονται pods και κοινή standard library.
Μικρό παράδειγμα προς μελέτη
class Main {
static Void main() { echo("Hello from Fantom") }
}
Εντόπισε τη μέθοδο εισόδου, άλλαξε το μήνυμα και κατέγραψε την έκδοση του runtime.
Τι να επαληθεύσεις
Κατάγραψε την πραγματική έκδοση εργαλείου, τις απαιτούμενες εξαρτήσεις και την έξοδο σε δοκιμαστικά δεδομένα για τη Fantom. Πρόβλεψε το αποτέλεσμα πριν το ελέγξεις και διατήρησε την αρχική και τη διορθωμένη εκδοχή ώστε να φαίνεται η αιτιώδης διαφορά. Μην αποκαλείς ένα απόσπασμα εκτελεσμένο αν δεν έχεις το κατάλληλο περιβάλλον.
Παγίδα ειδική για το θέμα
Μην υποθέτεις ότι κάθε pod εκτελείται αμετάβλητο σε JVM ή JavaScript· έλεγξε συμβατότητα στόχου.
Εργαστήριο εξάσκησης: Fantom
Η Fantom μπορεί να στοχεύει διαφορετικά managed runtimes. Οι τύποι Str, Int και Void ανήκουν στη δική της σύνταξη και δεν πρέπει να ερμηνεύονται αυτόματα ως Java ή C#. Για εκτέλεση απαιτείται συμβατή εγκατάσταση Fantom· τα παρακάτω αποτελούν παραδείγματα για μελέτη, όχι καταγεγραμμένες πραγματικές δοκιμές.
Άσκηση 1: ποια είναι η είσοδος του προγράμματος;
class Hello {
static Void main() {
Str[] names := ["Ada", "Grace"]
echo(names.size)
}
}
Εδώ δημιουργείται λίστα δύο συμβολοσειρών. Σε συμβατό runtime η αναμενόμενη έξοδος είναι 2. Αφαίρεσε νοητικά όλα τα στοιχεία και πρόβλεψε αν αλλάζει ο τύπος της λίστας ή μόνο το μέγεθος. Εξήγησε γιατί το static Void main() δηλώνει μέθοδο εκκίνησης και γιατί το echo() προκαλεί ορατό αποτέλεσμα, δηλαδή παρενέργεια.
Άσκηση 2: χειρισμός τύπων χωρίς αυθαίρετη μετατροπή
Φτιάξε ένα Int και ένα Str που περιέχει αριθμητικά ψηφία. Δεν είναι ισοδύναμο να κάνεις αριθμητική πράξη σε Str και να προσθέσεις δύο Int. Ερεύνησε την ρητή μετατροπή που παρέχει η εγκατεστημένη Fantom και πώς αναφέρει μη αποδεκτή είσοδο. Για Str? εξήγησε τη διαφορά ανάμεσα σε απουσία τιμής και κενή συμβολοσειρά. Μια μέθοδος που απαιτεί non-null αντικείμενο χρειάζεται κατάλληλο έλεγχο πριν κληθεί.
Άσκηση 3: τρία διαφορετικά σφάλματα
Σχεδίασε ξεχωριστό δοκιμαστικό για index εκτός ορίων, για αρχείο που δεν υπάρχει και για τιμή λάθος τύπου. Σε λίστα δύο στοιχείων ο δείκτης 2 είναι εκτός ορίων, αν αρχίζουμε από το 0. Η έλλειψη αρχείου εξαρτάται από πραγματικό path και filesystem· το σφάλμα τύπου μπορεί να εντοπίζεται ήδη στη μεταγλώττιση. Μην ισχυρίζεσαι κοινή διάγνωση για αυτά τα αίτια.
Απόδειξη ολοκλήρωσης
Χρειάζονται η ακριβής έκδοση Fantom, το backend, η εντολή εκτέλεσης, οι προβλέψεις και οι παρατηρήσεις ως χωριστά πεδία. Χωρίς runtime δήλωσε ρητά ότι έγινε μόνο μελέτη κώδικα. Κριτήριο είναι η κατανόηση μεθόδου, λίστας, ορίων και nullability, όχι η επανάληψη ενός γενικού Hello World.
Fantom — Διαδρομή ουσιαστικής εξάσκησης
Στάδιο 1: κατανόηση εκτέλεσης
Εγκατάστησε συμβατό Fantom runtime και δημιούργησε pod με class και main. Ξεχώρισε compilation source από εκτέλεση pod.
Στάδιο 2: απόδειξη με ελεγχόμενες δοκιμές
Χρησιμοποίησε nullable types και typed list για inventory. Δοκίμασε missing item και αντικατάστησε τη σιωπηλή διάδοση null με domain result.
Στάδιο 3: μικρό ολοκληρωμένο έργο
Εξέτασε Java και JavaScript backends με pure computation και σημείωσε ποιες APIs υπάρχουν. Κράτησε συγκεκριμένο SDK/dependencies: browser και JVM διαφέρουν.