Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

: CodeWorker 4.4

Posté par Ontologia (page perso, ). Modéré le 25 novembre 2007.
CodeWorker est un outil d'automatisation du développement, sous GNU LGPL. Cet outil se propose d'être un générateur de code universel, capable non seulement de générer du code, mais de générer celui-ci en l'injectant dans du code existant.

Cordeworker se matérialise comme un interpréteur d'un langage de script intégrant la possibilité de définir une grammaire BNF du langage à parser ou du source cible dans lequel on veut injecter du code. La génération se décrit à l'aide de modèles de génération (template-based scripts), décrivant le remplissage d'un graphe de parsing pendant l'analyse. Ce graphe pourra ensuite être manipulé.

Sa force réside dans sa souplesse totale : on peut lui faire lire un source en C++ ainsi que des information en XML, pour injecter du code dans du Java. Partant de là, et de grammaire BNF decrivant XML, Java, etc... on peut imaginer toutes sortes d'outils. Notons le mode JEdit prenant en charge la coloration syntaxique pour CodeWorker.

CodeWorker est donc un outil puissant, stable, qui a sûrement besoin de contributions comme des scripts pour analyser toutes sortes de langages et ainsi permettre de nombreuses manipulations !

> Lire la dépêche (56 commentaires, moyenne: 2,4).  

Vous avez demandé le commentaire #884945.

...

Posté par Matthieu C () le 25/11/2007 à 19:46. (lien). Évalué à 10.

CodeWorker est donc un outil puissant, stable, qui a surement besoin de contributions comme des scripts pour parser toute sortes de langages et ainsi permettre de nombreuses manipulations !
C'est bien beau, mais j'ai du mal à voir des applications pratiques.

