Quali sono i vantaggi dell'utilizzo delle librerie C ++ Boost? [chiuso]


123

Quindi, ho letto e sembra che le librerie Boost vengano utilizzate molto in pratica (non nel mio negozio, però). Perchè è questo? e cosa lo rende così meraviglioso?


10
Nitpick: non è un acronimo, quindi è Boost (o boost), non BOOST. A meno che tu non stia gridando, naturalmente;)
Niklas

10
@Niklas È anche BOOST quando utilizzi una delle macro del preprocessore = P
KitsuneYMG

@KitsuneYMG Vedo che la domanda è stata comunque modificata, ma sono abbastanza sicuro che l'OP non stava utilizzando il campo della domanda per modificare il codice del preprocessore;)
Niklas

3
@Nikias, sto solo facendo il furbo = P. Un ragazzo deve avere degli hobby.
KitsuneYMG

C ++ fa schifo senza Boost :)
TriCore

Risposte:


135

Boost è usato così ampiamente perché:

  • È open source e sottoposto a revisione paritaria.
  • Fornisce un'ampia gamma di funzionalità indipendenti dalla piattaforma che STL non aveva.
  • È un complemento a STL piuttosto che un sostituto.
  • Molti degli sviluppatori Boost fanno parte del comitato standard C ++. In effetti, molte parti di Boost sono considerate incluse nella prossima libreria standard C ++.
  • È ben documentato.
  • La sua licenza consente l'inclusione in progetti open-source e closed-source.
  • Le sue caratteristiche di solito non dipendono l'una dall'altra, quindi puoi collegare solo le parti necessarie. [ Commento di Luc Hermitte ]

5
Inoltre, possiamo anche dire che le sotto-librerie boost possono essere utilizzate indipendentemente l'una dall'altra (tranne alcune librerie core). Non è perché stiamo usando boost.shared_ptr che dobbiamo usare boost.ublas, per esempio.
Luc Hermitte

Mi piace vedere risposte che sembrano voci di un'enciclopedia. Rende così facile ottenere una grande quantità di materiale. +1
Tyler Smith,

Anche se sembra che ogni biblioteca dipenda da MPL ...
Viktor Sehr

Boost consente la scrittura una volta, lo sviluppo multipiattaforma e l'uso corretto?
FilBot3

È gratuito per uso commerciale?
Mayur

39

Dalla home page:

"... uno dei progetti di libreria C ++ più apprezzati e sapientemente progettati al mondo." - Herb Sutter e Andrei Alexandrescu, standard di codifica C ++

"Articolo 55: familiarizza con Boost." - Scott Meyers, Effective C ++, 3a edizione.

"La soluzione ovvia per la maggior parte dei programmatori è utilizzare una libreria che fornisce una piattaforma elegante ed efficiente indipendente dai servizi necessari. Esempi sono BOOST ..." - Bjarne Stroustrup, Abstraction, librerie ed efficienza in C ++

Quindi, è una gamma di biblioteche ampiamente utilizzate e accettate, ma perché ne avresti bisogno?

Se hai bisogno:

  • regex
  • associazione di funzioni
  • funzioni lambda
  • unit test
  • puntatori intelligenti
  • non copiabile, opzionale
  • serializzazione
  • date generiche
  • filesystem portatile
  • respingenti circolari
  • config utils
  • libreria di immagini generiche
  • TR1
  • discussioni
  • uBLAS

e altro ancora quando codifichi in C ++, dai un'occhiata a Boost .


23

Perché aggiungono molte cose mancanti alla libreria standard, tanto che alcune di esse vengono incluse nello standard.

Le persone Boost non mentono:

Perché un'organizzazione dovrebbe utilizzare Boost?

In una parola, produttività. L'utilizzo di librerie di alta qualità come Boost accelera lo sviluppo iniziale, si traduce in un minor numero di bug, riduce la reinvenzione della ruota e riduce i costi di manutenzione a lungo termine. E poiché le librerie Boost tendono a diventare standard de facto o de jure, molti programmatori le conoscono già.

Dieci delle librerie Boost sono incluse nella TR1 della libreria standard C ++, quindi sono previste per una successiva standardizzazione completa. Altre librerie Boost sono in cantiere per TR2. L'utilizzo delle librerie Boost offre a un'organizzazione un vantaggio nell'adozione di nuove tecnologie.

