Quels sont les avantages d'utiliser les bibliothèques C ++ Boost? [fermé]

StackOverflow https://stackoverflow.com/questions/125580

  •  02-07-2019
  •  | 
  •  

Question

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

Était-ce utile?

La solution

Boost est utilisé de manière si intensive pour les raisons suivantes:

  • Il est à code source ouvert et est évalué par les pairs.
  • Il fournit une large éventail de fonctionnalités agnostiques pour les plates-formes manquées par STL.
  • Il s’agit d’un complément à STL plutôt que d’un remplaçant.
  • 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 son inclusion dans des projets open source et à sources fermées.
  • Ses fonctionnalités ne généralement pas dépendent les unes des autres. Vous ne pouvez ainsi lier que les pièces dont vous avez besoin. [ commentaire de Luc Hermitte ]

Autres conseils

À partir de la page d'accueil:

  

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

     

"Article 55: Familiarisez-vous avec Boost."   - Scott Meyers, Effective C ++, 3ème édition.

     

"La solution évidente pour la plupart des programmeurs consiste à utiliser une bibliothèque fournissant 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 vous avez besoin de:

  • 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
  • utilitaires de configuration
  • bibliothèque d'images génériques
  • TR1
  • discussions
  • uBLAS

et plus lorsque vous codez en C ++, consultez Boost .

Parce qu'ils ajoutent de nombreux éléments manquants à la bibliothèque standard, certains d'entre eux sont inclus dans la norme.

Les Boost gens ne mentent pas:

  

Pourquoi une organisation devrait-elle utiliser Boost?

     

En un mot, la productivité. Utilisation de   bibliothèques de haute qualité comme Boost   accélère le développement initial, conduit à   moins de bugs, réduit   réinvention de la roue, et des coupes   coûts de maintenance à long terme. Et depuis   Les bibliothèques Boost ont tendance à devenir   normes facto ou de jure, beaucoup   les programmeurs sont déjà familiers avec   eux.

     

Dix des bibliothèques Boost sont   inclus dans la bibliothèque standard C ++   TR1, et sont donc destinés à plus tard plein   standardisation. Plus de bibliothèques Boost   sont en préparation pour TR2. En utilisant   Boost bibliothèques donne une organisation   une longueur d'avance dans l'adoption de nouvelles   technologies.

     

De nombreuses organisations utilisent déjà des programmes   mis en œuvre avec Boost, comme Adobe   Acrobat Reader 7.0.

Quelques classes Boost sont très utiles (shared_ptr), mais je pense qu’elles ont été un peu tarées par les traits et les concepts de Boost. Les temps de compilation et les énormes tailles binaires sont complètement fous avec Boost, comme c'est le cas avec n'importe quel code de template lourd. Il doit y avoir un équilibre. Je ne sais pas si Boost l'a trouvé.

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

Selon mon expérience, de nombreux programmeurs C ++ sont en réalité les programmeurs C ++ du début des années 90, écrivant pour la plupart en classes C ++, sans beaucoup d’utilisation de génériques. L'approche plus moderne utilise des génériques pour composer des logiciels de manière plus semblable à des langages dynamiques, mais vous obtenez toujours un contrôle de type / performance à 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 choses facilement. Les pointeurs intelligents, les fonctions, les lambdas, les liaisons, etc. Il existe également des librairies boost qui exploitent cette nouvelle méthode d’écriture en C ++ pour fournir des éléments tels que la mise en réseau, les expressions régulières, etc.

si vous écrivez beaucoup de boucles for, ou d'objets de fonction qui défilent à la main, ou que vous faites de la gestion de la mémoire, vous devriez absolument vérifier l'amplification.

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

Les principales raisons d’envisager d’utiliser BOOST sont les suivantes:

  • la plupart des bibliothèques sont assez bien testées et conçues: elles sont généralement assez bien évaluées par d’excellents programmeurs, par rapport aux personnes ayant des solutions maison dans le même espace de problèmes, et suffisamment utilisées pour recueillir un retour complet dans le monde réel.
  • c'est déjà écrit et votre solution n'est probablement pas
  • c'est assez portable (mais cela varie selon les bibliothèques)
  • davantage de personnes dans la communauté C ++ auront une longueur d'avance en vous aidant avec votre code
  • BOOST est souvent un terrain d'essai pour l'introduction à 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 de correction avec l'utilisation de BOOST
  • la connaissance des bibliothèques boost vous aidera à effectuer un travail similaire sur d’autres projets, éventuellement dans d’autres sociétés, où le code que vous pourriez écrire pourrait ne pas être disponible pour une réutilisation

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

Parce que la bibliothèque standard C ++ n'est pas tout ce qui est complet .

Tout ce qui concerne Kevlin Henney doit être pris note de.

En résumé, optimisez le synopsis de ce que deviendra la norme. En plus de l’évaluation par les pairs et de l’usage que Boost vous procure, vous pouvez être certain de bénéficier d’une bonne affaire pour vos dépendances.

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

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

J'utilise un peu la bibliothèque de système de fichiers et le boost :: shared_ptr est plutôt chouette. J'entends dire qu'il fait aussi autre chose.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top