Αν και έχω αρκετές απορίες σχετικά με το πως μπορεί να γίνεται κάτι τέτοιο, ο Ryan Stewart, software engineer στην Adobe κατάφερε να δημιουργήσει μια τεχνική, σύμφωνα με την οποία μπορεί να μετατρέπει οποιονδήποτε (?) κώδικα γραμμένο σε C / C++ (και όπως ισχυρίζεται και ο ίδιος ακόμη και σε άλλες γλώσσες), σε Actionscript και κατά επέκταση σε Flash, Air ή Flex εφαρμογή!
Οι εφαρμογές αυτές μπορούν να τρέχουν χωρίς πρόβλημα στον νέο Flash Player 9 που πρόκειται να κυκλοφορήσει σύντομα και αν κάποιος μεταφράσει ακριβώς τα λόγια του δημιουργού (που παρουσίασε ένα demo της όλης προσπάθειας, στα πλαίσια του Adobe Max, με τον κώδικα του Quake να τρέχει σε Flash και το πλήθος να παραληρεί) οποιοσδήποτε κώδικας γραμμένος σε C / C++ μπορεί να μετατραπεί, εκτός και αν κάνει κλήσεις σε εξωτερικές βιβλιοθήκες που μπορεί να μην υποστηρίζονται από τα εργαλεία. Εξηγώντας περαιτέρω την τεχνική κατασκευής αυτών των εργαλείων, ο Ryan ανέφερε πως απλά έκανε κάποιες αλλαγές στον LLVM (Low Level Virtual Machine) Compiler ώστε αντί να παράγει κανονική assembly, παράγει low-level Actionscript κώδικα.
Μέχρι να κυκλοφορήσει κάτι πιο απτό, θα έχω μια συγκρατημένη αισιοδοξία για το όλο project.

Comments (3) / Comment feed
Χάρης Καλογήρου
Αν και δεν είδα το βίντεο, κάτι τέτοιο γίνεται γράφοντας ένα back-end για κάποιον compiler. Θα μπορούσαμε δηλαδή να πάρουμε τον GCC και να τον κάνουμε να παράγει ActionScript από πίσω! Τότε μάλιστα θα είχαμε αυτόματα και fortran για Flash και ο,τι γλώσσα υποστηρίζει ο GCC για front-end. Το πρόβλημα θα είναι πάντα οι βιβλιοθήκες που χρησιμοποιείς, θα πρέπει και αυτές να γίνουν compile κατά τον ίδιο τρόπο. Ακόμα και η libc…
October 19th, 2007 at 10:04 am (#)
Stelabouras
Χάρη, όντως αυτό κάνει το εργαλείο, απλά είναι λίγο ασυνήθιστο να βλέπει κανείς ένα τόσο complex C++ code όπως η μηχανή του Quake να γίνεται τόσο απλά και γρήγορα transform σε actionscript! Φαντάσου να γινόταν και η Sylphis3D ;)
October 19th, 2007 at 10:54 am (#)
Χάρης Καλογήρου
Sylphis3D σε Flash! ΚΟΛΑΣΗΗΗ!! :) :Ο
October 19th, 2007 at 8:06 pm (#)