lunes, 10 de febrero de 2014

¿Has programado algún chiste últimamente?

Programar con gracia, que no es lo mismo que hacer un programa gracioso.

El otro día recibí por WhatsApp un chiste (parece que este medio ha cogido el relevo a las ahora vintage
cintas de Arévalo) que además de hacerme algo de gracia me recordó una situación que puede producirse frecuentemente cuando realizamos un programa en un autómata.

El chiste en cuestión.

- Sara, vengo a traerte la luna.
- ¡Qué bonito eso que me has dicho! ¿Quién eres?
- Soy Joseba, de Carglass

Independiente de la gracia que os pueda hacer, es de agradecer que sea corto ya que no hay nada peor que un chiste largo y que además tenga un final sin gracia (si alguien conoce a Barragán y puede reenviarle el comentario...). En fin, a lo que iba. En el chiste se utiliza el recurso de la polisemia o lo que es lo mismo, cuando una palabra tiene más de un significado.
En un programa de autómata nos encontramos esta situación constantemente ya que un mismo registro puede tener múltiples significados si no le damos un contexto. El contexto en el caso que nos ocupa es fijar el formato de dato que utilizaremos como por ejemplo hexadecimal o ASCII, ya que ese formato es el que dará un sentido concreto al contenido. Es por lo tanto importante que todas las relaciones que se establezcan con ese registro (acceso desde HMI por nombrar alguno) tengan en cuenta ese formato para tener una correcta interpretación del valor.
Si le damos la vuelta a la tortilla podemos hablar de la situación contraría, la sinonimia (diferentes palabras con el mismo significado). Así, en un registro de 16 bits, tanto 000A en hexadecimal, como 0010 en BCD o 10 en ASCII tienen el mismo significado en numeración decimal, el número 10. Como antes, la convención en el formato es capital para interpretar el dato.
Es importante destacar que podemos aprovechar esta situación de sinonimia en nuestro beneficio y utilizar en cada caso el formato que nos sea más ventajoso. Por ejemplo, construir un protocolo de comunicación de variables exclusivamente numéricas basado en un formato hexadecimal será mucho más eficiente en términos de compresión de tramas que basarlo en caracteres ASCII. En un registro de 16 bits podremos guardar un número natural expresado en hexadecimal tan grande como 65535 (FFFF) y en ASCII tan solo llegaremos a 99 (cada caracter ocupa 8 bits). En la práctica eso puede llegar a traducirse en un ahorro económico como en esta solución de comunicación entre estaciones remotas vía GPRS de Panasonic. Aquí, una construcción eficiente de la trama de envío se traduce en la posibilidad de contratar una tarifa de datos M2M de menor capacidad y por lo tanto más económica.
No dejéis por tanto de evaluar si podéis obtener beneficios al decantaros por algún formato de datos. Y sobretodo, dotad de coherencia al proyecto evitando situaciones de polisemia que al final no tendrán ninguna gracia.

Y ahora, para terminar, otro chistecillo relacionado con la temática del post.

En esta vida hay 10 tipos de personas. Las que saben binario y las que no...

No hay comentarios:

Publicar un comentario

cookieassistant.com