Journal Méta-lancé de rayons

Posté par (page perso) .
Tags : aucun
5
8
jan.
2010
Salut mon journal,

Je viens juste de voir sur freshmeat cette formidable application:

http://freshmeat.net/projects/metatrace

C'est un programme c++ pour effectuer du lancé de rayons, rien d'extraordinaire jusque là, mais ce qui est original c'est que la partie interessante (le lancé de rayons quoi) du programme est executée *pendant* la compilation et non pas après ! Tout ça grace à la magie des templates du c++, qui est décidement un formidable langage.

Le source est là: http://git.savannah.gnu.org/cgit/metatrace.git/tree/src

Moi je trouve que c'est la classe.
  • # Moi je trouve...

    Posté par . Évalué à 7.

    ... que ça n'a pas la classe de http://www.kevinbeason.com/smallpt/ !
    • [^] # Re: Moi je trouve...

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

      Et moi je trouve que ce code est du foutage de geule... et demande d'etre reindenter pour etre lisible, ce qui ne lui fait plus faire 100 lignes ;)

      Par contre j'adore le concept de definir une cornel box avec seulement des spheres (les murs *plans* sont aussi des spheres.
      • [^] # Re: Moi je trouve...

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

        Pareil, je m'était amuser à faire convertisseur décimal->shadocks l'autre fois, pour le fun, en 15mn chrono. Le but étant de le rendre le plus compact possible. Bah, c'est pas très lisible (196 octets):
        char*s[]={"ga ","bu ","zo ","meu "};int main(int x, char**n){
        int v=x>1?atoi(n[1]):0;char t[32];char*m=t;while(v){*m++=v&3;v>>=2;}
        while(m-t){write(1,*(s+*m),3+*--m/3);}write(1,"\n",1);return 0;}

        et voilà le résultat:
        $ ./to_shadok 08012010
        bu meu zo zo bu ga ga ga meu zo zo zo
    • [^] # Re: Moi je trouve...

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

      Oui, les templates de C++ sont turing-completes, on le sait depuis longtemps.

      En revanche, leur exemple est fun, ça change des simples calculs de nombres premiers qu'on voit souvent…
  • # Intérêt ?

    Posté par . Évalué à 2.

    Je comprend l'intérêt de la méta-programmation mais là ça sert à quoi ?

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: Intérêt ?

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

      Comme l'indique le descriptif, à rien, sauf à pousser le compilateur dans ses derniers retranchements. Ca peut faire un benchmark original pour comparer les vitesses de compilation des compilateurs c++ (et leur conso memoire) (ainsi que la confirmité au c++0x puisqu'il y a des templates variadiques dans le source)
      • [^] # Re: Intérêt ?

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

        D'ailleurs, ces templates variadiques, c'est réellement utilisé ?

        Envoyé depuis mon lapin.

        • [^] # Re: Intérêt ?

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

          C++0x n'est pas encore très répandu en pratique (car ce n'est pas encore officialisé)

          Mais en tout cas, c'est très utile.

          Ça évite, par exemple, de devoir recopier N fois le code qui dépend d'un nombre variable de paramettres, pour chaque possibilité.
  • # .

    Posté par . Évalué à 3.

    Y a mieux : un gagnant de l'ioccc a utilisé cpp pour calculer des nombre premiers.

    http://www.ioccc.org/years.html#2004_vik2

Suivre le flux des commentaires

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