# Biblioteca de software

> Código ya hecho para una tarea común que se enchufa dentro de otros programas.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/software-library/
- En inglés: [Software library](https://tidbit.legios.com.ar/software-library/)

Una **biblioteca de software** (muchos le dicen librería, por el inglés library) es un paquete de código escrito para resolver bien un tipo de problema, así otros programadores no tienen que resolverlo de nuevo. Hay bibliotecas para manejar fechas y husos horarios, dibujar gráficos, achicar imágenes, leer planillas, cifrar datos o hablar con un proveedor de pagos. Sumás la biblioteca a tu proyecto y llamás a sus funciones cuando las necesitás.

El software moderno se arma casi todo así. Una app típica tiene una capa chica de código propio encima de decenas o cientos de bibliotecas, sus **dependencias**. Cada lenguaje tiene un **gestor de paquetes** que las descarga con un comando, como `pip install` en Python o `npm install` en JavaScript, y muchas de esas bibliotecas son de código abierto.

La comodidad tiene un costo. Cada dependencia es código que escribió y mantiene otra persona, así que un bug o una vulnerabilidad en una biblioteca popular puede afectar a miles de apps a la vez, y una abandonada puede dejar un proyecto trabado. Por eso los equipos anotan las versiones exactas, las actualizan seguido y usan herramientas que avisan de problemas conocidos.

## Una analogía

Comprar piezas hechas para un mueble: bisagras, correderas de cajón, tornillos. Igual diseñás y armás el placard, pero no forjás tus propias bisagras.

## Para quedarse

- Código reutilizable para una tarea puntual, que llamás desde tu programa.
- Se instala con un gestor de paquetes como pip o npm.
- Casi todas las apps dependen de muchas bibliotecas: sus dependencias.
- Una falla en una biblioteca popular puede afectar a muchas apps juntas.

## Para seguir leyendo

- [Biblioteca (informática) en Wikipedia](https://es.wikipedia.org/wiki/Biblioteca_(informática))
- [Python Package Index (PyPI), un catálogo público de bibliotecas (en inglés)](https://pypi.org/)

## Términos relacionados

- [Paquete](https://tidbit.legios.com.ar/es/packet/): El pedacito en que se corta cada dato de internet antes de viajar.
- [Planilla vs base de datos](https://tidbit.legios.com.ar/es/spreadsheet-vs-database/): Por qué una empresa que vive en Excel termina necesitando una base de datos de verdad.
- [Cifrado](https://tidbit.legios.com.ar/es/encryption/): Mezclar datos para que solo quien tiene la clave pueda leerlos.
- [Python](https://tidbit.legios.com.ar/es/python/): Un lenguaje de programación muy usado, conocido por ser fácil de leer y de escribir.
- [JavaScript](https://tidbit.legios.com.ar/es/javascript/): El lenguaje de programación que corre en las páginas web y las vuelve interactivas.
- [Código abierto](https://tidbit.legios.com.ar/es/open-source/): Software cuyo código cualquiera puede leer, usar, cambiar y compartir.
- [Bug](https://tidbit.legios.com.ar/es/bug/): Un error en un software que hace que se comporte distinto de lo que se buscaba.
- [Vulnerabilidad y CVE](https://tidbit.legios.com.ar/es/vulnerability-and-cve/): Una falla que permite abusar de un software, y el código público que la identifica.
