Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Framerworks C++

Marvin López Mendoza
  • Escrito por Marvin López Mendoza el 21 de Diciembre de 2020
  • 9 min de lectura Frameworks

C++ es un lenguaje de programación de alto nivel, orientado a objetos y de propósito general que ayuda a los desarrolladores a escribir programas rápidos y portables. A pesar de tener 40 años (fue creado en 1979), se encuentra entre los lenguajes de programación más utilizados en 2020.

Considero que una de las razones por la que C++ es todavía uno de los lenguajes más populares, es porque al ser tan antiguo tiene una comunidad muy grande de desarrolladores, que a través de los años, han creado y siguen creando muchos frameworks y librerías que ponen a disposición de quién los quiera utilizar, lo que facilita la creación de una gran variedad de aplicaciones como sistemas operativos, navegadores web, bases de datos, videojuegos y compiladores, tal como te contamos en el artículo, Qué es C++: Características y aplicaciones.

Qué es un Framework C++

Los frameworks, también llamados marcos de trabajo (su traducción al español), son un conjunto de componentes de software que se utilizan para crear la estructura base de un software o aplicación. Un framework puede verse también como una caja de herramientas que contiene los componentes (las herramientas) que un desarrollador necesita para crear su aplicación. Esta caja de herramientas proporciona la estructura general del software y facilita la labor del desarrollador en el proceso de desarrollo.

Dado que la mayoría son construidos, probados y optimizados por comunidades de programadores experimentados, los frameworks de programación son versátiles, robustos y eficientes.

El poder de un framework, es que nos permite enfocarnos en problemas de alto nivel, como la lógica de negocio, ya que él mismo se encarga de resolver los problemas de bajo nivel.

Beneficios de usar frameworks para C++

Un framework en C++ tiene sus ventajas:

  • Ayuda a establecer las mejores prácticas de programación y el uso adecuado de patrones de diseño.
  • Permite a los desarrolladores crear código más seguro.
  • Ayuda a evitar el código duplicado y redundante.
  • Facilita el desarrollo de código consistente con menos errores.
  • Facilita el trabajo en tecnologías sofisticadas.
  • Como programadores, podemos contribuir en el desarrollo y actualización de los frameworks, ya que la mayoría son de código abierto. Lo que permite que exista una mejora continua y evolución en sus funcionalidades.
  • La mayoría del código y funcionalidades de los frameworks han sido extensamente probadas y certificadas. Esto hace que el desarrollo de las aplicaciones sea un proceso más confiable.
  • Depurar y probar el código es mucho más fácil incluso para desarrolladores que no son los creadores del código.
  • Permiten reducir significativamente el tiempo de desarrollo de una aplicación.
  • Los desarrolladores no necesitan preocuparse mucho por el diseño, y pueden enfocarse en crear funciones específicas para el dominio de negocio.

Diferencias entre Librería y framework

¿Librería o Framework? Una pregunta muy común entre los nuevos desarrolladores siendo importantes ambos conceptos, pero que pueden crear confusión a la hora de utilizarlos.

La principal diferencia entre librería y framework es la “Inversión del control”. Cuando llamas a un método desde una librería, tú estás en control. En cambio, con un framework, se invierte el control, el framework te invoca a ti.

Una librería es solamente una colección de definiciones de clases y su objetivo principal es la reutilización de código, es decir, proveerte de porciones de código que han sido creados por otros desarrolladores.

Un framework, contiene librerías y además contiene la gestión del flujo lógico, pero con un cierto grupo de espacios que debes llenar con tu propio código. Un framework es más complejo, puedes verlo como un esqueleto, la base sobre la cual se define la propia estructura de tu aplicación. De esta forma tu código será invocado por el framework cuando sea necesario y apropiado para el funcionamiento de la aplicación.

El desarrollo típico de una aplicación, empieza con la definición, implementación o creación del framework, y va evolucionando a través de las funciones específicas definidas en librerías que son consumidas a través de una API.

Imagen 0 en Framerworks C++

Mejores librerías y frameworks para C++

Hoy en día se utilizan muchas librerías y frameworks en C ++, por lo que es un poco difícil decir cuáles son los mejores o más importantes, sin embargo, intentaré hacer una lista de los 7 que considero más populares, esta lista no lleva ningún orden en particular:

1. Qt

