web-dev-qa-db-fra.com

Quels sont les avantages de l'utilisation des bibliothèques C ++ Boost?

Donc, j'ai lu et il semble que les bibliothèques Boost soient beaucoup utilisées dans la pratique (pas dans ma boutique, cependant). Pourquoi est-ce? et qu'est-ce qui le rend si merveilleux?

116
jdt141

Boost est très utilisé car:

  • Il est open source et évalué par les pairs.
  • Il fournit un large éventail de fonctionnalités indépendantes de la plate-forme manquées par STL.
  • C'est un complément à STL plutôt qu'un remplacement.
  • De nombreux développeurs Boost font partie du comité standard C++. En fait, de nombreuses parties de Boost sont considérées comme incluses dans la prochaine bibliothèque standard C++.
  • C'est bien documenté.
  • Sa licence permet l'inclusion dans des projets open-source et open-source.
  • Ses fonctionnalités ne sont pas généralement dépendantes les unes des autres, vous ne pouvez donc lier que les pièces dont vous avez besoin. [ Luc Hermitte commentaire de]
125
blackwing

Depuis la page d'accueil:

"... l'un des projets de bibliothèque C++ les plus appréciés et les mieux conçus au monde." - Herb Sutter et Andrei Alexandrescu, Normes de codage C++

"Article 55: Familiarisez-vous avec Boost." - Scott Meyers, Effective C++, 3e éd.

"La solution évidente pour la plupart des programmeurs est d'utiliser une bibliothèque qui fournit une plate-forme élégante et efficace indépendante des services nécessaires. Les exemples sont BOOST ..." - Bjarne Stroustrup, Abstraction, bibliothèques et efficacité en C++

Il s'agit donc d'une gamme de bibliothèques largement utilisées et acceptées, mais pourquoi en auriez-vous besoin?

Si tu as besoin:

  • regex
  • liaison de fonction
  • fonctions lambda
  • tests unitaires
  • pointeurs intelligents
  • non copiable, facultatif
  • sérialisation
  • dates génériques
  • système de fichiers portable
  • tampons circulaires
  • config utils
  • bibliothèque d'images génériques
  • TR1
  • fils
  • uBLAS

et plus lorsque vous codez en C++, jetez un œil à Boost .

37

Parce qu'ils ajoutent beaucoup de choses manquantes à la bibliothèque standard, à tel point que certains d'entre eux sont inclus dans la norme.

Boost people ne mentent pas:

Pourquoi une organisation devrait-elle utiliser Boost?

En un mot, la productivité. L'utilisation de bibliothèques de haute qualité comme Boost accélère le développement initial, réduit le nombre de bogues, réduit la réinvention de la roue et réduit les coûts de maintenance à long terme. Et comme les bibliothèques Boost ont tendance à devenir des normes de facto ou de jure, de nombreux programmeurs les connaissent déjà.

Dix des bibliothèques Boost sont incluses dans le TR1 de la bibliothèque standard C++ et sont donc prévues pour une normalisation complète ultérieure. D'autres bibliothèques Boost sont en préparation pour TR2. L'utilisation des bibliothèques Boost donne à une entreprise une longueur d'avance dans l'adoption de nouvelles technologies.

De nombreuses organisations utilisent déjà des programmes implémentés avec Boost, comme Adobe Acrobat Reader 7.0.

23
Vinko Vrsalovic

Quelques classes Boost sont très utiles (shared_ptr), mais je pense qu'elles sont devenues un peu folles avec des traits et des concepts dans Boost. Les temps de compilation et les énormes tailles binaires sont complètement fous avec Boost, comme c'est le cas avec tout code lourd de modèles. Il doit y avoir un équilibre. Je ne sais pas si Boost l'a trouvé.

14
jeramiah

Il ajoute des bibliothèques qui permettent une approche plus moderne de la programmation C++.

