Quais são as vantagens de usar as bibliotecas C ++ Boost? [fechadas]

122

Então, eu tenho lido e parece que as bibliotecas Boost se acostumaram muito na prática (embora não na minha loja). Por que é isso? e o que o torna tão maravilhoso?

jdt141
fonte
10
Nitpick: não é um acrônimo, então é Boost (ou boost), não BOOST. A menos que você está gritando é claro;)
Niklas
10
@Niklas É também aumentar quando você estiver usando qualquer uma das macros de pré-processamento = P
KitsuneYMG
@KitsuneYMG eu vejo a questão foi editado de qualquer maneira, mas eu tenho certeza que o OP não estava usando o campo pergunta para a edição de código pré-processador;)
Niklas
3
@ Nikias Estou apenas sendo um espertinho = P. Um cara tem que ter hobbies.
KitsuneYMG
C ++ é uma porcaria sem impulso :)
Tricore

Respostas:

134

O Boost é usado de maneira extensiva porque:

  • É de código aberto e revisado por pares.
  • Ele fornece uma ampla variedade de funcionalidades agnósticas da plataforma que o STL perdeu.
  • É um complemento ao STL e não um substituto.
  • Muitos dos desenvolvedores do Boost estão no comitê padrão do C ++. De fato, muitas partes do Boost são consideradas incluídas na próxima biblioteca padrão do C ++.
  • Está bem documentado.
  • Sua licença permite a inclusão em projetos de código aberto e de código fechado.
  • Seus recursos geralmente não são dependentes um do outro, para que você possa vincular apenas as partes necessárias. [ Comentário de Luc Hermitte ]
Asa negra
fonte
5
Além disso, também podemos dizer que as sub-bibliotecas de reforço podem ser usadas independentemente uma da outra (exceto algumas bibliotecas principais). Não é porque estamos usando o boost.shared_ptr que precisamos usar o boost.ublas, por exemplo.
Luc Hermitte 24/09/08
Gosto de ver respostas que parecem entradas de enciclopédia. Isso facilita a obtenção de uma grande quantidade de material. 1
Tyler Smith
Althrough parece que cada biblioteca é dependente MPL ...
Viktor Sehr
O Boost permite a gravação uma vez, o desenvolvimento e o uso entre plataformas estão corretos?
FilBot3
É gratuito para uso comercial?
Mayur
39

Na página inicial:

"... um dos projetos de bibliotecas C ++ mais conceituados e habilmente projetados do mundo." - Herb Sutter e Andrei Alexandrescu, padrões de codificação C ++

"Item 55: Familiarize-se com o Boost". - Scott Meyers, Effective C ++, 3ª Ed.

"A solução óbvia para a maioria dos programadores é usar uma biblioteca que forneça uma plataforma elegante e eficiente, independente dos serviços necessários. Exemplos são IMPULSO ..." - Bjarne Stroustrup, Abstração, bibliotecas e eficiência em C ++

Portanto, é uma variedade de bibliotecas amplamente usadas e aceitas, mas por que você precisaria?

Se você precisar:

  • regex
  • função de ligação
  • funções lambda
  • testes de unidade
  • ponteiros inteligentes
  • não copiável, opcional
  • serialização
  • datas genéricas
  • sistema de arquivos portátil
  • tampões circulares
  • utilitários de configuração
  • biblioteca de imagens genéricas
  • TR1
  • tópicos
  • uBLAS

e mais quando você codifica em C ++, dê uma olhada no Boost .

Sébastien RoccaSerra
fonte
23

Como eles adicionam muitas coisas ausentes à biblioteca padrão, muitas delas estão sendo incluídas no padrão.

Impulsionar as pessoas não estão mentindo:

Por que uma organização deve usar o Boost?

Em uma palavra, produtividade. O uso de bibliotecas de alta qualidade como o Boost acelera o desenvolvimento inicial, resulta em menos bugs, reduz a reinvenção da roda e reduz os custos de manutenção a longo prazo. E como as bibliotecas Boost tendem a se tornar padrões de fato ou de direito, muitos programadores já estão familiarizados com elas.

Dez das bibliotecas Boost estão incluídas no TR1 da Biblioteca Padrão C ++ e, portanto, estão programadas para posterior padronização completa. Mais bibliotecas Boost estão no pipeline do TR2. O uso das bibliotecas do Boost fornece à organização um avanço na adoção de novas tecnologias.

Muitas organizações já usam programas implementados com o Boost, como o Adobe Acrobat Reader 7.0.

