Friday, September 28, 2018


Type Object
En ciencias de la computación , un tipo de objeto (también conocido como wrapping object ) es un tipo de datos que se utiliza en la programación orientada a objetos para envolver un tipo que no sea de objeto para que se vea como un objeto dinámico 
Algunos lenguajes de programación orientados a objetos hacen una distinción entre tipos de referencia y de valor , a menudo denominados objetos y no objetos en plataformas donde no existen tipos de valores complejos, por razones tales como la eficiencia del tiempo de ejecución y la sintaxis o problemas semánticos. Por ejemplo, Java tiene clases primitivas de envoltura correspondientes a cada tipo de primitiva : IntegerintCharactercharFloatfloat, etc. Los lenguajes como C ++ tienen poca o ninguna noción de tipo de referencia ; por lo tanto, el uso del tipo de objeto es de poco interés.

BOXING

El boxeo, también conocido como envoltura, es el proceso de colocar un tipo primitivo dentro de un objeto para que la primitiva se pueda usar como un objeto de referencia. Por ejemplo, en Java, a LinkedListpuede cambiar su tamaño, pero una matriz debe tener un tamaño fijo. Uno podría desear tener una LinkedListde int, pero la LinkedListclase solo enumera las referencias a los objetos dinámicos; no puede enumerar los tipos primitivos, que son tipos de valores.
Para eludir esto, intse puede encasillar Integer, que son objetos dinámicos, y luego agregar a un LinkedListde Integer(Utilizando tipos parametrizados genéricos introducidos en J2SE 5.0, este tipo se representa como ). Por otro lado, C # no tiene clases primitivas de envoltura, pero permite el encajamiento de cualquier tipo de valor, devolviendo una referencia genérica LinkedList<Integer>Object
El objeto en caja es siempre una copia del objeto de valor, y generalmente es inmutable . Al desempaquetar el objeto, también se devuelve una copia del valor almacenado. Tenga en cuenta que el boxeo y el desempaquetado repetidos de objetos pueden tener un impacto severo en el rendimiento, ya que el boxeo asigna dinámicamente nuevos objetos y unboxing (si el valor encuadrado ya no se usa) los hace elegibles para la recolección de basura . Sin embargo, los recolectores de basura modernos, como el recolector de basura Java HotSpot predeterminado, pueden recopilar de manera más eficiente los objetos efímeros, de modo que si los objetos encuadrados son efímeros, el impacto en el rendimiento puede no ser tan malo.
Existe una equivalencia directa entre un tipo primitivo no incluido y una referencia a un tipo de objeto encajonado inmutable. De hecho, es posible sustituir todos los tipos primitivos en un programa con tipos de objetos encuadrados. Mientras que la asignación de una primitiva a otra copiará su valor, la asignación de una referencia a un objeto encapsulado a otra copiará el valor de referencia para referirse al mismo objeto que la primera referencia. Sin embargo, esto no causará ningún problema, ya que los objetos son inmutables, por lo que semánticamente no existe una diferencia real entre dos referencias al mismo objeto o a diferentes objetos (a menos que se observe la igualdad física). Para todas las operaciones que no sean de asignación, como la aritmética, la comparación y los operadores lógicos, uno puede desempaquetar el tipo en caja, realizar la operación y volver a colocar el resultado según sea necesario. Así,


Autoboxing
Autoboxing es el término para obtener un tipo de referencia de un tipo de valor solo a través de la conversión de tipo (implícita o explícita). El compilador proporciona automáticamente el código fuente adicional que crea el objeto.
Por ejemplo, en versiones de Java anteriores a J2SE 5.0, no se compiló el siguiente código:
Entero  i  =  nuevo  Entero ( 9 ); 
Entero  i  =  9 ;  // error en las versiones anteriores a 5.0!


