Forum Programmation.ruby compileur

Posté par .
Tags : aucun
0
29
nov.
2008
Bonjour à tous.
Est-ce que des personnes peuvent me précisez des titres de bouquins(anglais ou français) qui pourrait me permettre de créer un compileur en Ruby du genre de rubyscript2exe.
Je vous remercie.
  • # ce n'est pas du tout un compilateur

    Posté par (page perso) . Évalué à 6.

    Bonjour,

    En lisant le titre, j'étais pret à repondre avec des titres de bouquins classiques sur les compilos, genre "dragon book" et companie. Et puis cette histoire de "compilateur" Ruby m'a semblé bizarre, donc j'ai lu :
    http://www.erikveen.dds.nl/rubyscript2exe/

    D'apres ce que j'ai compris, il ne s'agit PAS DU TOUT d'un compilateur. L'auteur le précise lui meme. En fait, voila ce que fait rubyscript2exe (si j'ai bien tout pigé) :

    1) Il lance le script ruby en mode supervisé, pour determiner les dependances, librairies, autres fichiers ruby, etc.
    2) Il crée une archive comprenant le script initial, l'interpreteur Ruby, et ces dépendances.
    3) Il enrobe le tout dans un programme Pascal, EEE.Exe.

    EEE fonctionne de la maniere suivante : il extrait l'archive qui lui est attaché dans un repertoire temporaire, lance Ruby dessus, attend la terminaison puis fait le menage.
    Plus dinfos ici : http://www.erikveen.dds.nl/eee/index.html

    Donc en fait, il s'agit plutot d'un "packer", et je n'ai pas d'idée de bouquin qui traite de la question. Reste donc a lire les sites web ci-dessus, et surtout le code de ces outils.
    • [^] # Re: ce n'est pas du tout un compilateur

      Posté par . Évalué à 1.

      Salut Castorpilot, en fait ce qui me dérange avec rubyscript2exe est le dossier "eee" qui est créer et qui accumule les dossiers.
      J'aimerai pouvoir modifier rubyscript2exe pour ne plus avoir ce problème d'accumulation de dossiers, mais je ne connait pas le Pascal.
      Je recherche des livres avec lesquels je pourrait apprendre à créer soit: 1 "compileur" ou 1 "packer".
      Puisque tu me parle de "packer", quelle est la différence entre un "compileur" et un "packer"?
      Est-ce que "compileur" et "compilateur" sont la même chose?
      Merci.
      • [^] # Re: ce n'est pas du tout un compilateur

        Posté par . Évalué à 4.

        >Puisque tu me parle de "packer", quelle est la différence entre un "compileur" et un "packer"?
        Un compilateur "convertit" un code (le source) vers un autre code (généralement le langage machine mais pas forcément).
        Ruby comme python n'a que très peu d'espoirs d'être compilé un jour du fait de son typage dynamique.

        Un packer (comme rubyscript2exe, ou py2exe dont il s'est inspiré) est un programme qui englobe le script et permet de le distribuer plus facilement sur les plateformes windows.

        >Est-ce que "compileur" et "compilateur" sont la même chose?
        Les compileurs n'existent pas, c'est un affreux anglicisme.
        • [^] # Re: ce n'est pas du tout un compilateur

          Posté par (page perso) . Évalué à 2.

          Les compileurs n'existent pas
          Je pense que ce serait le nom qu'on pourrait donner à une personne qui compile des données. Par exemple Diderot avec son encyclopédie. Ou plus récent, ceux qui créent des annuaires, des dictionnaires, des listes d'entreprises, etc.

          Et le féminin de 'compilateur' ?
          - compilateuse ? (pelleteuse, berceuse)
          - compilatrice ? (excavatrice, factrice)
          Je penche pour la seconde. Une machine spécifiquement destinée à compiler des programmes pourrait s'appeler une compilatrice.
      • [^] # Re: ce n'est pas du tout un compilateur

        Posté par (page perso) . Évalué à 2.

        Bonjour,

        Tout à fait d'accord avec les réponses de Jean B.

        En l'occurrence, un compilateur de Ruby lirait le code source Ruby, et le "convertirait" en code machine, voire en assembleur. C'est ce qui se passe, par exemple, avec le C, qui est compilé.
        Un compilateur est en fait un traducteur d'un langage vers un autre langage, généralement de plus bas niveau (exemple, langage C vers language machine, ou langage Java vers bytecode). Au passage, notons que cette traduction s'accompagne souvent de nombreuses optimisations.
        Ce que fait rubyscript2exe n'est pas du tout une "traduction". Le script Ruby initial est laissé en l'état, mais il est emballé ("packé"), avec l'interpreteur Ruby et des bibliotheques, dans un executable, EEE.
        D'apres ce que j'ai compris, lorsqu'on lance le fichier exe crée par rubyscript2exe, on lance en fait EEE. EEE se rend compte qu'il est accompagné d'une archive, crée un répertoire temporaire où il la decompresse, et lance l'interpreteur Ruby contenu dans l'archive sur le script (contenu lui aussi dans l'archive).
        Il semblerait que eee ne fasse pas son travail de nettoyage des fichiers temporaires, ce qui expliquerait l'accumulation de dossiers "eee" dont tu parles.

        Je repete que je ne connais pas de livre sur les "packers" tels que rubyscript2exe. Par contre, si tu veux modifier ce programme, pourquoi ne pas apprendre Pascal (pour le coup il existe plein de bouquins sur ce langage). Sinon, un mail à l'auteur de rubyscript2exe pourrait permettre de mettre les choses au clair, et eventuellement de corriger le bug, si bug il y a.

        • [^] # Re: ce n'est pas du tout un compilateur

          Posté par . Évalué à 1.

          Je vous remercie pour vos explications.
          J'ai déjà envoyé un mail à l'auteur de rubyscript2exe sans succès.
          Par contre j'ai déjà penser à apprendre le pascal pour pouvoir le modifier, mais j'aurai préférer pouvoir créer un "packer" moi même.
          Le problème de l'accumulation de dossier est de 1: l'espace utilisé inutilement et de 2: ça génère une règle de filtrage au niveau de l'anti-virus à chaque démarrage de l'application(donc accumulation des règles de filtrage aussi).
          Si je ne trouve pas de solution, je pense que je vais apprendre le pascal pour régler ces 2 problème.
          Merci.
        • [^] # Re: ce n'est pas du tout un compilateur

          Posté par . Évalué à 2.

          Je me demande pourquoi on utilise un prog développé en PAscal pour faire ça .... Pourquoi ne pas utiliser un prog en .... ruby par exemple ....
          • [^] # Re: ce n'est pas du tout un compilateur

            Posté par (page perso) . Évalué à 2.

            L'auteur de rubyscript2exe l'explique bien. A un moment donné, il faut bien utiliser un executable en langage machine, qui se lance tout seul. Il a utilisé Pascal pour ecrire cet executable (EEE), surement par préférence personnelle. Il aurait aussi pu utiliser le langage C, par exemple.
            Le but de rubyscript2exe est de pouvoir faire tourner un script Ruby directement sur une machine où il n'y a pas d'interpreteur Ruby. Il n'est donc pas possible d'utiliser Ruby pour ecrire le packer.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.