Bon maintenant qu'on a bien rigolé avec tout plein de mots qu'on comprend pas, voila en quelques lignes ce que j'ai compris en téléchargeant le code et en regardant ça d'un peu plus près :
on prend un problème classique, genre cat (c'est le sujet de l'exemple hello1), qu'on transforme en une espèce de graphe (les machins de mealy, si j'ai bien compris, cf wikipedia), en ayant comme nœuds :
une "door" file_reader, qui va ouvrir le fichier et va lire les lignes une a une.
une autre "door" printf qui va recevoir des lignes et les afficher a l’écran
et un "link" qui relie les 2 doors.
file_reader ---link----> printf
La lib evenja permet de définir des classes c++ correspondant a ces 3 éléments, et contient le moteur qui va faire tourner le bouzin, cad appeler une méthode du file_reader, récupérer la structure qui contient la ligne lue, et la renvoyer via le link au printf.
Toute la description de ce workflow est contenue dans un fichier xml (hello1.xml ici) qui définit les différents noeuds et leurs liens, et à l’exécution le moteur instancie les éléments définis dans ce ficher.
Du coup, si par exemple on veut faire un double cat, cad rajouter un deuxième fichier, il suffit de modifier le fichier xml (en rajoutant un noeud et un lien) et de relancer la commande (evenja hello1.xml) (mais dans ce cas les lignes des 2 fichiers seront mélangés, un peu comme si 2 cat se déroulent en parallèle).
[^] # Re: Brace yourselves, bullshit is ENDED
Posté par jigso . En réponse à la dépêche Concours "Evenja Café", un nouveau paradigme de programmation. Évalué à 8.
Bon maintenant qu'on a bien rigolé avec tout plein de mots qu'on comprend pas, voila en quelques lignes ce que j'ai compris en téléchargeant le code et en regardant ça d'un peu plus près :
file_reader ---link----> printfLa lib evenja permet de définir des classes c++ correspondant a ces 3 éléments, et contient le moteur qui va faire tourner le bouzin, cad appeler une méthode du file_reader, récupérer la structure qui contient la ligne lue, et la renvoyer via le link au printf.
Toute la description de ce workflow est contenue dans un fichier xml (hello1.xml ici) qui définit les différents noeuds et leurs liens, et à l’exécution le moteur instancie les éléments définis dans ce ficher.
Du coup, si par exemple on veut faire un double cat, cad rajouter un deuxième fichier, il suffit de modifier le fichier xml (en rajoutant un noeud et un lien) et de relancer la commande (evenja hello1.xml) (mais dans ce cas les lignes des 2 fichiers seront mélangés, un peu comme si 2 cat se déroulent en parallèle).