Los compiladores anteriores a 5.0 no aceptarían la última línea. Integerson objetos de referencia, en la superficie no es diferente de ListObjecty así sucesivamente. Para convertir de una inta una Integer, había que crear una instancia "manual" del objeto Entero. A partir de J2SE 5.0, el compilador aceptará la última línea y la transformará automáticamente para que se cree un objeto entero para almacenar el valor 9[1] Esto significa que, desde J2SE 5.0 en adelante, se compilará algo así como , where are yourself, a y b se desempaquetarán, los valores enteros se sumarán, y el resultado se autoboxeará en uno nuevo , que finalmente se almacenará en el interior variableInteger c = a + babIntegerIntegercTenga en cuenta que los operadores de igualdad no se pueden usar de esta manera, ya que los operadores de igualdad ya están definidos para los tipos de referencia, para la igualdad de las referencias; para probar la igualdad del valor en un tipo encuadrado, todavía se deben destrabar manualmente y comparar las primitivas, o usar el método. Objects.equals
Otro ejemplo: J2SE 5.0 permite que el programador trate una colección (como a LinkedList) como si contuviera intvalores en lugar de Integerobjetos. Esto no contradice lo que se dijo anteriormente: la colección todavía contiene referencias a objetos dinámicos y no puede listar tipos primitivos. No puede ser un , pero debe ser un lugar. Sin embargo, el compilador transforma automáticamente el código para que la lista reciba objetos "silenciosamente", mientras que el código fuente solo menciona valores primitivos. Por ejemplo, el programador ahora puede escribir y pensar como si se hubieran agregado a la lista; pero, el compilador realmente habrá transformado la línea en 

LinkedList<int>LinkedList<Integer>list.add(3)int 3list.add(new Integer(3))

Unboxing

Unboxing se refiere a obtener el valor que está asociado a un objeto dado, solo a través de la conversión de tipo (implícita o explícita). El compilador proporciona automáticamente el código fuente adicional que recupera el valor de ese objeto, ya sea invocando algún método en ese objeto, o por otros medios.
Por ejemplo, en versiones de Java anteriores a J2SE 5.0, no se compiló el siguiente código:
Entero k = nuevo Entero ( 4 );
int l = k . intValue (); // siempre está bien
int m = k ; // habría sido un error, pero ahora está bien
C # no admite el unboxing automático en el mismo sentido que Java, ya que no tiene un conjunto separado de tipos primitivos y tipos de objetos. Todos los tipos que tienen versiones tanto primitiva como de objeto en Java, son implementados automáticamente por el compilador C # como tipos primitivos (valor) o tipos de objeto (referencia).
En ambos idiomas, el boxeo automático no se despliega automáticamente, es decir, el siguiente código no se compilará:
DO#:
int  i  =  42 ; 
objeto  o  =  i ;          // box 
int  j  =  o ;             // unbox (error) 
Consola . WriteLine ( j );  // línea inalcanzable, el autor podría haber esperado la salida "42"
Java:
int  i  =  42 ; 
Objeto  o  =  i ;           // box 
int  j  =  o ;              // unbox (error) 
Sistema . a cabo . println ( j );  // línea inalcanzable, el autor podría haber esperado la salida "42"

Types Helpers 

Objeto moderno Pascal tiene otra forma de realizar operaciones en tipos simples, cerca del boxeo, llamados type helpers en FreePascal o ayudantes de registro en Delphi y FreePascal en modo Delphi. 
Tenga en cuenta que los dialectos mencionados son compilaciones de Object Pascal a idiomas nativos y omite algunas de las características que C # y Java pueden implementar. Notablemente, inferencia de tipo de tiempo de ejecución en variables fuertemente tipadas. 
Pero la función está relacionada con el boxeo. 
Permite al programador usar construcciones como:
{$ ifdef fpc} {$ modo delphi} {$ endif} 
usa  sysutils ;   // esta unidad contiene wraps para los tipos simples 
var 
  x : integer = 100 ; 
  s : cadena ; 
comenzar 
  s : =  x . ToString ; 
  writeln ( s ) ; 