Qt (se pronuncia “cute”, linda en inglés) es un framework de desarrollo de aplicaciones multiplataforma. Algunas de las aplicaciones más conocidas desarrolladas con Qt son KDE, Opera, Spotify, Teamviewer y Skype.

Qt se lanzó al público por primera vez en mayo de 1995. Tiene doble licencia, es decir, que se puede utilizar para crear tanto aplicaciones de código abierto como comerciales. Es un framework que está muy bien posicionado en la comunidad de código abierto y miles de desarrolladores lo utilizan alrededor del mundo.

Qt fue desarrollado inicialmente por Trolltech, una empresa de software noruega. En 2008, la empresa fue adquirida por Nokia. En agosto de 2012, una empresa de desarrollo finlandesa Digia adquirió las tecnologías de software Qt de Nokia. Mientras tanto, se creó el Proyecto Qt con el que continúa el desarrollo de Qt de código abierto. El sitio web del kit de herramientas Qt de código abierto se puede encontrar en qt.io/download-open-source.

El mes pasado fue liberada la versión beta de Qt 6. Esta versión ha presentado cambios interesantes al ecosistema Qt, ya que se basa en CMake como sistema de compilación y usa C++ 17 como estándar base. Recientemente, Qt ya ha anunciado algunos otros cambios relacionados con su soporte de versiones de código abierto y soporte LTS para usuarios comerciales.

Qt es un framework multiplataforma, es decir, el software creado con Qt puede ejecutarse en Windows, OS X, Linux, Android, iOS, QNX, Blackberry y un sin número más de plataformas.

2. openFrameworks

openFrameworks es de código abierto y ha sido diseñado para ayudar en el proceso creativo del desarrollo de software, al proporcionar un marco simple e intuitivo para la experimentación del código.

El código de openFrameworks está escrito para ser altamente compatible con distintos sistemas operativos, tales como Windows, OSX, Linux, iOS y Android; además da la libertad de seleccionar su IDE favorito como XCode, Code::Blocks, Visual Studio y Eclipse. La API que provee también está diseñada para ser muy fácil de comprender y utilizar.

openFrameworks se distribuye bajo la licencia MIT, brindando la libertad de usar openFrameworks en cualquier contexto: comercial o no comercial, público o privado, de código abierto o cerrado. Si bien muchos usuarios de openFrameworks devuelven su trabajo a la comunidad de una manera igualmente gratuita, no tienen la obligación de hacerlo.

En palabras más simples, openFrameworks es una herramienta que te ayuda a hacer cosas con código de una forma simple y sencilla.

3. Abseil

Abseil es un framework de código abierto que provee una colección de bibliotecas de C++ creado al extraer las más fundamentales piezas del código interno base de Google. Estas bibliotecas son los fundamentos básicos que sustentan casi todo lo que ejecuta Google. Los fragmentos de estas API están integrados, en la mayoría de los proyectos, de código abierto de Google, y la función de Abseil es reunirlos en un proyecto integral. Abseil tiene una base de código muy robusta y segura, además de que al ser parte del core de las aplicaciones de Google, se prueba en producción y es casi seguro de que constantemente se mantendrá actualizado durante los próximos años.

El código de Abseil, sigue las reglas oficiales y guías de estilo de C++ de Google Google C++ Style Guide.

Adicional, Abseil está diseñado para complementar (aumentar) la biblioteca estándar de C++, y en algunos casos, proporciona piezas de código que faltan en la librería estándar de C++. Abseil no pretende competir con el código de la biblioteca estándar, sin embargo, muchas de las utilidades tienen un propósito específico dentro de su base de código y, en vista de ello, ha sido puesta a disposición de la comunidad de desarrolladores de C++ en general.

4. Seastar

Seastar es un framework que facilita el desarrollo de aplicaciones de servidor complejas, altamente eficientes en máquinas con múltiples núcleos (multi-core). Seastar tiene la intención de crear una biblioteca que permita desarrollar aplicaciones de servidor altamente complejas, logrando un rendimiento óptimo al mismo tiempo.

