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

123

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?

jdt141
la source
10
Nitpick: Ce n'est pas un acronyme, donc c'est Boost (ou boost), pas BOOST. Sauf si vous criez bien sûr;)
Niklas
10
@Niklas C'est aussi BOOST lorsque vous utilisez l'une des macros de préprocesseur = P
KitsuneYMG
@KitsuneYMG Je vois que la question a quand même été modifiée, mais je suis presque sûr que l'OP n'utilisait pas le champ de question pour éditer le code du préprocesseur;)
Niklas
3
@Nikias Je suis juste un âne intelligent = P. Un gars doit avoir des passe-temps.
KitsuneYMG
C ++ est de la merde sans Boost :)
TriCore

Réponses:

135

Boost est tellement utilisé parce que:

  • Il est open-source et évalué par des pairs.
  • Il fournit une large gamme de fonctionnalités indépendantes de la plate-forme que STL a manquées.
  • C'est un complément à la STL plutôt qu'un remplacement.
  • De nombreux développeurs Boost font partie du comité des standards 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 dépendent généralement pas les unes des autres, vous ne pouvez donc lier que les pièces dont vous avez besoin. [ Commentaire de Luc Hermitte ]
aile noire
la source
5
De plus, nous pouvons également dire que les sous-bibliothèques boost peuvent être utilisées indépendamment les unes des autres (à l'exception de quelques bibliothèques principales). Ce n'est pas parce que nous utilisons boost.shared_ptr que nous devons utiliser boost.ublas, par exemple.
Luc Hermitte
J'adore voir des réponses qui ressemblent à des entrées d'encyclopédie. Il est si facile d'obtenir une grande quantité de matériau. +1
Tyler Smith
Bien qu'il semble que chaque bibliothèque soit dépendante de MPL ...
Viktor Sehr
Boost permet d'écrire une fois, le développement multiplateforme et l'utilisation correcte?
FilBot3
Est-ce gratuit pour un usage commercial?
Mayur
39

Depuis la page d'accueil:

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

"Point 55: Familiarisez-vous avec Boost." - Scott Meyers, C ++ efficace, 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. Des 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
  • utils de configuration
  • bibliothèque d'images génériques
  • TR1
  • fils
  • uBLAS

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

Sébastien RoccaSerra
la source
23

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

Les gens Boost 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, entraîne moins 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 standards de facto ou de jure, de nombreux programmeurs les connaissent déjà.

Dix des bibliothèques Boost sont incluses dans 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 organisation 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.

Vinko Vrsalovic
la source
16

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


la source
10
Vous oubliez que Boost n'est pas une bibliothèque mais plusieurs. En outre, vous devez compenser la grande taille et le temps de compilation par rapport à la fonctionnalité. Les traits et les concepts sont d'une grande aide dans le développement. Le temps de compilation est en effet un petit prix à payer.
Konrad Rudolph le
8

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 réalité des programmeurs C ++ du début des années 1990, écrivant à peu près des classes C ++, peu utilisant des génériques. L'approche 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 de nombreux outils dont vous avez besoin pour composer facilement des choses. pointeurs intelligents, fonctions, lambdas, liaisons, etc.

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

Keith Nicholas
la source
8

BOOST est une collection de bibliothèques répondant aux besoins communs à de nombreux projets C ++. En règle générale, ils donnent la priorité à l'exactitude, la réutilisabilité, la portabilité, les performances d'exécution et l'efficacité de l'espace plutôt que la lisibilité du code d'implémentation BOOST, ou parfois les temps de compilation. Ils ont tendance à ne pas couvrir les exigences fonctionnelles de haut niveau complètes (par exemple, les cadres d'application), et offrent 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 d'utiliser BOOST sont les suivantes:

  • la plupart des bibliothèques sont assez bien testées et conçues: elles obtiennent généralement une critique raisonnablement solide de la part d'excellents programmeurs, par rapport à des personnes ayant des solutions de brassage maison dans le même espace de problème, et suffisamment largement utilisées pour recueillir de nombreux commentaires dans le monde réel
  • il est déjà écrit et votre solution ne l'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 au standard C ++, vous aurez donc moins de travail à faire pour réécrire votre code pour qu'il soit compatible avec les futurs standards 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 à faire un travail similaire sur d'autres projets, éventuellement dans d'autres entreprises, où le code que vous pourriez écrire maintenant pourrait ne pas être disponible pour une réutilisation

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

Tony Delroy
la source
6

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

Hans Sjunnesson
la source
4

Tout ce qui concerne la participation de Kevlin Henney doit être pris en compte.

Virole d'ombre
la source
3

Boostez essentiellement le synopsis de ce que deviendra le Standard, en plus de tous les examens par les pairs et de l'utilisation que Boost obtient, vous pouvez être à peu près sûr de faire une bonne affaire pour vos dépendances.

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

Robert Gould
la source
3

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

macbirdie
la source
2

J'utilise la bibliothèque du système de fichiers quit un peu, et le boost :: shared_ptr est assez astucieux. J'entends qu'il fait aussi d'autres choses.

Terry G Lorber
la source