final .


Grupo C#
Luis Rodriguez  C.I23.606.837
Ivan Roca  C.i 20.597.427


BUENAS PRÁCTICAS: FRAMEWORK

Framework

En general, un framework o marco de trabajo es una estructura real o conceptual destinada a servir como soporte o guía para la construcción de algo que expande la estructura en algo útil. En los sistemas informáticos, suele ser una estructura estratificada que indica qué tipo de programas pueden o deben construirse y cómo se interrelacionarán. Algunos marcos de sistemas informáticos también incluyen programas reales, especifican interfaces de programación u ofrecen herramientas de programación para usar los framework. Un framework puede ser para un conjunto de funciones dentro de un sistema y cómo se interrelacionan, las capas de un sistema operativo, las capas de un subsistema de aplicación, cómo se debe estandarizar la comunicación en algún nivel de una red, etc. Un framework generalmente es más completo que un protocolo y más prescriptivo que una estructura.
Los frameworks tienen como objetivo principal ofrecer una funcionalidad definida, autocontenida, siendo construidos usando patrones de diseño, y su característica principal es su alta cohesión y bajo acoplamiento. Para acceder a esa funcionalidad, se construyen piezas, objetos, llamados objetos calientes, que vinculan las necesidades del sistema con la funcionalidad que este presta. Esta funcionalidad, está constituida por objetos llamados fríos, que sufren poco o ningún cambio en la vida del framework, permitiendo la portabilidad entre distintos sistemas. Algunos entornos de trabajo conocidos son Spring Framework o Hibernate, donde lo esencial para ser denominados entornos de trabajo es estar constituidos por objetos casi estáticos con funcionalidad definida a nivel grupo de objetos y no como parte constitutiva de estos, por ejemplo en sus métodos, en cuyo caso se habla de una API o librería.

Algunas características notables que se pueden observar:
  • La inversión de control: en un framework, a diferencia de las bibliotecas, el flujo de control no es dictado por el programa que llama, sino por el mismo.
  • La funcionalidad o comportamiento predeterminado: un marco tiene un comportamiento predeterminado. Este comportamiento por defecto debe ser un comportamiento útil, definido e identificable.
  • Su escalabilidad: un framework puede ser ampliado para proporcionar una funcionalidad específica. El framework, en general, no se supone que deba ser modificado, excepto en cuanto a extensibilidad. Los usuarios pueden ampliar sus características, pero no deben ni necesitan modificar su código.

Arquitectura de un framework

Dentro de este aspecto, podemos basarnos en el modelo-vista-controlador o MVC (Controlador => Modelo => Vista), ya que debemos fragmentar nuestra programación. Tenemos que contemplar estos aspectos básicos en cuanto a la implementación de nuestro sistema:
  • Modelo: Este miembro del controlador maneja las operaciones lógicas, y de manejo de información (previamente enviada por su ancestro), para resultar de una forma explicable y sin titubeos. Cada miembro debe ser meticulosamente llamado, con su correcto nombre y en principio, con su verdadera naturaleza: el manejo de información, su complementación directa.
  • Vista: Al final, a este miembro de la familia le corresponde dibujar, o expresar la última forma de los datos: la interfaz gráfica que interactúa con el usuario final del programa (GUI). Después de todo, a este miembro le toca evidenciar la información obtenida hasta hacerla llegar al controlador. Solo (e inicialmente), nos espera demostrar la información.
  • Controlador: Con este apartado podemos controlar el acceso (incluso todo) a nuestra aplicación, y esto puede incluir: archivos, scripts, o programas; cualquier tipo de información que permita la interfaz. Así, podremos diversificar nuestro contenido de forma dinámica, y estática (a la vez); pues, solo debemos controlar ciertos aspectos (como se ha mencionado antes).

Estructura de un framework