Además, Seastar cuenta con un conjunto de herramientas que permiten al desarrollador, sacar el máximo provecho al hardware sobre el que está desarrollando. Su API está bien documentada (la puedes encontrar aquí: http://docs.seastar-project.org/master/index.html).

El primer caso de uso de Seastar fue Scylla, un proyecto que inició como una reescritura de Apache Cassandra. Cassandra a pesar de ser una aplicación muy compleja, se pudo volver a implementar con Seastar, pero con un aumento significativo en su rendimiento (10x), así como latencias significativamente más bajas y más consistentes.

Seastar ofrece un framework de programación asincrónico completo que utiliza dos conceptos, futuros y continuaciones, para representar y manejar de manera uniforme todo tipo de evento asincrónico incluidos I/O de red, I/O de disco y combinaciones complejas de otros eventos.

5. Boost

Boost proporciona librerías de código C++ portables. Hace hincapié en las librerías que funcionan bien con la librería estándar de C++. Las librerías que provee Boost están diseñadas para ser ampliamente utilizables en un diverso espectro de aplicaciones. La licencia de Boost fomenta el uso de bibliotecas de Boost para todos los usuarios con restricciones mínimas.

Boost funciona en casi cualquier sistema operativo moderno, incluidas las variantes de UNIX y Windows. Existen paquetes de Boost prediseñados e integrados en las distribuciones populares de Linux y Unix, como Debian, NetBSD y Fedora.

Un dato interesante sobre Boost es que la organización detrás de su desarrollo y su comunidad en general, apoyan la investigación y la educación sobre los mejores usos posibles de C++ y, en particular, las librerías desarrolladas para él, pero no exclusivamente las contenidas en las librerías de Boost.

6. JUCE

JUCE es un framework para aplicaciones de C++, multiplataforma y de código abierto que se utiliza para el desarrollo rápido de aplicaciones móviles y de escritorio de alta calidad incluidos los complementos de audio VST, AU (y AUv3), RTAS y AAX. JUCE se integra fácilmente con proyectos creados previamente o se puede utilizar como una herramienta para la creación de proyectos nuevos a través de Projucer, el cual admite la exportación de proyectos para Xcode (macOS e iOS), Visual Studio, Android Studio, Code ::Blocks, CLion y Linux Makefiles. También contiene un editor de código fuente y un motor de codificación en vivo que se puede utilizar para la creación de prototipos rápidamente.

7. TreeFrog

TreeFrog es un framework de desarrollo web full stack y de alta velocidad, basado en C ++ y Qt, soporta los protocolos HTTP y WebSocket. Las aplicaciones web pueden ejecutarse más rápido que las del lenguaje de programación ligero. En el desarrollo de aplicaciones, proporciona un sistema de mapeo O / R y un sistema de plantilla en una arquitectura MVC. Tiene como objetivo lograr una alta productividad a través de la política de convención sobre la configuración.

Utilizar un Framework o librería en C++ es casi una necesidad

Cuando piensas desarrollar en C++, utilizar un framework es casi la primera tarea que te debes plantear hacer, en pocas palabras, es casi una necesidad. Si nos decidimos por no utilizar uno, como desarrolladores nos tocará trabajar mucho más, ya que C++ es un lenguaje de programación que tiene unas reglas muy complejas por ser un lenguaje antiguo.

En C++ no es tan sencillo empezar un proyecto desde cero, a diferencia de como sucede con lenguajes como Python, Javascript u otros lenguajes de programación más recientes, que han sido creados con simplicidad como una de sus principales características. Es por esto que, los frameworks y librerías en C ++ son cada vez más populares.

Ahora que conoces que existen diferentes frameworks de C++ y que cada uno tiene sus propias características, distintas funcionalidades y propósitos, es importante que cuando decidas trabajar con alguno, elijas el que se adapte más a tu necesidad y te permita desarrollar tu aplicación de una forma más simple, más rápida, más segura, más escalable y de una manera mejor estructurada.

Si estás buscando aprender más sobre C++, te recomendamos nuestro Curso de C++: Introducción.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Programador en C++

Programador en C++

carrera

Incluye 8 cursos:

  • Curso de Introducción a la programación con Pseudocódigo
  • Curso de introducción a C++
  • Curso de Programación orientada a objetos con C++

y 5 cursos más!

Duración: 22 horas y 43 minutos

Más de 300 empresas confían en nosotros

Oesia
Vass
Everis
Ayesa
Altran
Ibermatica
Atmira
GFI
Accenture
GMV
Concatel
Telefonica
Caser
Banco de España
kpmg
Mapfre
Randstad