2011-01-13 12 views
35

Duplicar posible:
Boost Library¿Usar bibliotecas de impulso C++?

A menudo, cuando estaba intentando (y fallando) un proyecto me encuentro con Boost al explorar la Web C++. Intenté leer el sitio web de Boost, pero no había una buena descripción breve de por qué usar Boost y qué es exactamente.

Una de las cosas que me gusta mucho de Python es que todo está integrado y multiplataforma, solicitudes web, correo electrónico, XML, JSON, etc. ¿Es este también el caso de Boost?

Así pues, suficiente diatriba, mis respuestas concretas, capaces preguntas:

  • ¿Qué es exactamente impulso?
  • ¿Cuáles son los motivos más importantes para usar Boost?
  • ¿Es completamente multiplataforma?
  • ¿Es más "seguro" que el código habitual de elaboración casera donde rápidamente pasa por alto ese desbordamiento de búfer, etc.?
  • ¿Hay algún enlace a una página que describa todos los módulos de Boost en una o dos frases?
+0

Consulte también http://stackoverflow.com/q/125580/50079. – Jon

+7

Para responder a la pregunta de que nadie está respondiendo, las bibliotecas de refuerzo no hacen el mismo tipo de detalles prácticos que las bibliotecas de Python. Sin XML, sin JSON, sin correo electrónico, sin manejo de HTTP. Las bibliotecas de impulso son más abstractas y tienen un nivel más bajo que eso. Todavía increíblemente útil para todo eso, pero un tipo diferente de utilidad. – Omnifarious

+0

@Omnifarious: Gracias, esa fue una de las partes más importantes de mi pregunta. – orlp

Respuesta

43

¿Qué es exactamente Boost?

Boost es una colección de bibliotecas útiles y de muy alta calidad para C++ que complementan la biblioteca estándar más bien pequeña.

¿Cuáles son los motivos más importantes para usar Boost?

Boost ofrece herramientas de alta calidad que faltan en C++. Aunque su uso es extremadamente variado, si Boost es para usted depende completamente de sus necesidades. Pero puedo decir con seguridad que cada base de código C++ suficientemente grande se beneficiaría del uso de Boost.

Algunas de las piezas más versátiles son los shared_ptr (un puntero inteligente de conteo de referencias que ayuda a prevenir las fugas de memoria en código puntero ricos), array que proporciona un envoltorio muy conveniente alrededor de matrices de tipo C de tamaño fijo y otra pequeña bits impares que se han integrado en el próximo estándar de C++.

¿Es completamente multiplataforma?

Casi siempre sí. Esta es una de las principales cualidades de Boost.

¿Hay algún enlace a una página que describa todos los módulos de Boost en una o dos oraciones?

There is indeed.

+5

Simplemente usando 'boost :: shared_ptr' o' boost :: scoped_ptr' en tu código y nunca escribir 'delete' es una buena razón para usar boost. –

3

Boost es una colección de clases y otras cosas para C++ que faltan en el STL. Muchas de las bibliotecas en Boost están siendo incluidas en el nuevo estándar de C++. Definitivamente es mucho más seguro que lo que podrías inventar ya que este código es ampliamente utilizado y revisado por pares. Generalmente es multiplataforma, pero puede haber algunos errores.

En cuanto a lo que está en alza, echa un vistazo a esto: http://www.boost.org/doc/libs/1_45_0/?view=categorized

2

Cualquier cosa que boost page en la wikipedia no responde?

+0

Para mí, el objetivo de Stack Overflow no es solo contestar preguntas. También es una cuestión de recopilar y compartir conocimiento. En mi opinión, este tipo de respuesta no proporciona ningún valor a la comunidad. – auserdude

+0

@auserdude ¡De acuerdo! Publicar en otra página web sin explicar el conocimiento empapado no debe permitirse en SO. –

9

¿Qué es exactamente Boost?

Boost es una colección de librerías C++ que lo ayudan a evitar escribir código personalizado para resolver problemas comunes.

¿Cuáles son las razones más importantes para usar Boost?

Boost le ahorra tener que diseñar, implementar y probar las soluciones que ofrece. Esto le ahorrará una gran cantidad de tiempo y le ayudará a evitar errores en el camino.

¿Es completamente multiplataforma?

Boost admite muchas plataformas, a veces soluciones de catering para ser eficientes en plataformas particulares. Puede ver las plataformas en las que se ha probado, cerca de la parte inferior de la versión actual page bajo el encabezado Compiladores probados.

¿Es más "seguro" el código normal de elaboración casera en el que rápidamente pasa por alto que uno desbordamiento de búfer, etc.?

Sí, a menos que tenga mucho tiempo para probar su código. Boost incluye un conjunto de pruebas automatizadas y es probado por cientos de miles, sino millones, de desarrolladores a través del uso diario. También tiene mucha documentación que lo ayuda a desarrollar con las bibliotecas que incluye. Boost no solo es más seguro que la mayoría de los códigos elaborados en casa, también es, en general, más eficiente.

¿Hay algún enlace a una página que describa todos los módulos de Boost en una o dos oraciones?

La página de enlaces Boost Library Documentation ofrece un resumen de una oración de todas las bibliotecas de Boost.

9

1) Boost es un conjunto de API, desarrollado por algunas de las mejores mentes en C++. Puedes usar tanto o tan poco como quieras. Cada API tiene como objetivo y resuelve un paradigma particular. Por ejemplo:

lexical_cast<> - Type-safe ways of casting from one type to another. 
program_options - Library for parsing command lines in a type-safe manner 
asio   - Asynchronous Input/Output. Great for working with sockets, IP4/IP6 
shared_ptr  - Reference-counted smart pointer 

... y muchos más.

2) Una de las razones más importantes para usar Boost es que los grandes desarrolladores que han hecho esto, lo han hecho bien. Estas soluciones son revisadas por pares y robustas. Si tiene un problema que resolver y Boost tiene una API que se ajusta a la factura, es probable que deba usarla.

3) Es casi tan multiplataforma como la que obtendrás. es decir, sí.

4) Utilizaría aumentar el código casero de cualquier persona. Homebrew tiende a ser utilizado por un único desarrollador (la persona que lo codificó). Boost está en uso en aplicaciones comerciales en todas partes y, como dije antes, es revisado por pares. No se vuelve mucho más robusto que eso.

5) La página de impulso principal tiene una lista de bibliotecas por función y alfabéticamente.

+0

Debe ser, por ej., No, p. – nonremovable

+0

@nonremovable, gracias! Editado –

+0

¿Se tomó '' std :: _ shared_ptr' de C++ 11 de boosts 'shared_ptr', correcto? Entonces son relativamente idénticos, ¿mmm? –

3

BOOST es una colección de necesidades de llenado de bibliotecas comunes a muchos proyectos en 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 reaccionan a las cuestiones de corrección con el uso BOOST

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

Cuestiones relacionadas