Dentro del controlador, modelo o vista, se pueden manejar datos, y depende de cada uno cómo interpretar y manejar esos datos. Se sabe que el único dato de una dirección estática web es: conseguir un archivo físico en el disco duro o de Internet, etc., e interpretado o no, el servidor responde.
El modelo, al igual que el controlador y la vista, maneja todos los datos que se relacionen consigo (solo es el proceso medio de la separación por capas que ofrece la arquitectura MVC). Y solo la vista, puede demostrar dicha información. Con lo cual ya se ha generado la jerarquía del programa: controlador, modelo y vista.


Lógica al elaborar un framework

Al parecer, debemos inyectar ciertos objetos dentro de sus parientes en esta aplicación, solo así compartirán herencia y coherencia en su aplicación. Rápidamente, para una aplicación web sencilla debemos establecer estos objetos:
Una base (MVC)
  • Controlador: este debe ser capaz de manejar rutas, archivos, clases, métodos y funciones.
  • Modelo: es como un script habitual en el servidor, solo que agrupado bajo un modelo reutilizable.
  • Vista: como incluyendo cualquier archivo en nuestra ejecución, muy simple.

Un sistema
  • Ruteador: con él podemos dividir nuestras peticiones sin tantas condicionales.
  • Cargador.

Los ejemplos de framework que actualmente utilizan u ofrecen los organismos o empresas de estándares incluyen:
  • Marco de descripción de recursos (Resource Description Framework): un conjunto de reglas del World Wide Web Consortium sobre cómo describir cualquier recurso de Internet, como un sitio web y su contenido.
  • Marco comercial de Internet I(nternet Business Framework): un grupo de programas que forman la base tecnológica para el producto mySAP de SAP, la empresa alemana que comercializa una línea de productos de gestión empresarial de recursos
  •  Marco de políticas del remitente (Sender Policy Framework): un enfoque definido y programación para hacer que el correo electrónico sea más seguro
  •  Zachman framework: una estructura lógica destinada a proporcionar una representación completa de una empresa de tecnología de la información que es independiente de las herramientas y métodos utilizados en cualquier negocio de TI en particular

Ventajas de utilizar un framework

Agilización del proceso de desarrollo
Un framework te permite desarrollar más rápido mediante el uso de código base y tareas comunes, de modo que no tienes que empezar desde cero. Si estás trabajando con un equipo, todos tendrán el mismo código, así que la colaboración en equipo también se beneficia de un framework.

 Facilita la funcionalidad en diversos navegadores
Un framework  ya viene programado para que el resultado (es decir, tu aplicación o sitio web) final luzca similar en todos los navegadores, de modo que puedes concentrarte en personalizar y crear contenido en vez de preocuparte en modificar la apariencia base.

Te permite trabajar con layout simétrica
Un framework con sistemas de cuadrículas asigna columnas con anchos predefinidos, de modo que puedes concentrarte en la creación de contenido en vez de la alineación de bloques de texto.

Refuerza buenos hábitos de diseño
Un framework  provee una serie de selectores que puedes utilizar para tus sitios web y aplicaciones, de este modo el diseño se hace congruente ya que no debes adivinar ni acordarte que hiciste en proyectos pasados.

Desventajas de utilizar un framework

 Limita tu libertad
En general, sólo se utiliza un framework para todos tus proyectos, ya que aprender uno tras otro realmente no es muy práctico debido a que tiene una serie de retículas, selectores y otro tipo de código limita tu diseño en cuanto al tamaño de los elementos y el estilo.

Añade código extra
Es poco probable que emplees todas las características de un framework por lo que definitivamente tus aplicaciones tendrán código que no necesitas. Esto podría ser un problema si deseas que tu aplicación sea súper ligera y cada byte cuenta.

Te fuerza a usar la semántica propia del framework
Al usar un framework tienes que acostumbrarte a trabajar con la semántica de ésta. En general, esto no suele ser un problema para muchos desarrolladores que trabajan solos. Sin embargo, si estás colaborando con varias personas deberás asegurarte que todos tengan el mismo nivel de conocimiento sobre el framework, lo que es un escenario ideal, por supuesto. Así que debes esperar que tus compañeros se familiaricen con el framework primero.

