CV Benoit Neil ![]() ![]() ![]() |
"C'est vraiment bien, boost ? Ça vaut le coup ?". Puisque l'on m'a posé la question, j'en profite pour expliquer pourquoi, en complément à ce que dit le site de boost...
Boost n'est pas une bibliothèque, mais un ensemble de bibliothèques C++ hétérogènes et n'ayant pas forcément de rapport entre elles. Certaines sont indispensables et utiles à tout programme, d'autres très spécifiques.
Boost cherche généralement à combler ce qui manque en C++ "natif". J'entends par là que les bibliothèques sont destinées à être des briques de base pour les programmes C++.
Car le principal problème de ce langage est aussi l'une de ses qualités : il n'appartient à personne ; c'est un standard ISO fait par de nombreuses entreprises et individus. Du coup il n'existe pas de "grosse bibliothèque standard" comme le sont le Java SDK (ou 'JDK', détenu par Oracle) ou le .NET pour C# (détenu par Microsoft) ou sa "copie open source" Mono.
C'est la STL (Standard Template Library) qui est la "bibliothèque standard" en C++. Mais elle n'est pas aussi fournie que l'équivalent des langages Java/C#, notamment parce que la STL n'est qu'une spécification et non une implémentation (chaque fournisseur fabrique sa propre STL s'il le souhaite). Et il est beaucoup plus facile de produire un logiciel avec une entreprise unique (comme pour le JDK et le .NET) que lorsqu'il faut se coordonner à plusieurs. Et si la STL est en standard avec les compilateurs C++, boost ne l'est pas.
Il faut généralement apprendre à maitriser la STL en premier car elle offre de nombreux concepts, conteneurs et algorithmes qui sont repris par boost. La plupart des utilisateurs et développeurs de boost partent du principe que l'on connait assez bien la STL...
Les raisons de choisir boost sont nombreuses :
.hpp
, ici). C'est un avantage car c'est très simple à utiliser.Les bibliothèques boost sont tellement bien faites qu'elles ont servi (et serviront encore) de base aux versions du C++ et de la STL (le C++ étant un langage vivant et qui évolue, contrairement à ce que certains pensent) ! En clair : boost est le précurseur des nouveaux standards C++. C'est un complément indispensable à la STL.
L'utilité des bibliothèques boost s'impose comme une évidence à toute personne qui s'en sert. C'est un net gain de productivité. Elles permettent d'écrire de meilleurs programmes avec moins de code. Et statistiquement, moins il y a de code, moins il y a de bugs !
Oui, il y a des inconvénients à utiliser boost. Mais ils ne pèsent pas lourd dans la balance lorsqu'il s'agit de décider d'utiliser ces bilbiothèques :
Pouvez-vous facilement, sans boost...
BOOST_FOREACH(int v, myIntVector) cout << v << endl;
boost::lexical_cast<int>(myString)
(boost.lexical_cast)boost::algorithm::to_upper(myString)
(boost.string_algo)boost::format("Il y a %1% objets visibles et %2% cachés dans '%3%'.") % nbVisible % nbHidden % name
(boost.format)int[30]
) mais qui lance une exception quand on déborde du tableau ? boost::array<int, 30>
(boost.array)Alors certes vous pouvez trouver certaines de ces fonctions dans le C++2011, dans d'autres bibliothèques, ou sous d'autres formes, mais je vous assure qu'à l'usage, c'est boost que l'on préfère !
Bref, si vous comptez coder quelque chose "que quelqu'un sur Terre a sûrement déjà codé" :
Attention, cependant ! Comme vu plus haut, la maitrise de la STL et de boost requiert du temps et de l'expérience ! Ce sont des outils formidables, mais complexes. Ne soyez pas rebutés par tant de choses à apprendre : vous ne pourrez pas tout maitriser d'un coup.
Une question ? Une remarque ? Une correction à apporter ? N'hésitez pas à me contacter.
Sukender
2013-06-19