Que es boost?


Un poco de historia

En 1998 cuando los tipos que decían: "Quiero que haya namespaces!" en las reuniones del Comite para el standard de C++, se dieron cuenta que si no hacían nada, lenguajes como Java a C# se los iban a comer vivo. La principal razón de este pánico justificado era que si alguien en esos lenguajes decía: "quiero hacer tal cosa", seguro que las librerías standard (millones y bien documentadas) ya lo soportaban. En esa epoca los esfuerzos para construir librerias para C++ estaban fragmentados. Además no podían simplemente esperar sentados 10 años hasta las proximas reuniones del comité (para las que ya no falta mucho) principalmente porque se iban a aburrir :)

Entonces decidieron crear Boost. Básicamente un repositorio de librerías de C++ en donde seguir trabajando y principalmente experimentando. (Habían visto nacer la stl hacia muy poco y se estaban escribiendo los primeros papers sobre programacion genérica en serio, policies, metaprogramacion con templates y otras yerbas bastante impresionantes, que de todas maneras en ese momento nadie comprendia del todo). En los inicios, los mismos miembros del comité fueron los que empezaron a hacer rodar los engranajes, después se les fue de las manos cuando muchos de los tipos mas grosos del ambiente de C++ empezaron a participar. Actualmente hay alrededor de unas 40 librerías que complementan (y se llevan muy bien) al standard. Son Grosas con mayúscula. Casi todas usan metaprogramacion y programación genérica para lograr algo que solo se puede hacer en C++, polimorfismo estático, una opción a la OO, teniendo como principal característica la reutilizacion real de código, y overhead cero sobre implementaciones hechas en C por ejemplo. (básicamente se pasa todo el laburo posible desde el runtime al tiempo de compilacion). El TR1 es uno de los principales documentos que se van a tratar en las proximas reuniones del comité para el standard, de modo de ver que cosas son promovidas al namespace std. Para que se den una idea de la importancia de esta librería en el mundo del C++ (talvez en el futuro, porque hoy en día mucha gente no la conoce igual) de las 13 propuestas de librerías del TR1, 9 son librerías de Boost.

Cuando se quiere encarar un desarrollo en C++, hay que dejar de reinventar la rueda. Los pasos para serian los siguientes:
  1. Ver si lo que necesito esta en el estandard.
  2. Sino, buscar en Boost.
  3. Sino esta ahi entonces buscar en otros proyectos importantes como ASL o POCO (ya voy a hablar de estos proyectos tambien)
  4. Sino, buscar en la web. Hay muchos proyectos open source que estan llegando a un nivel muy interesante.
  5. Si no hay nada en todos los lugares anteriores, hay que arremangarse y codificar un poco.
Les recomiendo que vayan a ver la documentacion que tienen las librerias de boost. Realmente hay mucho esfuerzo.

Una sola cosa mas, y muy importante. La licencia de estas librerias es Boost Software License, que es mucho mas permisiva que GPL y permite que las librerias sean utilizadas en programas comerciales sin problemas.

Cuando vean las cosas que se pueden hacer con Boost se van a dar cuenta de lo que es C++ moderno.

1 comentario:

Jonathan dijo...

Buen post ta' resumido como queria