Por @Alvy — 16 de junio de 2014

Zip Files All The Way Down

En esta historia de 2010, titulada Zip Files All The Way Down (Vía Kottke) Russ Cox de los Bell Labs cuenta cómo indagar sobre el curioso problema de si es posible crear un fichero .zip que se contenga a sí mismo, de modo que al descomprimirse se genere otro archivo .zip exactamente igual y que por tango contenga otro archivo .zip que… Bueno, es fácil decirlo, pero no es tan fácil explicarlo.

El trabajo es muy interesante porque habla de los programas que autorreproducen, emplea diferentes lenguajes de ejemplo y toca muchos otros temas. De este mismo estilo son los quines, que describió Ken Thompson en una de sus charlas: programas en un lenguaje concreto que se imprimen a sí mismo al ejecutarlos. (En el lenguaje HQ8+ ese programa es simplemente Q; en Basic sería 10 LIST).

El caso es que se puede crear un .zip/gzip de este estilo, aunque dista de ser trivial. De hecho es un buen ejercicio intentar encontrar el código exacto sin mirar la solución – y hay muchos detalles sobre cómo funciona la compresión Lempel-Ziv de los .zip.

El resultado es una especie de .zip bomba que de expandirse una y otra vez llegaría… hasta el infinito. Por suerte los programas descompresores son más listos que eso y no caen en la trampa intentando abrirlos de forma recursiva más de un nivel (al menos la mayoría así lo hacen).

Compartir en Flipboard Publicar / Tuitear Publicar