Una de las preguntas que más respuestas falsas tiene en la redes es la explicación de cómo se logran los archivos de compresión, comenzando porque los que pueden responder la pregunta, no logran hacerlo de tal forma que lo comprenda el público en general, casi siempre conlleva términos complicados que presupone ciertos conocimientos técnicos.
La mala noticia es que tienen razón, casi todos los términos necesarios para explicar la compresión de un archivo requiere de conocimientos que se adquieren en la enseñanza secundaria. De ahí, a desempolvar esos conocimientos hay un tramo relativo.
El presente artículo pretende acercarse al problema de la compresión con un mínimo ejemplo y que hace referencia a uno de los tantos métodos que con el tiempo y el ingenio se han ido perfeccionando, pero, creo, es un buen modo de colocar el término “compresión de archivos” dentro de características de archivos menos mistificados.
He leído todo tipo de subterfugio que se proponen para este tipo de tarea, no voy a enumerarlos ni a ofrecer certezas o defunciones respecto de los mismos, sino que usaré el sentido común para ofrecer una posibilidad y comprender la idea que se usa en la compresión de archivos.
En principio es necesario conocer lo que es un binario, que para muchos es común contestar: es una base de número compuesto por dos caracteres: el cero y el uno.
Y la respuesta es correcta, sin embargo es un concepto cuyas derivaciones van más allá, para comenzar, es el idioma de las estrellas. Pues en toda parte del universo con el aparato detector adecuado: los ojos, las frecuencias, en todo el universo hay estrellas que se encienden o se apagan, por ello dicen que si hay extraterrestres el lenguaje primario con que nos contactaran será el binario.
Mencioné la palabra lenguaje porque son equivalentes de la siguiente manera, imagine que a cada letra de este artículo usted le asigna un número, y que cada número es diferente si la palabra es diferente, de ese modo obtiene usted una compresión sencillísima, acaba de fabricar un archivo que puede ser de mejor tamaño que es que tendría si tiene la conversión en palabras. Lo único que usted necesita es una operación que consiste en crear un diccionario de equivalencias entre número y palabras, observe, que no estamos hablando de letras, se habla de palabras; necesitará luego un archivo que retorne el significado entre números y palabras y ya está. Tiene el archivo original.
Ese número al que se convierte cada palabra, generalmente se expresa en binario, porque las computadoras, como las estrellas pueden manejar algo que se enciende y algo que se apaga.
A la operatoria de convertir palabra a número la llamamos algoritmo de conversión y ya tenemos un compresor bastante competente, parece fácil y de hecho lo es, con un poco más de sofisticación es el típico árbol de conversión que usan algunos algoritmos de encriptación conocidos, el truco está en que nunca se sabe cual es el número elegido para una conversión de palabra, este número, puede ser al azar, o tan complicado como se quiera, puede ser incluso un número que a su vez es convertido en otra cosa.
Sin embargo este método de conversión nos deja un poco al azar del tamaño ya que de qué sirve usar un número de cuatro cifras para convertir por ejemplo la conjunción “y”, sería poco provechoso. Es por ello que antes de hacer esa conversión conviene analizar un poco el texto a convertir y es en ese momento que conviene saber cuántas repeticiones de una palabra de pocas letras se encuentran en el texto y asignarle a esas los números más bajos, de ese modo nos aseguramos que no ocurrirá un desbarajuste de ese tipo.
Es muy simple hasta ahí, si se tiene en cuenta que los algoritmos de compresión no se han hecho para proteger la información sino para hacerla más manejable en cantidad de bytes, pues con una conversión tan simple no es posible tratar con información sensible como la información que manejan ciertas empresas sobre sus clientes o los bancos, los cuales, por supuesto utilizan otros procesos para encriptación que no es de lo que se trata este artículo.
En otras palabras, este es un proceso que necesita de un algoritmo que detecte las palabras de menor número de letras, y que convierta las palabras en un número, ese número no deberías ser mayor que el número de letras que contenga las palabras, luego de lo cual requiere de un algoritmo de desencriptación que permita volver al archivo original, algunos llaman a esta última actividad reingeniería de proceso.
A modo de anécdota quiero concluir que todos estos procesos de compresión de archivos se realiza mediante el uso de fórmulas y modelos matemáticos y que en relación al hardware de una máquina, todos los procesos matemáticos se realizan dentro de la unidad lógica aritmética de la máquina que es un chip especial generalmente llamado co-procesador que es “compañero” del chip principal y que tiene la facultad de ejecutar operaciones matemáticas en un tiempo muy inferior al normal del chip en el orden de aproximadamente entre tres y seis ceros superiores en velocidad dependiendo de la generación de la máquina de la que se esté hablando.
En otras palabras los compresores y decompresores funcionan con la velocidad que lo hacen por varias razones, una es la calidad del hardware, otra la calidad del algoritmo de compresión.
En un próximo artículo comentaré un poco más sobre los binarios que ofrecen otras técnicas de compresión interesante y más cercana a la realidad actual, ya que el actual artículo responde a una pregunta que ha surgido durante los cursos en DataGestion cuando se habla de la compresión de archivos.
También quedará para una próxima entrega el comprender la diferencia entre un archivo comprimido y uno compilado que por alguna travesura de la masificación de la información muchos toman como lo mismo, siendo que son procesos completamente diferente aunque usen algunas técnicas en común para resolverse.
El conocimiento de las técnicas con compresión son un proceso interesante para el diseño de sitios en aspectos que tienen que ver con la carga de los archivos lo más rápido posibles.
La mayoría de los usuarios, sobre todo clientes de diseñadores no se dan cuenta que el hecho de que un sitio contenga una barra de “cargando” es uno de los recursos que espanta a los clientes, generalmente se ven convencidos de que “es necesario” debido al pobre o nada de conocimiento que el diseñador contratado en el manejo de técnicas en referencia al peso de sus archivos.
La mayoría de los clientes de sitios, cree que el buen diseño de un sitio, la estética cuidada o de tecnología Flash conspira contra el contenido del sitio y lo hace difícil de cargar o pesado el archivos, todos esos son conceptos falsos y que no tienen que ver con la tecnología que se use.
Sin ir más lejos al final de este artículo, encontrará un listado de páginas diseñadas en www.anaabregu.com.ar que no tienen ninguna un “cargando”, contienen información desde hace años como por ejemplo www.metaliteratura.com.ar , que con cinco años de información, muchos textos, fotos e incluso videos mantiene la misma performance, y en ningún momento encontrará la página sea lenta.
En otras palabras, el conocimiento de las técnicas de compresión son un interesantes para el uso de las mismas en otros procesos.