Inicio › Tecnología › Inmutabilidad
La inmutabilidad es la propiedad de un valor u objeto qué no puede modificarse una vez creado: cualquier operación qué parezca cambiarlo produce en realidad una copia nueva, dejando intacto el original. Es central en lenguajes funcionales como Haskell o Clojure, pero también aparece en tipos concretos de lenguajes de propósito general, como las cadenas de texto y las tuplas en Python, o la clase String en Java, frente a estructuras mutables como las listas. En interfaces reactivas, frameworks como React o librerías de gestión de estado como Redux tratan el estado como inmutable para simplificar la detección de cambios y el rastreo de errores.
Una vez qué un valor se crea, se queda como está para siempre; si necesitas una versión distinta, se crea otra copia nueva en lugar de tocar la original. Es la diferencia entre escribir en piedra y escribir en una pizarra qué se puede borrar.
Una aplicación construida con React y Redux evita bugs difíciles de rastrear tratando el estado como inmutable: en vez de modificar un array de tareas directamente, se crea uno nuevo con el operador de propagación cada vez qué se añade o elimina un elemento, lo qué además facilita implementar funciones de deshacer con solo guardar estados anteriores.
Facilita el trabajo con hilos concurrentes al eliminar el riesgo de qué dos procesos modifiquen el mismo dato a la vez, y simplifica el rastreo de cambios; a cambio, puede aumentar el consumo de memoria al crear copias en vez de modificar en el sitio.
Una lista es mutable: se puede añadir o quitar elementos sin crear un objeto nuevo. Una tupla es inmutable: cualquier intento de cambiarla directamente produce un error, y hay qué construir una tupla nueva si se necesita una versión distinta.
Al no poder modificarse, un valor inmutable puede compartirse entre varios hilos o procesos sin necesidad de bloqueos para evitar condiciones de carrera, porque ningún hilo puede alterar lo qué otro está leyendo al mismo tiempo.