Developpez.com - Rubrique C++

Le Club des Développeurs et IT Pro

Actualité : Boost 1.37 est disponible en version Beta

Le 2008-10-23 19:24:06, par Alp, Expert éminent sénior
Bonsoir,

La nouvelle est tombée aujourd'hui : Boost 1.37 beta est sortie aujourd'hui !

Vous pouvez la télécharger ici : http://sourceforge.net/project/showf...ease_id=635320

La grosse nouveauté c'est l'apparition de Boost.Proto comme bibliothèque à part entière !

Il y a eu beaucoup de retours sur la version 1.36 ce qui a permis de corriger une certaine quantité de bugs et d'améliorer les performances.

Qui teste en premier ?

PS : Proto est vraiment bien, je l'ai déjà testée et elle est très bien faite. C'est une bibliothèque qui sert à créer des DSEL (Design Specific Embedded Language), c'est à dire des "langages" à l'intérieur de votre code C++.
  Discussion forum
13 commentaires
  • epsilon68
    Membre expérimenté
    tu peux donner des examples sur Boost.proto?
  • Alp
    Expert éminent sénior
    Le Hello World de la doc :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <iostream>
    #include <boost/proto/proto.hpp>
    #include <boost/typeof/std/ostream.hpp>
    using namespace boost;
    
    proto::terminal< std::ostream & >::type cout_ = { std::cout };
    
    template< typename Expr >
    void evaluate( Expr const & expr )
    {
        proto::default_context ctx;
        proto::eval(expr, ctx);
    }
    
    int main()
    {
        evaluate( cout_ << "hello" << ',' << " world" );
        return 0;
    }
  • epsilon68
    Membre expérimenté
    ca a l'air hyper ... complexe
    mais a quoi ca sert concretement ?
  • Alp
    Expert éminent sénior
    A faire des choses comme Boost.Spirit par exemple ?

    Sinon, les DSEL ça sert pour plusieurs choses...
    Je te conseille de lire ça :
    http://en.wikipedia.org/wiki/Domain_...cific_Language
    Le Embedded implique simplement que le tout sera directement écrit dans ton C++.
  • Klaim
    Membre expert
    Juste pour que ce soit bien clair (je n'ai pas essayé moi même, mais j'ai une idée floue du concept et l'exemple cité est pas super concret), c'est le genre de lib qui permettrait d'aider à implémenter quelque chose comme Processing en c++ (actuellement c'est du java)?
  • Alp
    Expert éminent sénior
    On dirait pas, non

    Proto permet de définir des pseudo-langages que l'on peut utiliser à l'intérieur-même de son code C++.
  • loufoque
    Expert confirmé
    Pour Processing je vois même pas pourquoi t'aurais besoin d'un DSEL, c'est juste une API.
  • Klaim
    Membre expert
    Oui justement de loin c'est ça qui me parait flou, la différence entre une api et un DSEL. D'ailleurs l'article de wikipedia l'indique aussi, mais bon je donnais Processing a titre d'exemple parceque ça pourrait être un DSEL (sauf si j'ai mal compris le concept ce qui est tout a fait probable).

    En fait peut être que ce qui me semble vraiment flou c'est plutot dans quel cas c'est plus pertinent de faire un DSEL plutot qu'une API? A priori tous les DSEL peuvent être implémentés sous forme d'api non?
  • Alp
    Expert éminent sénior
    Oui mais un DSEL permet de définir un langage, et ce à l'intérieur de C++. Une API fournit juste des classes/fonctions.
  • Klaim
    Membre expert
    Je comprends bien, mais la différence reste floue (parceque l'utilisation du language ainsi généré est quasi semblable a première vue).