Podría ser una pérdida de tiempo
Si ya estás acostumbrado a trabajar y ordenar tu código de cierta manera y debido a una petición de cliente o a un proyecto en equipo te ves obligado a trabajar con cierto framework, obviamente primero debes aprender cómo funciona. Esto podría ser tiempo valioso que podrías haber invertido en comenzar a codificar sin el uso de un framework.

Ejemplos de framework

Esto cumple con algunas necesidades de simpleza informática. Ahora solo nos basta controlar estos procesos, ampliarlos y complementarles con algunos scripts más.

Aplicar
Si nuestro archivo se llama Foo (clase), y nuestro otro archivo, bar (método) tenemos que crear el siguiente archivo dentro de la carpeta app/.

Extender
Podremos extender nuestro sistema con clases, o funciones propias o de algún 'plugin' o Biblioteca ajena. Solo que queremos extenderles sobre nuestro sistema actual, nuestro objeto básico.
Entonces, debemos usar la siguiente sentencia dentro de nuestro programa Foo:
$this->load($this, 'test') o _load($this, 'test')
Ya con esto, podremos utilizar las llamadas a $this->test->does() dentro del objeto o clase Foo.

Ver
Para mostrar los resultados de todo nuestro computo necesitamos de vistas, o archivos de inclusión: plantillas, bloques o scripts. Suponiendo que ya ha sido todo, debemos de visualizarlo:

BUENAS PRÁCTICAS: LIBRERÍA EN PROGRAMACIÓN

        

            Junto con los compiladores de distintos lenguajes de programación sea este C++ por ejemplo, se incluyen ciertos archivos llamados bibliotecas más comúnmente librerías. Las bibliotecas contienen el código objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar números, realizar funciones matemáticas, etc.

            Las bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y salida, matemáticas, de manejo de memoria, de manejo de textos y como imaginarás existen muchísimas librerías disponibles y todas con una función específica.

Definición

            Se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos importar o incluir en el programa. Estos archivos contienen las especificaciones de diferentes funcionalidades ya construidas y utilizables que pueden agregar en dicho programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas otras más.

            Ahora bien en ciencias de la computación, una biblioteca (del inglés library) es un conjunto de subprogramas utilizados para desarrollar software. Las bibliotecas contienen código y datos, que proporcionan servicios a programas independientes, es decir, pasan a formar parte de estos. Esto permite que el código y los datos se compartan y puedan modificarse de forma modular. Ahora bien un freeware no posee una definición ampliamente aceptada, pero es utilizada para programas que permiten la redistribución pero no la modificación, y que incluyen su código fuente.

            En general, el término librería se utiliza para referirse a un conjunto de módulos objeto .obj / .o (resultados de compilación) agrupados en un solo fichero que suele tener las extensiones .lib, .bpl, .a, .dll, etc.

            Ahora bien, las librerías no son únicamente archivos externos creados por otros, también es posible crear librerías propias y utilizarlas en nuestros programas. Las librerías pueden tener varias extensiones diferentes y algunas más ya no tan comunes.

Tipos de librerías  


1.    Las bibliotecas estáticas

            Históricamente, las bibliotecas solo podían ser estáticas. Una biblioteca estática, también conocido como archivo es un fichero contenedor con varios archivos de código objeto empaquetados, que en el proceso de enlazado durante la compilación serán copiados y relocalizados (si es necesario) en el fichero ejecutable final, junto con el resto de ficheros de código objeto.

           
2.    Bibliotecas dinámicas

            Las bibliotecas dinámicas, también conocidas como vinculadas dinámicamente, o de vínculos dinámicos son ficheros que contienen código objeto construido de forma independiente de su ubicación de tal modo que están preparadas para poder ser requeridas y cargadas en tiempo de ejecución por cualquier programa, en lugar de tener que ser enlazadas, previamente, en tiempo de compilación.