Molte organizzazioni utilizzano già programmi implementati con Boost, come Adobe Acrobat Reader 7.0.


16

Alcune classi Boost sono molto utili (shared_ptr), ma penso che siano andati un po 'fuori di testa con tratti e concetti in Boost. I tempi di compilazione e le enormi dimensioni binarie sono completamente folli con Boost, come nel caso di qualsiasi codice pesante per i modelli. Deve esserci un equilibrio. Non sono sicuro che Boost l'abbia trovato.


10
Dimentichi che Boost non è una libreria ma molte. Inoltre, è necessario compensare le grandi dimensioni e il tempo di compilazione rispetto alla funzionalità. I tratti e i concetti sono di grande aiuto nello sviluppo. Il tempo di compilazione è davvero un piccolo prezzo da pagare per questo.
Konrad Rudolph

8

Aggiunge librerie che consentono un approccio più moderno alla programmazione C ++.

Nella mia esperienza molti programmatori C ++ sono in realtà i primi programmatori C ++ degli anni '90, praticamente scrivono classi C ++, non usano molto i generici. L'approccio più moderno utilizza i generici per comporre software insieme in un modo più simile ai linguaggi dinamici, ma alla fine si ottengono comunque il controllo del tipo / prestazioni. È un po 'brutto da guardare. Ma una volta superati i problemi di sintassi, è davvero molto carino. Boost ti offre molti degli strumenti necessari per comporre facilmente le cose. puntatori intelligenti, funzioni, lambda, binding, ecc. Poi ci sono librerie boost che sfruttano questo nuovo modo di scrivere C ++ per fornire cose come networking, regex, ecc ecc ...

se stai scrivendo molti cicli for, o oggetti funzione che rotolano a mano, o gestisci la memoria, allora dovresti assolutamente controllare boost.


8

BOOST è una raccolta di librerie che soddisfano esigenze comuni a molti progetti C ++. In generale, danno la priorità a correttezza, riusabilità, portabilità, prestazioni in fase di esecuzione ed efficienza dello spazio rispetto alla leggibilità del codice di implementazione BOOST, o talvolta ai tempi di compilazione. Tendono a non coprire requisiti funzionali di alto livello completi (ad es. Framework applicativi), e invece (per fortuna) offrono blocchi di costruzione che possono essere combinati più liberamente senza dettare o dominare il design dell'applicazione.

I motivi importanti per considerare l'utilizzo di BOOST includono:

  • la maggior parte delle biblioteche sono abbastanza ben testate e progettate: generalmente ottengono una recensione ragionevolmente valida da alcuni eccellenti programmatori, rispetto a persone con soluzioni casalinghe nello stesso spazio problematico, e abbastanza ampiamente utilizzate da raccogliere ampi feedback dal mondo reale
  • è già scritto e la tua soluzione probabilmente non lo è
  • è abbastanza portatile (ma varia a seconda della libreria)
  • più persone nella comunità C ++ avranno un vantaggio nell'aiutarti con il tuo codice
  • BOOST è spesso un terreno di prova per l'introduzione allo standard C ++, quindi avrai meno lavoro da fare per riscrivere il tuo codice per essere compatibile con gli standard futuri senza BOOST
  • a causa della domanda della comunità, è più probabile che i fornitori di compilatori testino e reagiscano a problemi di correttezza con l'utilizzo di BOOST
  • la familiarità con le librerie boost ti aiuterà a fare un lavoro simile su altri progetti, possibilmente in altre società, dove qualunque codice tu possa scrivere ora potrebbe non essere disponibile per il riutilizzo

Le librerie sono descritte in una o due righe qui: http://www.boost.org/doc/libs/ .




3

Potenzia fondamentalmente la sinossi di ciò che diventerà lo Standard, inoltre con tutta la revisione tra pari e l'utilizzo che Boost ottiene puoi essere abbastanza sicuro di ottenere un buon affare per le tue dipendenze.

Tuttavia, la maggior parte dei negozi non utilizza Boost, perché è una dipendenza esterna. E in realtà anche ridurre le dipendenze esterne è molto importante.


3

Boost è in C ++ un po 'come .NET Framework è in C #, ma forse su scala più piccola.


2

Uso la libreria del filesystem per chiudere un po 'e il boost :: shared_ptr è piuttosto carino. Ho sentito che fa anche altre cose.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.