sábado, 2 de junio de 2012

LOS VALORES null EN ACTIONSCRIPT 3

Yo creía que a estas santas alturas de la evolución de los lenguajes de programación todo estaba ya más que trillado. La teoría de compiladores que estudiábamos en la Universidad permitía que un autómata programable pasara de un estado a otro al encontrarse con la siguiente entrada. Todo parecía indicar que el autómata tiene que estar siempre en algún estado, aunque dicho estado sea el "estado de error", que puede ser causado por un fallo en la sintaxis o en los valores autorizados de una entrada.

Hoy he descubierto que esto no es cierto para el lenguaje ActionScript 3 (AS3)

En este lenguaje, como en muchos otros, una variable puede tener un valor conocido, o bien un valor null que indica que el valor es desconocido.
Esperaba que un valor null se evaluara a falso en una asignación a una variable booleana.
Esperaba que un valor null se evaluara a falso en una expresión condicional.
Esperaba que un valor null, evaluado a falso, se pudiera comparar con otro valor constante o con otra variable, dando como resultado una falsedad.
...
Esperaba en vano, quizá confiado en los resultados de otros lenguajes como el C.
Y debo admitir que AS3 tiene razón: NO ES EVALUABLE A VERDADERO O FALSO UN VALOR NULO, NO ES ASIGNABLE UN VALOR NULO A UNA VARIABLE LOGICA, NI SE PUEDE CONOCER EL RESULTADO LOGICO DE UNA COMPARACION CON UN VALOR NULO.

Pero, por favor, LOS PROGRAMADORES NECESITAMOS QUE NULL Y SUS COMBINACIONES EN EXPRESIONES LÓGICAS SE EVALUEN A "ALGO", A LO QUE SEA, A NULL, POR EJEMPLO.

Me parece increíble que, al día de hoy, el Flash Player 11 (la última versión) y el plugin para todos* los navegadores se quede parado, sin emitir ningún mensaje de error, cuando se necesita evaluar una comparación con un valor null. No puedo creer que cosas como ésta sucedan hoy en día.

Enfin, paciencia. Ahora que ya lo sé, o mejor dicho, ahora que ya lo sabemos, podremos escribir mejores códigos.

* (he probado con las últimas versiones de Internet Explorer, Firefox y Google Chrome, y algunas otras versiones anteriores de éstos)

No hay comentarios:

Publicar un comentario