D'après mon expérience, de nombreux programmeurs C++ sont en fait des programmeurs C++ du début des années 1990, écrivant à peu près des classes C++, pas beaucoup d'utilisation de génériques. L'approche la plus moderne utilise des génériques pour composer des logiciels ensemble d'une manière qui ressemble plus à des langages dynamiques, mais vous obtenez toujours une vérification de type/des performances à la fin. C'est un peu moche à regarder. Mais une fois que vous avez surmonté les problèmes de syntaxe, c'est vraiment très agréable. Boost vous donne beaucoup d'outils dont vous avez besoin pour composer des trucs facilement. pointeurs intelligents, fonctions, lambdas, liaisons, etc. Ensuite, il y a des bibliothèques de boost qui exploitent cette nouvelle façon d'écrire en C++ pour fournir des choses comme la mise en réseau, l'expression régulière, etc etc ...

si vous écrivez beaucoup de boucles for, ou des objets de fonction de roulement à la main, ou si vous faites de la gestion de la mémoire, alors vous devriez certainement vérifier boost out.

8
Keith Nicholas

BOOST est une collection de bibliothèques répondant aux besoins communs à de nombreux projets C++. Généralement, ils priorisent l'exactitude, la réutilisabilité, la portabilité, les performances d'exécution et l'efficacité de l'espace par rapport à la lisibilité du code d'implémentation BOOST, ou parfois des temps de compilation. Ils ont tendance à ne pas couvrir les exigences fonctionnelles complètes de haut niveau (par exemple, les cadres d'application) et proposent plutôt (heureusement) des blocs de construction qui peuvent être combinés plus librement sans dicter ou dominer la conception de l'application.

Les raisons importantes d'envisager l'utilisation de BOOST comprennent:

  • la plupart des bibliothèques sont assez bien testées et conçues: elles obtiennent généralement un examen raisonnablement solide par d'excellents programmeurs, par rapport à des personnes ayant des solutions de brassage maison dans le même espace de problème, et largement utilisées suffisamment pour recueillir des commentaires détaillés dans le monde réel
  • il est déjà écrit et votre solution n'est probablement pas
  • c'est assez portable (mais cela varie selon la bibliothèque)
  • plus de personnes dans la communauté C++ auront une longueur d'avance pour vous aider avec votre code
  • BOOST est souvent un terrain d'essai pour l'introduction de la norme C++, vous aurez donc moins de travail à faire pour réécrire votre code afin qu'il soit compatible avec les futures normes sans BOOST
  • en raison de la demande de la communauté, les fournisseurs de compilateurs sont plus susceptibles de tester et de réagir aux problèmes d'exactitude avec l'utilisation de BOOST
  • la familiarité avec les bibliothèques boost vous aidera à effectuer un travail similaire sur d'autres projets, éventuellement dans d'autres entreprises, où le code que vous pourriez écrire maintenant pourrait ne pas être réutilisable

Les bibliothèques sont décrites en une ou deux lignes ici: http://www.boost.org/doc/libs/ .

8
Tony Delroy

Parce que la bibliothèque standard C++ n'est pas du tout complète.

6
Hans Sjunnesson

Tout ce qui avec Kevlin Henney doit être pris en compte.

5
Umber Ferrule

Boost est en C++ un peu comme .NET Framework est en C #, mais peut-être à une plus petite échelle.

3
macbirdie

Boost fondamentalement le synopsis de ce que la norme deviendra, en plus de tous les examens par les pairs et l'utilisation que Boost obtient, vous pouvez être sûr que vous obtenez un bon prix pour vos dépendances.

Cependant, la plupart des magasins n'utilisent pas Boost, car c'est une dépendance externe. Et en réalité, la réduction des dépendances externes est également très importante.

3
Robert Gould

J'utilise un peu la bibliothèque du système de fichiers et le boost :: shared_ptr est assez astucieux. J'ai entendu dire qu'il faisait aussi autre chose.

2
Terry G Lorber