viernes, 17 de abril de 2020

Librería y Framework

El framework es un elemento de diseño de aplicación . Una vez implementado sera muy difícil quitar este componente de tu solución. La librería es un conjunto de componentes que pueden ser reemplazados en la aplicación sin necesidad de hacer cambios estructurales. Puedes usar un framework como librería y viceversa. No hay una manera de delimitar cuando una libreria se convierte en framework. jQuery es el ejemplo, se puede usar como utilitaria para alguna funcionalidad básica o tu sitio web puede basarse enteramente en el.



Cuando usas una libreria el programador es el que tiene el control del flujo del programa mientras que cuando usas un framework es éste el que impone dicho flujo… digamos como “obligandote a…”

Una librería es una colección de elementos, un conjunto de rutinas, en este caso código, que a menudo suelen tener un propósito concreto. Por ejemplo pueden ser funciones financieras, clases para trabajar con gráficos o rutinas para importar o exportar a Excel, PDF o cualquier otro formato. Diría que una librería es una colección de rutinas que a menudo tienen un propósito específico.

Un framework es casi lo que el nombre indica: un marco de trabajo. Es un conjunto de herramientas y código para trabajar de acuerdo con una metodología, utilizando unos determinados patrones, el más popular en el mundo de la web sería el MVC (model-view-controller o modelo-vista-controlador). Lo resumiría diciendo que es un método de trabajo ordenado, basado en una arquitectura y unas herramientas de software determinadas.

Es bastante común que en un framework encontremos librerías, colección de software, en la forma de módulos o plugins que ayuden a la gestión de la autenticación o la presentación de la información de diferentes formas: por RSS, email, etc.

La librería es algo a lo que llamas y te proporciona una respuesta.

Oh librería, ¿soy guapo o feo?

y la librería te responde .. guapo, feo, o lo que sea.

El framework es un esqueleto que proporciona una arquitectura básica sobre el que construyes tus aplicaciones. Sería como si te dan un edificio con sus cimientos, sus vigas, pareces, puertas y ventanas y tú te tienes que ocupar de pintar, poner los armarios empotrados, el alicatado, la tarima flotante, el plato de ducha, etc. Es un molde sobre el cuál puedes construir algo. En programación, se suelen basar en MVC, el modelo-vista-controlador.

En Python una Liberia sería importar por ejemplo, numpy (para activar el equivalente al análisis de datos a Excel) y scikit que incluye herramientas de aprendizaje automático (machine learning).

Al importar cada librería, ya tendrás acceso a sus funciones y ya no tendrás que implementarlas tú mismo.

Tener muchas librerías es uno de los grandes beneficios de la filosofía open-source, pues la comunidad comparte sus librerías para no tener que reinventar el hilo negro.

Todo lo que importas en tu programa para usar sus funciones, es una librería.

Todos los archivos y carpetas que se te generan al instalar el stack MERN o una aplicación con Laravel o Symfony en PHP o simplemente al usar Bootstrap, son un framework, pues manejan la arquitectura del sistema.

Una librería solo provee funciones que pueden ayudar a agilizar u optimizar ciertas características de un sistema. Como por ejemplo las librerías estándar de C y C++.

Un framwwork hasta donde he visto y probado a lo largo de los años, además de proveer funciones también coloca una capa de abstracción sobre un problema. Por ejemplo el framwwork de .NET el cual abstrae la difícil tarea de comunicar a bajo nivel los diversos lenguajes de Microsoft. No solo provee funcionalidades sino que también logra constructos más amplios y complejos de forma fácil. Sin embargo las librerías seguirían funcionando bien si esas grandes estructuras no se encuentran disponibles, pero no funcionarían aquellos bloques del sistema dependientes.

Por ejemplo Zend framwwork utiliza las librerías de PHP para proveer patrones de diseño que agilizan la solución de porblemas de forma genérica. Las librerías de PHP son unidades simples que resuelven problemas pero que de igual forma son las librerías se podría solucionar un problema sin necesidad de ellas, claro que habría que codificar un poco más.