L'article aurait pu cité des exemples concret d'utilisation.

  • [^]Re: ...

    Posté par Antoine () le 25/11/2007 à 19:53. (lien). Évalué à 6.

    C'est un travers courant de certains techniciens : définir un outil en décrivant comment il est constitué plutôt que sa finalité. Effectivement ça donne quelque chose qui ressemble beaucoup à de la masturbation intellectuelle (injecter du C++ dans du Java, dit l'article... heu quel intérêt ?).

    • [^]Re: ...

      Posté par papykahan () le 25/11/2007 à 20:08. (lien). Évalué à 4.

      Les applications peuvent être multiples.

      Cela peut permettre de développer son propre compilateur pour un DSL (Domain Specific Language, exemple de DSL le plus probant est le SQL). Autre exemple la documentation en HTML de codeworker est générer avec Codeworker, de même qu'une grqnde parie de codeworker est coder avec codeworker (Car il dispose aussi d'un langage de script).
      Ensuite en sortie d'un BNF tu peut avoir un AST que tu peux manipuler a loisir. Par exemple tu peux parser du C analyser l'arbre pour générer du C optimisé ;).

      • [^]Re: ...

        Posté par papykahan () le 25/11/2007 à 20:11. (lien). Évalué à 0.

        s/coder/codé/g
        s/grqnde/grande/g
        Etsans la faute sur le "peut" par peux c'est mieux désolé :s

    [^]Re: ...

    Posté par Ontologia (page perso, ) le 25/11/2007 à 20:16. (lien). Évalué à 1.

    Un peu d'imagination !

    On peut faire plein de chose, par exemple : http://www.codegeneration.net/tiki-index.php?page=InlineCode(...)
    ce qui revient à une super macro

    On peut l'utiliser pour faire de la coloration syntaxique pour toute sorte de langage que l'on veut traduire en html coloré, pour des besoins de documentations.

    On peut aussi l'utiliser pour faire de la génération de code à partir d'un langage décrivant le modèle de classe.

    On peut modifier le modèle de classe en le rafraichissant, tout en respectant le code source contenu à l'intérieur.

    Générer une grammaire BNF à partir d'une DTD.

    Générer un source pour graphviz à partir d'un source Java/C++/Python, etc...

    On peut imaginer plein d'applications avec cette outil, car son langage de script permet de gérer autant d'entrée et de sortie qu'on désir.

    • [^]Re: ...

      Posté par papykahan () le 25/11/2007 à 20:26. (lien). Évalué à 4.

      Un autre exemple les éléves de 3éme année d'Epitech on un projet majeur dans leur année, qui est de créer un compilateur d'un language orienté objet nomé KOOC, qui transforme du KOOC en C. Ils apprenent ainsi le fonctionnement interne d'un langage Objet (ex: les phases de construction/destruction des objets, le dynamic binding ou le static binding, le mangling (ok ce n'est que valable pour les langages orientés objets)).

      Enfin bon il y a que l'imagination qui peut limiter son utilitée.

      • [^]Re: ...

        Posté par Antoine () le 25/11/2007 à 20:34. (lien). Évalué à 5.

        le mangling (ok ce n'est que valable pour les langages orientés objets)

        AMHA la plupart des langages objets n'ont que faire du "mangling". Idem pour la notion de "static binding" qui est propre à C++. Bref ça commence plutôt mal pour "le fonctionnement interne d'un langage Objet"...

        • [+] [^]Re: ...

          Posté par papykahan () le 25/11/2007 à 20:41. (lien). Évalué à -2.

          Essais d'un langage parser orienter objet puis de le généré en C de faire de l'a surcharge de méthode sans mangling.

          • [^]Re: ...

            Posté par Damien (page perso, ) le 25/11/2007 à 21:14. (lien). Évalué à 2.

            La surcharge n'est pas un concept orienté objet (*), c'est une émulation boiteuse du multiple dispatch de CLOS, quand on cherche à faire du static binding (* CQFD).

            • [^]Re: ...

              Posté par papykahan () le 25/11/2007 à 21:33. (lien). Évalué à 2.

              Certe c'est plus une feature d'un langage. N'empéche qu'on leur demande cette feature :). Il y a toujours des moyens de le faire sans mangling c'est sur mais la décoration reste le plus simple.

              • [^]Re: ...

                Posté par tarlack () le 25/11/2007 à 21:38. (lien). Évalué à 2.

                pourquoi vous ne leur demandez pas de compiler directement en ASM ? nous c'est ce qu'on nous a demandé en 2A pour le projet de compil, et ca permet de voir d'autres problematiques en plus de celles données ici, sauf le mangling certes mais bon, c'est pas le plus important je pense.

            [^]Re: ...

            Posté par Antoine () le 26/11/2007 à 00:03. (lien). Évalué à 2.

            Essais d'un langage parser orienter objet puis de le généré en C de faire de l'a surcharge de méthode sans mangling.

            Vu la grammaire je ne suis pas sûr de bien comprendre la phrase, mais pas besoin de mangling pour écrire un interpréteur ou compilateur de langage objet (voir par exemple la VM de CPython). Tu voulais dire probablement faire une traduction en C de concepts objets, ce qui est évidemment une vision très particulière de la question.

            • [^]Re: ...

              Posté par papykahan () le 26/11/2007 à 00:15. (lien). Évalué à 1.

              Tu voulais dire probablement faire une traduction en C de concepts objets, ce qui est évidemment une vision très particulière de la question


              C'est exactement ce que je voulais dire désolé je me suis peut être mal exprimé et un peut trop dans la hâte.

      [^]Re: ...

      Posté par Antoine () le 25/11/2007 à 20:29. (lien). Évalué à 1.

      Sans vouloir fermer la porte à toute innovation, en général, un truc qui affirme permettre de faire tout et n'importe quoi est à peu près aussi convaincant qu'un truc qui ne fait rien. En gros, tu nous proposes une machine de Turing, chouette :-)

      • [^]Re: ...

        Posté par papykahan () le 25/11/2007 à 20:32. (lien). Évalué à 1.

        Le but reste toujours la génération bien sur.

        • [^]Re: ...

          Posté par papykahan () le 25/11/2007 à 20:34. (lien). Évalué à 1.

          Mais aussi le parsing (désolé pour le flood)

        [^]Re: ...

        Posté par Barret Michel (page perso, ) le 25/11/2007 à 20:45. (lien). Évalué à 2.

        Avec du C tu peut faire tout et n'importe quoi que ce soit un noyau, un compilatuer ou le dernier client msn.

        --
        Debian Sid