----introduccion-----
Los lenguajes de scripting son geniales para escribir mucho codigo rapidamente. Pero esto se suele conseguir acompañado de tipado suave.
De modo que puedes hacer algo como esto:
normalID = ID;
El problema es que hay muchas formas de escribir eso:
normalId = ID; //Caso A
normalID = (int) ID; //Caso B
normalID = (string) ID; //Caso B
identificadores[normalID] = ID;//Caso C.1
identificadores[normalId] = ID;//Caso C.2
En el caso A, muchos lenguajes no te diran nada, simplemente crearan una nueva variable. Y la correcta normalID no sera nunca actualizada con el valor correcto. Es una muerte silenciosa y crea un bug dificil de encontrar.
El caso B es aun mas sutil. Porque no es lo mismo "0378" que "378". El primero es una cadena, el segundo un entero. Nuestro lenguaje hara uno de los dos. ¿Adivinas cual?. De nuevo se nos pueden colar errores dificiles de encontrar.
El caso C supone que tenemos un array de valores. Podemos meter el valor en el lugar incorrecto, y un lenguaje de estos tampoco se quejara. Otro bug dificil de encontrar.
Pero no todo esta perdido. Muchos lenguajes como PHP o Perl permiten escribir codigo que sea estricto y que genere warnings gordos ante codigo que probablemente sea un error, obligandonos a escribir un codigo mas seguro.
----/introduccion-----
----el estado de los lenguajes de script-----
Yo veo que los lenguajes de script de hoy en dia han conseguido cosas muy interesantes que los compiladores casi consiguieron pero no lograron del todo. Muchos lenguajes de scripting hacen facil escribir codigo multiplataforma. No hay que tener unos conocimientos especiales.
Lenguajes como Perl, PHP y Ruby tienen repositorios de modulos y obtenerlos esta integrado en el lenguaje (CPAN, pear y gems), ademas de las librerias originales que continen casi todo lo que alguien pueda necesitar. Y una prueba de la madurez de los lenguajes de scripting es que sus librerias estan escritas en ellos mismos. Los modulos de perl estan escritos en perl, y los modulos de php en php, etc..
Otra caracteristica de los lenguajes de scripting muy interesante es su modernidad. El que mas y el que menos implementa features de lenguajes serios, por ejemplo la Reflection, OOP con singletons, etc.. (toda clase de sintax sugar). Cosas que no veras en muchos lenguajes clasicos y que pueden ser muy utiles. ( se me ocurre que programar una *Unit aprovechandose de la feature de reflection debe ser casi trivial y quedar automagico )
Pero bueno, ¿Como diria harry el sucio?. Harry diria algo asi como que un lenguaje de script es un lenguaje de script, da igual si se baña con muchisimo jabon, si se friega la piel con piedra pomez o se echa lejia por encima. Incluso aunque se queme la piel con cloro. Un lenguaje de scripting sigue siendo un lenguaje de scripting.
tipado y modo estricto
(Puntos:4, Informativo)( Última bitácora: Viernes, 03 Febrero de 2012, 15:18h )
Los lenguajes de scripting son geniales para escribir mucho codigo rapidamente. Pero esto se suele conseguir acompañado de tipado suave.
De modo que puedes hacer algo como esto:
normalID = ID;
El problema es que hay muchas formas de escribir eso:
normalId = ID; //Caso A
normalID = (int) ID; //Caso B
normalID = (string) ID; //Caso B
identificadores[normalID] = ID;//Caso C.1
identificadores[normalId] = ID;//Caso C.2
En el caso A, muchos lenguajes no te diran nada, simplemente crearan una nueva variable. Y la correcta normalID no sera nunca actualizada con el valor correcto. Es una muerte silenciosa y crea un bug dificil de encontrar.
El caso B es aun mas sutil. Porque no es lo mismo "0378" que "378". El primero es una cadena, el segundo un entero. Nuestro lenguaje hara uno de los dos. ¿Adivinas cual?. De nuevo se nos pueden colar errores dificiles de encontrar.
El caso C supone que tenemos un array de valores. Podemos meter el valor en el lugar incorrecto, y un lenguaje de estos tampoco se quejara. Otro bug dificil de encontrar.
Pero no todo esta perdido. Muchos lenguajes como PHP o Perl permiten escribir codigo que sea estricto y que genere warnings gordos ante codigo que probablemente sea un error, obligandonos a escribir un codigo mas seguro.
----/introduccion-----
----el estado de los lenguajes de script-----
Yo veo que los lenguajes de script de hoy en dia han conseguido cosas muy interesantes que los compiladores casi consiguieron pero no lograron del todo. Muchos lenguajes de scripting hacen facil escribir codigo multiplataforma. No hay que tener unos conocimientos especiales.
Lenguajes como Perl, PHP y Ruby tienen repositorios de modulos y obtenerlos esta integrado en el lenguaje (CPAN, pear y gems), ademas de las librerias originales que continen casi todo lo que alguien pueda necesitar. Y una prueba de la madurez de los lenguajes de scripting es que sus librerias estan escritas en ellos mismos. Los modulos de perl estan escritos en perl, y los modulos de php en php, etc..
Otra caracteristica de los lenguajes de scripting muy interesante es su modernidad. El que mas y el que menos implementa features de lenguajes serios, por ejemplo la Reflection, OOP con singletons, etc.. (toda clase de sintax sugar). Cosas que no veras en muchos lenguajes clasicos y que pueden ser muy utiles. ( se me ocurre que programar una *Unit aprovechandose de la feature de reflection debe ser casi trivial y quedar automagico )
Pero bueno, ¿Como diria harry el sucio?. Harry diria algo asi como que un lenguaje de script es un lenguaje de script, da igual si se baña con muchisimo jabon, si se friega la piel con piedra pomez o se echa lejia por encima. Incluso aunque se queme la piel con cloro. Un lenguaje de scripting sigue siendo un lenguaje de scripting.
----/el estado de los lenguajes de script-----
Re:tipado y modo estricto
(Puntos:1)( http://www.linux-party.com/ | Última bitácora: Miércoles, 03 Junio de 2009, 15:55h )