Pensamientos computables - www.pensamientoscomputables.com
8

Los rebeldes emoticonos del Messenger

Publicado el: 02/07/2010
Emoticonos MSN
En esta entrada voy a hablaros de un fallo por el que Bill Gates debería avergonzarse, fustigarse y despedir a alguno de sus ingenieros. Un error que impide a los usuarios poner emoticonos fácilmente en la aplicación de chat más utilizada, el Microsoft Messenger.

Messenger tiene una funcionalidad que consiste en añadir imágenes cómo emoticonos y asociarles una cadena de texto que hará aparecer el emoticono cada vez que escribas dicha cadena. Hasta aquí todo bien, pero supongamos que tenemos guardados los dos siguientes emoticonos con el texto asignado que aparece al lado:

Emoticono MSN ^^

Emoticono MSN ^^ U

Ahora si queremos escribir el emoticono Emoticono MSN sin tener que buscarlo en el panel de iconos, tendríamos que escribir "^^U", pero ¡oh!, ¡sorpresa!, en su lugar obtenemos "Emoticono MSNU". Es decir, muestra "^^" como Emoticono MSN y la "U" la ignora, haciendo imposible escribir directamente emoticonos cuya cadena de texto asociada tenga un prefijo que contenga la cadena asignada a algún otro emoticono.

Lo que hace el programa es transformar el texto en un emoticono tan pronto como encuentra un emoticono asociado. Este comportamiento es, obviamente, un error garrafal para cualquiera que haya programado alguna vez un analizador léxico.

Todos los compiladores, intérpretes, traductores o cualquier otro programa que tenga que trabajar con un lenguaje, ya sea de ordenador o humano, tienen un analizador léxico que sigue el principio de coger siempre la sub-cadena más larga. Todos excepto el analizador léxico del Messenger.

Este principio consiste en no devolver una cadena de texto cómo una palabra del lenguaje (en el caso de Messenger son emoticonos), hasta no haber leído una cadena lo suficientemente larga, como para saber que no estamos leyendo una palabra del lenguaje más larga de lo que creíamos. Pero veámoslo más claramente con un ejemplo:

Supongamos que tenemos un lenguaje en el que "emoticonos" es una palabra y "emoticonosMSN" es otra. Nuestro analizador léxico debe decirnos las palabras del lenguaje que aparecen en el siguiente texto:

emoticonosYahooemoticonosMSN

Para realizar esta tarea ira leyendo el texto caracter a caracter y nos devolverá las palabras encontradas.

Veamos paso a paso cómo funciona un analizador léxico normal (las negritas indican el caracter que estamos leyendo).

Leemos el primer caracter:

emoticonosYahooemoticonosMSN

Seguimos leyendo hasta que encontramos la palabra "emoticonos" que pertenece al lenguaje, pero no la devolvemos, simplemente la guardamos temporalmente:

emoticonosYahooemoticonosMSN

Leemos el siguiente caracter y como "emoticonosY" no es una palabra del lenguaje, devuelve la palabra que habíamos guardado temporalmente, que era "emoticonos".

emoticonosYahoosemoticonosMSN

El analizador va rechazando los siguientes caracteres que va leyendo hasta que encuentra el siguiente caracter por el que empieza otra palabra del lenguaje:

emoticonosYahooemoticonosMSN

Al cabo de varios caracteres más, encontramos de nuevo la palabra "emoticonos". De nuevo el analizador no lo devuelve (el del Messenger si lo haría), sólo nos la guardamos temporalmente.

emoticonosYahooemoticonosMSN

Llegamos al final del texto y el analizador ha encontrado la palabra "emoticonosMSN", por lo tanto desecha la palabra "emoticonos" que tenía guardada y devuelve "emoticonosMSN".

Así que tenemos que el resultado que obtendría cualquier analizador léxico sería "emoticonos" y "emoticonosMSN", mientras que el absurdo analizador léxico de Messenger devolvería la palabra "emoticonos" dos veces.

Espero que os haya quedado claro este ejemplo, pero tener en cuenta que es una explicación superficial y sesgada de lo que es en realidad el algoritmo. Si alguien quiere implementarlo debería aprender programación, autómatas finitos y leerse parte del libro "Compiladores. Principios, técnicas y herramientas", también conocido en el mundillo como "El libro del dragón".

Pensamientos (4): Ver comentarios Comentar
Categorías: ,

Comparte:

Copia y pega en tu página:

Comparte
Escribe tus pensamientos computables

Respondiendo a los siguientes comentarios:

Para comprobar que eres un humano responde correctamente:

Esta pregunta no me gusta, ¡cambialá!

Ninguno de estos datos será almacenado.

(Escribe el correo electrónico)

Campo obligatorio.

(Escribe el correo eléctronico o los correos electrónicos separados por comas)

Campo obligatorio.

Para comprobar que eres un humano responde correctamente:

Esta pregunta no me gusta, ¡cambialá!

Pensamientos
Tobal
Fecha: 02/07/2010 Hora: 16:32:06

Si que es verdad!

Vaya tela, y lo más fuerte es que por muchas actualizaciones no lo quitan...¿Se puede quitar el problema con una actualización verdad?

"Bill Gates debería avergonzarse, fustigarse y despedir a alguno de sus ingenieros"

xDDDDDDD

Daialian
Fecha: 02/07/2010 Hora: 19:50:21

A mi me frustra ( o me fistra, como digo ultimamente xD) cuando intento poner un emoticono, y por ese puto problema no puedo hacerlo y me sale otro que yo no quiero.

Diselo a Bill Gastes cuando comaís el domingo xDDDDDDDDDDDDDDDDDDDDDDDDD

Linkusb
Fecha: 03/07/2010 Hora: 11:41:57
No se a que espera Microsoft para contratarte Sake, los programas funcionarian mucho mejor solo con que te pidiesen tu opinión antes de sacarlos al mercado. Entre esto y el mal diseño del iPhone, nos estan ofreciendo una mala experiencia tecnológica a los usuarios. Todo esto me hace preguntarme si estas empresas tendrán algún Ingeniero en Informática en nómina.
Le responde 1 comentario Ver comentario
Respondiendo a 1 comentario Ver comentario
Anónimo
Fecha: 20/07/2010 Hora: 11:56:11

Hay que ver las cosas que os preocupan, con la cantidad de bugs importantes y fallos de seguridad que tiene las creaciones de Microsoft,...

¿¿Como pongo emoticonos en este post??

Daiatron en Google+