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?
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.
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 ]
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 .
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.
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é.
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.
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
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.
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.
Réponses:
Boost est tellement utilisé parce que:
la source
Depuis la page d'accueil:
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:
et plus encore lorsque vous codez en C ++, jetez un œil à Boost .
la source
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:
la source
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
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.
la source
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:
Les bibliothèques sont décrites dans une ou deux lignes ici: http://www.boost.org/doc/libs/ .
la source
Parce que la bibliothèque standard C ++ n'est pas si complète .
la source
Tout ce qui concerne la participation de Kevlin Henney doit être pris en compte.
la source
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.
la source
Boost est à C ++ un peu comme .NET Framework est à C #, mais peut-être à une plus petite échelle.
la source
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.
la source