Ventajas de biblioteca dinámica con respecto a la estática

            En cuanto a las ventajas entre estas dos librerías es por medio enlace dinámico con respecto al estático, radica en que el dinámico permite la reutilización no solo de código, sino de espacio físico: un mismo fichero de biblioteca compartida puede ser utilizada por varios programas sin que estos copien su contenido dentro de ellos.

            Puede reutilizarse memoria principal (RAM) para programas que utilicen la misma biblioteca (por ejemplo, puede ser necesario cargar las bibliotecas de Qt “framework multiplataforma orientado a objetos” solo una vez para todos los programas que las utilicen).

            Por otra parte, el mayor inconveniente es el aumento del tiempo de carga (debido a tener que buscar el fichero de la biblioteca, cargarlo y relocalizar las llamadas en el programa) y el aumento de una indirección a la hora de llamar a las funciones de la biblioteca.

            Lo importante para cualquier librería o framework que se elija es que exista la posibilidad en el futuro de reemplazarlo sin estar encadenados a él y sin tener que reescribir el proyecto entero, esto forma parte de las más básicas buenas prácticas de desarrollo, precisamente las aplicaciones que se desarrollan en capas y los frameworks que separan modelo, de vista, de controlador tratan de minimizar ese impacto.
            

Cuadro comparativo entre librerías estáticas y dinámicas.




Librerías en algunos los lenguajes de programación


            Para programar hay una abundancia tendencia de lenguajes, librerías, frameworks, tecnologías, etc… disponibles para desarrollar un proyecto. Esto es muy bueno ya que se puede elegir una combinación de cualquiera de ellas que se ajuste más a las necesidades del proyecto.

            El lado malo de esta abundancia es que requiere analizar seguramente no todas pero al menos las más nombradas, más usadas, con mejor documentación o con un mantenimiento activo. Por la cantidad de opciones dicha tarea de análisis requiere tiempo y esfuerzo ya que cualquiera de ellas  puede servir para un propósito específico.

1.    Librería en java

En Java y en otros lenguajes de programación más, existe el concepto de librerías. En Java una librería se puede entender como un conjunto de clases, que poseen una serie de métodos y atributos. Lo que es realmente interesante de estas librerías en Java facilitan muchas operaciones. De una forma más completa, las librerías en Java permiten reutilizar código, es decir que puede hacer uso de los métodos, clases y atributos que componen la librería evitando así tener que implementar nosotros mismos esas funcionalidades.

Java cuenta con una extensa lista de librerías disponibles dentro del JDK o desarrolladas por terceros, pero también las librerías en Java, los programadores  pueden crear las librerías y hacer uso de ellas al interior de los proyectos. Básicamente un paquete en Java puede ser una librería, sin embargo una librería Java completa puede estar conformada por muchos paquetes más. Al importar un paquete se puede hacer uso de las clases, métodos y atributos que lo conforman, así que eso de las librerías no es solo trabajo de otros sino que se puede crear librerías propias y usarlas.

Al hacer uso de librerías tanto propias como externas, o librerías propias de Java, es bastante fácil. Básicamente lo único que se debe hacer para importar librerías es usar la palabra clave import seguido de la "ruta" del paquete o clase que deseamos agregar al proyecto.

2.    Librería en PHP

            Las bibliotecas son archivos PHP que se pueden incluir en cualquier otro archivo PHP. Las bibliotecas se suelen utilizar para centralizar fragmentos de código que se utilizan en varias páginas. De esa manera, si se quiere hacer alguna modificación, no es necesario hacer el cambio en todas las páginas sino únicamente en la biblioteca.

            Por ejemplo, si definimos en la biblioteca una función que imprima la cabecera de las páginas, desde cualquier página se puede incluir la biblioteca mediante la construcción incluye y llamar a la función como si se hubiera definido en la propia página:


Se pueden crear todas las bibliotecas que se necesiten e incluir cualquier número de bibliotecas en cualquier punto de un programa. Las bibliotecas pueden a su vez incluir otras bibliotecas.

Normalmente, las bibliotecas suelen contener funciones, definiciones de constantes o inicialización de variables, pero en realidad pueden incluir cualquier tipo de código PHP, que se ejecutará en la posición en la que se incluya la biblioteca.

En la guía de estilo PSR-1 comenta que en cualquier fichero de una biblioteca se pueden definir funciones, constantes, clases, etc. o se puede incluir parte de la lógica del programa (generar salida, modificar variables, etc.), pero prescribe que no se hagan las dos cosas en un mismo fichero.

3.    Librería Estándar C++

            Para poner un poco de orden, el Estándar C++ define la denominada Librería Estándar que debe acompañar a cada implementación del compilador que se adhiera al estándar. Es decir: la norma determina cuales son, como se llaman y como se utiliza este conjunto de algoritmos que deben acompañar (como mínimo) a cada implementación del compilador que quiera llamarse "Estándar". Un ejemplo de esto es la famosa librería iostream que parte de la STL que contiene los algoritmos de entrada/salida.

Uso de librerías


          Al momento de crear proyectos, y para el correcto funcionamiento de los mismos, se deben usar las librerías.

            Se debe asegurar de añadir aquellas librerías que se necesiten dentro del proyecto, por ejemplo: Si se desea agregar una funcionalidad que se encuentra ya programada (como herramienta de terceros) en el proyecto, se copia la librería en el compilador y luego se puede incorporar o se puedes agregar a este de una sola vez.

            Al hacer un buen uso de las librerías con definiciones de diferentes funcionalidades puede ahorrar gran cantidad de cosas, imaginemos por ejemplo que cada vez que necesitemos leer por teclado, debamos entonces crear una función que lo haga (algo realmente complejo), al poder contar con las librerías en diferentes lenguajes de programación podremos hacer uso de una gran variedad de funciones que nos facilitaran la vida y aumentarán la modularidad de nuestros códigos.

            La tecnologías, lenguajes, librerías, frameworks, son herramientas a usar para conseguir un fin que es hacer realidad el proyecto, producto o servicio con un componente informático, las herramientas no son un fin en sí mismo, no son lo más importante, lo más importante es resolver la necesidad de alguien normalmente con restricciones de tiempo y coste, pero desde luego no son irrelevantes y no da igual usar cualquiera. Son las herramientas equivalentes de un fontanero, pintor, carpintero u otros profesionales que tienen cantidad de ellas para realizar multitud de tareas específicas de forma efectiva y rápida junto con su conocimiento y experiencia.

Ventajas de la implementación de librería o bibliotecas

  • No tener que volver a escribir el código (o hacer copy-paste),
  • Nos ahorra el tiempo de compilar cada vez ese código que ya está compilado. Además, ya se sabe que mientras hace un programa, proba y se corrige, se debe  compilar entre muchas y “muchas más” veces.
  • El código ya compilado estará compilado y será fiable. No las primeras veces, pero si cuando ya se haya usado en 200 programas distintos y se haya ido corrigiendo los errores.
            Ya para culminar, una biblioteca es una colección de objetos y funciones que sirven para un propósito en particular. Mientras que un framework es una colección de patrones para ayudarte en la construcción de una web, App.

            Se puede ver entonces analógicamente a una  biblioteca como un complemento y el framework como el esqueleto.

En conclusión: Las librearías son archivos (no siempre externos) que nos permiten llevar a cabo diferentes tareas sin necesidad de preocuparnos por cómo se hacen sino simplemente entender cómo usarlas. Las librearías permiten hacer nuestros programas más modulares y reutilizables, facilitando además crear programas con funcionalidades bastante complejas en unas pocas líneas de código y un framework , aportar productividad, define limitaciones y genera homogeneidad a la hora de trabajar dentro de una organización.