2008-09-24 18 views
103

Por lo tanto, he estado leyendo y parece que las bibliotecas Boost se usan mucho en la práctica (no en mi tienda, sin embargo). ¿Por qué es esto? y lo que lo hace tan maravilloso?¿Cuáles son las ventajas de utilizar las bibliotecas de C++ Boost?

+6

Nitpick: No es un acrónimo, por lo que es Boost (o boost), no BOOST.A menos que grites, por supuesto;) – Niklas

+8

@Niklas También es INCREÍBLE cuando estás usando cualquiera de las macros del preprocesador = P – KitsuneYMG

+0

@KitsuneYMG Veo que la pregunta ha sido editada 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

Respuesta

106

Boost se utiliza tan ampliamente porque:

  • Está de código abierto y revisada.
  • Proporciona un wide range de funcionalidad de plataforma independiente 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, muchas partes de Boost se consideran incluidas en la próxima biblioteca estándar de C++.
  • Está documentado muy bien.
  • Su license permite la inclusión en proyectos de código abierto y de código cerrado.
  • Sus características no son generalmente dependiendo de la otra para que pueda vincular solo las piezas que necesita. [Comentario Luc Hermitte 's]
+3

Además, también podemos decir que las sub bibliotecas de boost se pueden usar de forma independiente (excepto algunas bibliotecas principales). No es porque estemos usando boost.shared_ptr que tenemos que usar boost.ublas, por ejemplo. –

+0

Me encantan las respuestas que parecen entradas de la enciclopedia. Hace que sea tan fácil obtener una gran cantidad de material. +1 –

+0

A través de parece que cada biblioteca depende de MPL ... –

2

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

5

Porque la biblioteca estándar de C++ no es todo eso completo.

22

Porque agregan muchas cosas faltantes a la biblioteca estándar, tanto que algunas de ellas se están incluyendo en el estándar.

Boost people no están mintiendo:

¿Por qué una organización utilización Boost?

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

Diez de las bibliotecas Boost están incluidos en el ++ de la biblioteca estándar de C TR1, y por lo tanto están programados para más tarde llena estandarización. Se están preparando más bibliotecas de Boost para TR2. El uso de Boost libraries le da a una organización una ventaja al adoptar las nuevas tecnologías .

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

2

Boost básicamente la sinopsis de lo que el estándar se convertirá, además de con toda la revisión por pares y el uso que se alza le consigue puede estar bastante seguro de su conseguir una buena oferta para sus 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.

7

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 primeros programadores de C++ de la década de 1990, casi escribieron clases de C++, no mucho uso de genéricos. El enfoque más moderno utiliza los genéricos para componer software de una manera más parecida a los lenguajes dinámicos, pero al final todavía obtiene el control/rendimiento del tipo. Es un poco feo mirarlo. Pero una vez que superas los problemas de sintaxis, es bastante agradable. Boost te brinda muchas de las herramientas que necesitas para componer cosas fácilmente. punteros inteligentes, funciones, lambdas, enlaces, etc. Luego hay bibliotecas de impulso que explotan esta nueva forma de escribir C++ para proporcionar cosas como redes, expresiones regulares, etc. etc ...

si está escribiendo muchos bucles for, o poner en marcha los objetos de la función, o hacer la gestión de la memoria, entonces definitivamente deberías verificar el impulso.

2

Boost es para C++ algo así como .NET Framework es para C#, pero quizás en una escala menor.

12

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

+9

Olvidas que Boost no es una biblioteca, sino muchas. Además, debe compensar el gran tamaño y el tiempo de compilación con la funcionalidad. Los rasgos y los conceptos son de gran ayuda en el desarrollo. El tiempo de compilación es un pequeño precio para pagarlo. –

33

Desde la página principal:

"... una de las más respetadas C y diseñado por expertos ++ proyectos de bibliotecas en el mundo." - Herb Sutter y Andrei Alexandrescu, C++ Estándares de codificación

"Artículo 55: Familiarícese con Boost." - Scott Meyers, Effective C++, 3rd Ed.

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

Por lo tanto, es una gama de bibliotecas ampliamente utilizadas y aceptadas, pero ¿por qué la necesitarías?

Si necesita:

  • expresiones regulares
  • unión de función
  • funciones lambda
  • unidad de prueba
  • punteros inteligentes
  • noncopyable, opcional
  • serialización
  • fechas genéricos
  • sistema de archivos portátil
  • buffer circular
  • utils de configuración
  • biblioteca imagen genérica
  • TR1
  • hilos
  • uBLAS

y more cuando el código en C++, echar un vistazo a Boost.

8

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

Las razones importantes a considerar el uso de BOOST incluyen:

  • mayoría de las bibliotecas están bastante bien probados y diseñados: por lo general, reciben una revisión razonablemente sólida por algunos excelentes programadores, en comparación con las personas con las soluciones de vinos locales en el mismo espacio del problema, y ​​ampliamente utilizado lo suficiente para reunir información extensa del mundo real
  • que ya está escrito y su solución probablemente no es
  • es bastante portátil (pero que varía por biblioteca)
  • personas más en la comunidad C++ tendrá una ventaja para ayudarte con tu código
  • BOOST suele ser un campo de pruebas para la introducción al estándar C++, por lo que tendrás que trabajar menos para volver a escribir el código y ser compatible con futuros estándares sans IMPULSAN
  • debido a la demanda de la comunidad, los fabricantes de compiladores son más propensos a probar y reaccionar a los problemas de la corrección con el uso BOOST
  • familiaridad con bibliotecas Boost le ayudará a hacer 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 están desc acanalado en una línea o dos aquí: http://www.boost.org/doc/libs/.

Cuestiones relacionadas