¿Cuáles son las ventajas de utilizar las bibliotecas de C ++ Boost? [cerrado]

123

Entonces, he estado leyendo y parece que las bibliotecas de Boost se usan mucho en la práctica (aunque no en mi tienda). ¿Por qué es esto? y que lo hace tan maravilloso?

jdt141
fuente
10
Nitpick: No es un acrónimo, por lo que es Boost (o boost), no BOOST. A menos que estés gritando, por supuesto;)
Niklas
10
@Niklas También es BOOST cuando usa cualquiera de las macros de preprocesador = P
KitsuneYMG
@KitsuneYMG Veo que la pregunta se ha editado de todos modos, pero estoy bastante seguro de que el OP no estaba usando el campo de pregunta para editar el código del preprocesador;)
Niklas
3
@Nikias Solo estoy siendo un sabelotodo = P. Un chico debe tener pasatiempos.
KitsuneYMG
C ++ es una mierda sin Boost :)
TriCore

Respuestas:

135

Boost se usa mucho porque:

  • Es de código abierto y revisado por pares.
  • Proporciona una amplia gama de funciones independientes de la plataforma que STL perdió.
  • Es un complemento de STL en lugar de un reemplazo.
  • Muchos de los desarrolladores de Boost están en el comité estándar de C ++. De hecho, se considera que muchas partes de Boost están incluidas en la próxima biblioteca estándar de C ++.
  • Está muy bien documentado.
  • Su licencia permite la inclusión en proyectos de código abierto y de código cerrado.
  • Sus características no suelen depender entre sí, por lo que puede vincular solo las partes que necesita. [ Comentario de Luc Hermitte ]
ala negro
fuente
5
Además, también podemos decir que las sub-bibliotecas de boost se pueden usar independientemente unas de otras (excepto algunas bibliotecas centrales). No es porque estemos usando boost.shared_ptr que tenemos que usar boost.ublas, por ejemplo.
Luc Hermitte
Me encanta ver respuestas que parecen entradas de una enciclopedia. Hace que sea muy fácil obtener una gran cantidad de material. +1
Tyler Smith
Aunque parece que todas las bibliotecas dependen de MPL ...
Viktor Sehr
¿Boost permite escribir una vez, desarrollo y uso multiplataforma correcto?
FilBot3
¿Es gratis para uso comercial?
Mayur
39

Desde la página de inicio:

"... uno de los proyectos de biblioteca C ++ más respetados y diseñados por expertos del mundo". - Herb Sutter y Andrei Alexandrescu, Estándares de codificación C ++

"Ítem 55: Familiarízate con Boost". - Scott Meyers, C ++ efectivo, 3.ª ed.

"La solución obvia para la mayoría de los programadores es utilizar una biblioteca que proporcione una plataforma elegante y eficiente independiente de los servicios necesarios. Algunos ejemplos son BOOST ..." - Bjarne Stroustrup, Abstraction, bibliotecas y eficiencia en C ++

Entonces, es una variedad de bibliotecas ampliamente utilizadas y aceptadas, pero ¿por qué la necesitaría?

Si necesitas:

  • regex
  • función de enlace
  • funciones lambda
  • pruebas unitarias
  • punteros inteligentes
  • no copiable, opcional
  • publicación por entregas
  • fechas genéricas
  • sistema de archivos portátil
  • tampones circulares
  • config utils
  • biblioteca de imágenes genéricas
  • TR1
  • hilos
  • uBLAS

y más cuando codifica en C ++, eche un vistazo a Boost .

Sébastien RoccaSerra
fuente
23

Debido a que agregan muchas cosas que faltan a la biblioteca estándar, algunas de ellas se incluyen en el estándar.

Impulsar a la gente no miente:

¿Por qué una organización debería utilizar Boost?

En una palabra, Productividad. El uso de bibliotecas de alta calidad como Boost acelera el desarrollo inicial, produce menos errores, reduce la reinvención de la rueda y reduce los costos de mantenimiento a largo plazo. Y dado que las bibliotecas Boost tienden a convertirse en estándares de facto o de jure, muchos programadores ya están familiarizados con ellas.

Diez de las bibliotecas Boost están incluidas en el TR1 de la biblioteca estándar de C ++, por lo que están programadas para una posterior estandarización completa. Hay más bibliotecas de Boost en proceso para TR2. El uso de bibliotecas Boost le da a una organización una ventaja en la adopción de nuevas tecnologías.

Muchas organizaciones ya utilizan programas implementados con Boost, como Adobe Acrobat Reader 7.0.

Vinko Vrsalovic
fuente
16

