doublons possibles strong>
est là une raison de ne pas utiliser Boost?
Quels sont les avantages de l'utilisation des bibliothèques C ++ Boost? < / a> p> blockQuote>OK, la question de haut niveau est ", veuillez me fournir ce que vous considérez comme les arguments les plus efficaces de la question de savoir pourquoi l'ensemble de la BOOST, ou de certaines parties spécifiques de celui-ci, doit être compilé sur le système de notre société et approuvé dans des normes de génie logiciel ". p>
Détails de ce dont j'ai besoin: p>
accepterait volontiers les deux arguments positifs (pourquoi installer), ainsi que les réfutations proposées de contre-arguments probables que je pouvais entendre (voir le contexte de la question ci-dessous). P> LI>
Les arguments doivent être fabriqués à la fois pour les membres de l'équipe technique d'ingénierie de logiciels et / ou
très forts> Technical Senior Managers - en d'autres termes, pour ce dernier, les détails de l'argument peuvent / devraient être Technique, mais la poussée de l'argument devrait être "Comment cela créerait-il / sauver la société X Money vs perdant l'argent de l'argent comme un coût de l'ajout à notre outils". P> LI> ul> Contexte de la question: p>
Je suis un développeur dans une entreprise de plusieurs centaines de développeurs, de nombreuses doses dont C ++. p> li>
J'ai eu la fortune (MIS) d'être réaffectée de mon lieu de développement de Perl bien-aimé à une équipe où je fais aussi du développement C ++. Jusqu'à présent, j'ai trouvé de nombreuses choses que je pouvais facilement faire en Perl qui sont très difficiles / encombrantes à faire en C ++ (foreach boucle à titre d'exemple) et à tout moment, je me suis frappé l'un d'entre eux, la réponse 50% finit probablement à être "vous ne peut pas faire cela en standard C ++, mais vous pouvez le faire avec boost " p> li>
Notre boîte à outils comprend certaines bibliothèques de Rogewave Legacy et un nombre très limité de bibliothèques de boost (par exemple aucune regex, pas de foreach), de très ancien vintage. p> li>
Tout développement doit utiliser des bibliothèques compilées et vérifiées par l'équipe d'ingénierie logicielle. C'est une règle dure et rapide. p> li>
équipe SE est quelque peu résistante à l'ajout de nouvelles bibliothèques, pour une variété de raisons (par exemple, pour le faire; conflit de fonctionnalité avec Rogewave, par exemple pour l'installation et l'utilisation de tout nouveau logiciel; Coût de la Éduquer les développeurs, etc ...). Ils ajouteront les bibliothèques si elles sont présentées avec un besoin d'entreprise suffisante ou un argument de rapport coût / avantage convaincant de manière majeure convaincante, mais ils ont un seuil assez difficile. P> LI> ul>
Donc, je cherche des exemples de quelles parties de boost sont si merveilleuses (avec des estimations exactes sur les coûts / avantages) qui les installeraient de manière évidente en vaut la peine d'être effort de génie logiciel. P>
Merci d'avance pour toutes les idées / suggestions / exemples. P>
S'il vous plaît ne marquez pas cette question aussi subjective que je cherche des réponses mesurables, pas simplement des sentiments merveilleux :) p>
6 Réponses :
Voici un article légèrement oldish 2005 sur le Dr Dobbs discutant du prochain standard C ++ 0X. P>
+1 - Sauf que tout Boost n'est pas incorporé dans la norme NEXT C ++, mais elle est certainement une influence significative sur la nouvelle norme.
Le dernier point n'est-il pas un point contre i> boost? Pourquoi devraient-ils passer à travers tous les documents d'ajout d'une nouvelle bibliothèque, si cela sera disponible dans le cadre de la norme dans quelques années?
@JAlf, s'ils doivent passer par tous ces documents pour ajouter une bibliothèque, imaginez combien de travail qu'il devra faire pour être autorisé à mettre à niveau leur langue sur C ++ 0x (chaque fois que cela sort)
@glen - Amen. Tout le problème n'est pas qu'elles soient contraignantes, mais elles ont besoin d'une analyse coûts / avantages pour tout travail et changement et perturbations.
@ROBERT - Bien que ce soit tous des points corrects et corrects, aucun d'entre eux ne fournit l'analyse coûts / avantages réelle qui serait requise pour l'équipe d'ingénierie logicielle. J'ai besoin spécifique de "Cette fonctionnalité prend 3 fois la quantité d'heures à maintenir sur le code local vs. Boost" "," Cette fonctionnalité est impossible à écrire sans être Jon Skeet, mais est à Boost et peut vous enregistrer 3 heures de device de développement pour 10000 lignes de code "Type d'arguments.
J'ai dû maintenir un composant en utilisant ce vieux vintage outils.H ++ de RogueWave, sur un système Solaris. P>
sur Solaris, si nous voulons utiliser Boost, nous devons utiliser SCC ou Sunstudio avec la mise en œuvre de STLORT de la norme (au lieu de RogueWave One). Et comme outils.H ++ exige l'ancienne mise en œuvre pré-standard de la norme RogueWave de la norme - sur Solaris -, je devais renoncer à Boost. p>
En fin de compte, j'ai réécrit une version simplifiée de quelques fonctionnalités ressemblant à des bottes dont j'avais besoin. P>
Si vous êtes dans la même situation (*), vous ne seriez pas en mesure de passer de la bibliothèque RogueWave pour booster facilement. Il existe un coût non négligeable dans cette opération, comme pour les conteneurs de pointeur d'instance des deux bibliothèques ont des interfaces assez différentes. P>
(*) Où nous ne pouvons pas changer lentement des bits par des bits de l'ancien code pour utiliser progressivement. Dans cette situation, la migration doit être radicale et changer simultanément chaque occurrence d'outils.H ++ par quelque chose de plus à la mode, voire mieux. P>
NB: La plupart des gens sont capables d'utiliser progressivement une augmentation des anciens projets et risquent de manquer un point très important, et oui, point. D'où mon négatif em> réponse. P>
Partout où j'ai travaillé au cours de la dernière décennie, lorsqu'ils avaient leur propre classe de pointeur intelligent, j'ai trouvé des bugs dans cela - généralement dans quelques semaines. Et non, je ne suis jamais allé et je l'ai regardé dans l'espoir de trouver des erreurs. p>
J'ai eu l'habitude de poster la citation suivante à partir du Proposition de pointeur intelligent TR1 : p>
Les développeurs de boost ont trouvé un pointeur intelligent de propriété partagée extrêmement difficile à mettre en œuvre correctement. D'autres ont fait la même observation. Par exemple, Scott Meyers [Meyers01] dit: P>
"La STL elle-même ne contient aucun pointeur intelligent de comptage de référence et en écrivant un bon - un qui fonctionne correctement tout le temps - est assez délicat de ne pas vouloir le faire à moins que vous n'ayez pas obligé de le faire. J'ai publié le code Pour un pointeur intelligent de comptage de référence plus efficace C ++ en 1996, et malgré la mise en œuvre de la mise en œuvre du pointeur intelligent et la soumission à une révision de la publication approfondie par des développeurs expérimentés, un petit défilé de rapports de bugs valides a plongé pendant des années. le Nombre de méthodes subtiles dans lesquelles le comptage de référence-comptage des pointeurs intelligents peut échouer est remarquable. " P> blockQuote> blockQuote>
Cela plus une analyse détaillée du ou des bugs que j'ai trouvée m'a généralement eu le travail d'intégration de la Boost Libs dans la base de code.
:) code> p>
Boost est un excellent outil et une partie inestimable de notre développement de produits (nous serions perdus sans Smart_PTR) ... mais parce que cela change si vite, la stabilité des versions peut être effectuée. P>
Par exemple, nous introduisons joyeusement de nouvelles versions de Boost dès leur sortie sans réfléchir deux fois. C'est jusqu'à ce que nous soyons piqué avec un bogue dans la bibliothèque de threading de 1,35 qui produisait une occasionale (c'est-à-dire difficile à déboguer) mais des erreurs critiques. Heureusement, nous avons identifié la question avant tout ce qui a été publié au public et pourrait revenir à 1,34. P>
Depuis lors, nous avons pris une version spécifique, la testée de manière approfondie et non mise à jour sans une raison impérieuse de le faire. p>
Ouais. C'est ce que je suis contre - le (tout à fait correct pour notre entreprise) ne le répare pas si ce n'est pas enfreint la philosophie de développement. Ce qui est idéal pour développer un code stable, mais nécessite des doubles efforts pour introduire quelque chose de nouveau et d'excitant lorsque cette nouvelle chose en vaut la peine.
Il me semble que vous faites ce mauvais chemin. Étant donné que des propositions pour ajouter de nouvelles bibliothèques vont être rencontrées avec beaucoup de résistance, ne vous inquiétez même pas d'essayer de se disputer pour booster dans son ensemble em>. Choisissez vos batailles à la place. P>
Recherchez les bibliothèques de boost spécifiques qui vous em> savent (avec votre connaissance de l'application à utiliser) seront utiles et économisez du temps et de l'argent. Puis proposer d'ajouter ceux-ci. P>
Je pourrais facilement énumérer les Boost Libs que j'ai trouvé utile et pourquoi je pense qu'ils sont super, mais je ne sais pas s'ils seront tout em> utiliser dans votre application. p>
pousser pour que les bibliothèques individuelles de boost soient incluses, puis peut-être, au fil du temps, beaucoup d'entre elles seront incluses que ce sera plus simple pour que tout le monde incluait tout seul boost. P>
Ce serait le chemin probable que j'aurais besoin de prendre. Le problème est que, tandis que la quantité de plaidoyer nécessaire à une bibliothèque de boost spécifique est inférieure à l'ensemble du shebang, il doit toujours être aussi convaincant et détaillé sur le coût des coûts / avantages. Et je n'ai pas assez d'expérience C ++ pour que ces arguments moi-même (je suis 95% de Perl gars ces jours-ci-sage)
Assez juste, mais le problème est que le reste d'entre nous ne savait pas vraiment quelles bibliothèques de boost pertinentes dans votre demande. La plupart des gens trouvent les pointeurs intelligents très précieux et j'ai tendance à utiliser beaucoup de types_Traits, mais après cela, il est vraiment spécifique au domaine que les bibliothèques sont pertinentes.
Voici deux suggestions pour préconiser Boost: P>
qui utilise Boost? strong> ( http: //www.boost .org / users / utilise.html ) p>
Beaucoup de projets majeurs utilisent Boost: (par exemple, Adobe Photoshop, CERN) P>
Combien cela coûterait-il à embaucher une équipe d'écrire un boost à partir de zéro? Il y a une calculatrice tifty (un peu gadinging) qui aide à la mettre en perspective. p>