Algoritmo
AlgoritmosSecuencia finita y ordenada de pasos que resuelve un problema. Dos algoritmos correctos pueden diferir enormemente en coste: compararlos es el trabajo de la notación Big-O.
Ver también: Big-O
Vocabulario compartido
10 términos que aparecen una y otra vez en documentación, entrevistas y conversaciones de equipo, explicados sin rodeos.
Secuencia finita y ordenada de pasos que resuelve un problema. Dos algoritmos correctos pueden diferir enormemente en coste: compararlos es el trabajo de la notación Big-O.
Ver también: Big-O
Application Programming Interface: el contrato que expone un sistema para que otros lo usen sin conocer su interior — funciones de una librería, endpoints HTTP de un servicio, o la interfaz pública de una clase.
Ver también: Idempotencia
Notación que describe cómo crece el coste (tiempo o memoria) de un algoritmo cuando crece la entrada, ignorando constantes. O(1), O(log n), O(n), O(n log n), O(n²)… describen formas de crecimiento, no segundos.
Ver también: Algoritmo, Complejidad espacial
Almacén rápido de resultados ya calculados u obtenidos, para no repetir el trabajo. Sus dos problemas eternos: decidir qué expulsar cuando se llena (políticas como LRU) y saber cuándo un dato guardado dejó de ser válido (invalidación).
Ver también: Idempotencia
Memoria extra que necesita un algoritmo en función del tamaño de la entrada, expresada en notación Big-O. Un algoritmo "in situ" usa O(1) espacio adicional.
Ver también: Big-O
Bug en el que el resultado depende del orden no determinista en que dos procesos o hilos acceden a un recurso compartido. Difícil de reproducir por naturaleza; se previene con exclusión mutua, atomicidad o inmutabilidad.
Ver también: Inmutabilidad
Coste futuro de las decisiones que aceleran el presente: atajos, diseño aplazado, tests ausentes. Como la financiera, cobra intereses — cada cambio posterior cuesta más — y se gestiona: se registra, se prioriza y se paga a plazos con refactorización.
Ver también: Refactorización
Propiedad de una operación que produce el mismo resultado aunque se ejecute varias veces. Fundamental en APIs y sistemas distribuidos: permite reintentar sin miedo a duplicar efectos (cobrar dos veces, crear dos pedidos).
Ver también: API
Diseño en el que los datos no se modifican tras crearse: cada cambio produce una copia nueva. Elimina categorías enteras de bugs (nadie muta lo que compartes) y simplifica la concurrencia, a cambio de más asignaciones de memoria.
Ver también: Condición de carrera
Cambiar la estructura interna del código sin cambiar su comportamiento observable, en pasos pequeños y verificables. Su red de seguridad son los tests: sin ellos, no estás refactorizando — estás editando y cruzando los dedos.
Ver también: Deuda técnica