Algunas clases de Boost son muy útiles (shared_ptr), pero creo que se volvieron un poco locos con los rasgos y conceptos en Boost. Los tiempos de compilación y los enormes tamaños binarios son una locura con Boost, como es el caso de cualquier código con muchas plantillas. Tiene que haber un equilibrio. No estoy seguro de que Boost lo haya encontrado.


fuente
10
Olvidas que Boost no es una biblioteca, sino muchas. Además, debe compensar el tamaño grande y el tiempo de compilación con la funcionalidad. Los rasgos y conceptos son de gran ayuda en el desarrollo. El tiempo de compilación es un pequeño precio a pagar por él.
Konrad Rudolph
8

Agrega bibliotecas que permiten un enfoque más moderno de la programación en C ++.

En mi experiencia, muchos programadores de C ++ son en realidad los programadores de C ++ de principios de la década de 1990, que escriben clases de C ++, pero no usan mucho los genéricos. El enfoque más moderno usa genéricos para componer software juntos de una manera que se parece más a los lenguajes dinámicos, sin embargo, al final, aún obtiene verificación de tipo / rendimiento. Es un poco feo de ver. Pero una vez que superas los problemas de sintaxis, realmente es bastante bueno. Boost te brinda muchas de las herramientas que necesitas para componer cosas fácilmente. punteros inteligentes, funciones, lambdas, enlaces, etc. Luego están las bibliotecas boost que explotan esta nueva forma de escribir C ++ para proporcionar cosas como redes, expresiones regulares, etc., etc.

Si está escribiendo muchos bucles for, objetos de función de balanceo manual, o gestionando la memoria, definitivamente debería probar boost.

Keith Nicholas
fuente
8

BOOST es una colección de bibliotecas que satisfacen necesidades comunes a muchos proyectos de C ++. Por lo general, priorizan la corrección, la reutilización, la portabilidad, el rendimiento en tiempo de ejecución y la eficiencia del espacio sobre la legibilidad del código de implementación BOOST o, a veces, los tiempos de compilación. Tienden a no cubrir los requisitos funcionales completos de alto nivel (por ejemplo, marcos de aplicación) y en su lugar (afortunadamente) ofrecen bloques de construcción que pueden combinarse más libremente sin dictar o dominar el diseño de la aplicación.

Las razones importantes para considerar el uso de BOOST incluyen:

  • la mayoría de las bibliotecas están bastante bien probadas y diseñadas: generalmente obtienen una revisión razonablemente sólida por parte de algunos programadores excelentes, en comparación con las personas con soluciones caseras en el mismo espacio de problemas, y se usan lo suficientemente ampliamente como para recopilar una amplia retroalimentación del mundo real
  • ya está escrito y su solución probablemente no lo esté
  • es bastante portátil (pero varía según la biblioteca)
  • más personas en la comunidad de C ++ tendrán una ventaja para ayudarlo con su código
  • BOOST es a menudo un campo de pruebas para la introducción al estándar C ++, por lo que tendrá menos trabajo que hacer para reescribir su código para que sea compatible con futuros estándares sin BOOST
  • Debido a la demanda de la comunidad, es más probable que los proveedores de compiladores prueben y reaccionen a problemas de corrección con el uso de BOOST.
  • La familiaridad con las bibliotecas boost le ayudará a realizar un trabajo similar en otros proyectos, posiblemente en otras empresas, donde cualquier código que pueda escribir ahora podría no estar disponible para su reutilización.

Las bibliotecas se describen en una línea o dos aquí: http://www.boost.org/doc/libs/ .

Tony Delroy
fuente
6

Porque la biblioteca estándar de C ++ no es tan completa .

Hans Sjunnesson
fuente
4

Se debe tomar nota de todo lo relacionado con la participación de Kevlin Henney .

Virola Umber
fuente
3

Básicamente, impulsa la sinopsis de lo que se convertirá el Estándar, además de toda la revisión y el uso de pares que Boost obtiene, puedes estar bastante seguro de que obtendrás una buena oferta por tus dependencias.

Sin embargo, la mayoría de las tiendas no usan Boost porque es una dependencia externa. Y en realidad, reducir las dependencias externas también es muy importante.

Robert Gould
fuente
3

Boost es para C ++ algo así como .NET Framework es para C #, pero tal vez en una escala más pequeña.

macbirdie
fuente
2

Utilizo la biblioteca del sistema de archivos para cerrar un poco, y el boost :: shared_ptr es bastante ingenioso. Escuché que también hace otras cosas.

Terry G Lorber
fuente