Con un asterisco (*), marcaré temas que son complementarios—esto no necesariamente indicará mayor dificultad, sino más bien adiciones a los temas actuales, una exploración ligeramente más profunda, etc.
Bien, supongamos que hemos desarrollado lo que creemos que es un algoritmo universal de compras. Lo llamamos “comprar” y describimos las acciones necesarias para comprar “qué comprar” en la tienda “dónde comprar,” teniendo la cantidad de dinero requerida.
Inicialmente, partimos de un algoritmo para comprar leche para pasar a una versión más abstracta del algoritmo.
Pero, ¿qué pasa si le pedimos a alguien que compre una tonelada de cemento? ¿Podrá la persona realizar esta tarea siguiendo nuestro algoritmo? ¿O si le pedimos que compre un coche en un concesionario?
En el primer caso, resulta que la persona no puede físicamente llevar una tonelada de cemento a casa, lo que significa que el algoritmo para comprar leche y pan no funcionará. Esto es lo que es una fuga de abstracción. Al desarrollar el algoritmo, operamos inadvertidamente dentro de un contexto específico sin siquiera darnos cuenta de su existencia.
Para recoger un coche del concesionario después de pagarlo, necesitas tener una licencia de conducir y saber conducir. Una vez más, nuestra abstracción ha tenido una fuga.
Pueden idearse muchos ejemplos de este tipo: todas las compras son livianas individualmente, pero en conjunto, la persona no tendrá suficientes manos para llevarlas, o su masa total excederá su capacidad física. O una sola compra es liviana pero demasiado voluminosa, por lo que no cabrá en el ascensor y la persona tendrá que bajar por las escaleras, etc.
Vocabulario
-
Algoritmo universal
-
Abstracción / Abstracto
-
Fuga de abstracción (Leaky abstraction)
Enlaces útiles
- Un gran artículo de Joel: The Law of Leaky Abstractions