Bonjour les amis §§
Devant la baisse de niveau moyen d´intelligence/topic sur le forum, je me permets de créer celui-ci afin de vous présenter une technologie intéressante.
Vous n´êtes pas sans savoir (enfin, si, je vous connais) que notre système préféré, Mac OS X, repose sur une API native (nommée Cocoa) à caractère dynamique : toutes les applications que nous utilisons nativement fonctionnent en effet par passage de messages entre leurs objets. Par exemple, lorsque je clique sur un bouton, le système envoie le message onTACliquéLaGueule au bouton, qui détermine après comment il doit réagir tout ça. De même avec les autres parties de la GUI, avec les données, etc... avec tout, j´ai pas d´exemple, débrouillez-vous.
Naturellement, tout ceci implique de nombreux calculs en runtime (= pendant que l´application tourne), et ça ferait frémir des gens. Mais on les emmerde, moi je fais du Python et du Scheme, j´aime bien les machins dynamiques avec des runtimes. Et là, ça présente un intérêt particulier.
Il est en effet possible de charger l´interpréteur (et d´autres machins) d´un langage nommé FScript *dans* une application *pendant* qu´elle tourne. Je m´étais livré à cette expérience sur le SDZ en MP, et je vous en livre le résultat, AVEC des photos (petits veinards).
En effet en chargeant FScript, on peut accéder à tous les objets de l´application, leur envoyer des messages, etc... Et ça, c´est parfaitement inutilisable pour l´instant, en tout cas pour moi, mais c´est intéressant quand même. Allez hop, le contenu du MP :
<citation nom="Bigloo">Pour FScript : je <lien
url="
http://dashuhn.free.fr/fsfscriptanywhere.png">c
harge FScript dans Safari</lien>, puis je lance depuis Safari l´explorateur d´objets et je sélectionne avec Select View la bonne fenêtre (en fait j´ai sélectionné un bouton et j´ai utilisé une propriété qui pointait vers le contrôleur de la fenêtre sur laquelle il était), et <lien url="
http://dashuhn.free.fr/fscript.png">je vais jusqu´à la méthode setAlphaValue:(float) de la fenêtre pour l´appeler et rentrer une valeur de mon choix</lien>.
<lien url="
http://dashuhn.free.fr/resultat.png">Ca marche, sans quitter Safari, sans le relancer, sans les sources ni rien.</lien>
Cocoa rules.</citation>