Vinko Vrsalovic
fonte
16

Algumas classes do Boost são muito úteis (shared_ptr), mas acho que elas ficaram um pouco loucas com características e conceitos no Boost. Tempos de compilação e tamanhos binários enormes são completamente insanos com o Boost, como é o caso de qualquer código pesado de modelo. Tem que haver um equilíbrio. Não tenho certeza se o Boost encontrou.


fonte
10
Você esquece que o Boost não é uma biblioteca, mas muitas. Além disso, você precisa compensar o tamanho grande e compilar o tempo com a funcionalidade. Características e conceitos são uma grande ajuda no desenvolvimento. O tempo de compilação é realmente um preço pequeno a ser pago.
Konrad Rudolph
8

Ele adiciona bibliotecas que permitem uma abordagem mais moderna à programação C ++.

Na minha experiência, muitos programadores C ++ são realmente os programadores C ++ do início dos anos 90, praticamente escrevendo classes C ++, sem muito uso de genéricos. A abordagem mais moderna usa genéricos para compor software de maneira semelhante às linguagens dinâmicas, mas você ainda recebe verificação / desempenho de tipo no final. É um pouco feio de se ver. Mas uma vez superados os problemas de sintaxe, é realmente muito bom. O Boost oferece muitas ferramentas necessárias para você compor coisas facilmente. ponteiros inteligentes, funções, lambdas, ligações, etc. Depois, existem bibliotecas de impulso que exploram essa nova maneira de escrever C ++ para fornecer coisas como rede, regex, etc etc ...

se você estiver gravando muitos loops ou objetos de função de rolagem manual ou gerenciando a memória, você definitivamente deve verificar o aumento.

Keith Nicholas
fonte
8

O BOOST é uma coleção de necessidades de preenchimento de bibliotecas comuns a muitos projetos C ++. Geralmente, eles priorizam a correção, a reutilização, a portabilidade, o desempenho em tempo de execução e a eficiência de espaço em detrimento da legibilidade do código de implementação do BOOST ou, às vezes, dos tempos de compilação. Eles tendem a não atender aos requisitos funcionais de alto nível completos (por exemplo, estruturas de aplicativos) e, ao invés disso (felizmente), oferecem blocos de construção que podem ser combinados mais livremente sem ditar ou dominar o design do aplicativo.

Os motivos importantes a considerar usando o BOOST incluem:

  • a maioria das bibliotecas é muito bem testada e projetada: elas geralmente recebem uma revisão razoavelmente boa por alguns programadores excelentes, em comparação com pessoas com soluções caseiras no mesmo espaço de problemas e amplamente usadas o suficiente para obter amplo feedback do mundo real
  • já está escrito e sua solução provavelmente não está
  • é bem portátil (mas isso varia de acordo com a biblioteca)
  • mais pessoas na comunidade C ++ terão uma vantagem em ajudá-lo com seu código
  • O BOOST geralmente é um campo de provas para a introdução do padrão C ++, portanto você terá menos trabalho para reescrever seu código para ser compatível com os futuros padrões sem o BOOST
  • devido à demanda da comunidade, é mais provável que os fornecedores de compiladores testem e reajam a problemas de correção com o uso do BOOST
  • a familiaridade com as bibliotecas de reforço o ajudará a realizar trabalhos semelhantes em outros projetos, possivelmente em outras empresas, onde qualquer código que você possa escrever agora pode não estar disponível para reutilização

As bibliotecas são descritas em uma linha ou duas aqui: http://www.boost.org/doc/libs/ .

Tony Delroy
fonte
6

Porque a biblioteca padrão C ++ não é tão completa .

Hans Sjunnesson
fonte
4

Qualquer coisa com o envolvimento de Kevlin Henney deve ser anotada .

Virola de Umber
fonte
3

Boost basicamente a sinopse do que o Standard se tornará, além de toda a revisão por pares e o uso que o Boost faz, você pode ter certeza de que está fazendo um bom negócio por suas dependências.

No entanto, a maioria das lojas não usa o Boost, porque é uma dependência externa. E, na realidade, reduzir as dependências externas também é muito importante.

Robert Gould
fonte
3

O impulso é para C ++, como o .NET Framework é para C #, mas talvez em uma escala menor.

macbirdie
fonte
2

Eu uso a biblioteca do sistema de arquivos um pouco, e o boost :: shared_ptr é bem bacana. Ouvi dizer que faz outras coisas também.

Terry G Lorber
fonte