Showing posts with label lenguajes tipificados. Show all posts
Showing posts with label lenguajes tipificados. Show all posts
Thursday, July 05, 2012
Mi caso contra Javascript
En los últimos meses, años quizás, se ha dicho que Javascript es algto así como el nuevo BASIC, aludiendo a que en las computadoras de 8 bits el lenguaje más barato, en términos de recursos de máquina, era el intérprete de BASIC. Ahora Javascript, habiendo pasado una buena cantidad de años -y considerando los aances que han habido en lenguajes de programación- bien podría convertirse en el lenguaje de programación que fuese el más usado para un sinfín de tareas sencillas.
De acuerdo a la siempre sabia Wikipedia:
JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico.
Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas, en bases de datos locales al navegador... aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo.
JavaScript se diseñó con una sintaxis similar al C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo Java y JavaScript no están relacionados y tienen semánticas y propósitos diferentes. Todos los navegadores modernos interpretan el código JavaScript integrado en las páginas web. Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del Document Object Model (DOM).
Tradicionalmente se venía utilizando en páginas web HTML para realizar operaciones y únicamente en el marco de la aplicación cliente, sin acceso a funciones del servidor. JavaScript se interpreta en el agente de usuario, al mismo tiempo que las sentencias van descargándose junto con el código HTML.
JavaScript fue desarrollado originalmente por Brendan Eich de Netscape con el nombre de Mocha, el cuál fue renombrado posteriormente a LiveScript, para finalmente quedar como JavaScript. El cambio de nombre coincidió aproximadamente con el momento en que Netscape agregó soporte para la tecnología Java en su navegador web Netscape Navigator en la versión 2003 en diciembre de 1995. La denominación produjo confusión, dando la impresión de que el lenguaje es una prolongación de Java, y se ha caracterizado por muchos como una estrategia de mercadotecnia de Netscape para obtener prestigio e innovar en lo que eran los nuevos lenguajes de programación web.
Pues bien, hace poco decidí echarle un vistazo más serio a Javascript y me hice de un par de libros que empezaran desde cero. Asumiendo que he programado por muchos años y que los lenguajes de programación finalmente comparten los mismos preceptos, no debería sr muy pronunciada la curva de aprendizaje.
Estoy leyendo el libro "Javascript programming for the Absolute Beginner", de Andy Harris, Ed. Prima Tech., y encuentro que francamente no es el mejor para hacer de la programación una disciplina. Veamos algunos ejemplos:
Este primer programa pide un nombre del usuario (del teclado) y pone una ventana saludándolo. Hasta aquí se ve simple y fácil. La expresión:
greeting = "Hi, " + userName + "!!";
"pega" la cadena "Hi, "con el nombre escrito por el usuario y termina pegando la cadena "!!".
Pero veamos cuando trabajamos con números:
Si corremos este programa, hallaremos que al desplegar el programa el total de la cuenta, (asumiendo, por ejemplo, que la comida costó 100 pesos y la propina fue de 15 pesos), el resultado que dará es "10015", lo cual está mal, evidentemente. Resulta que cuando se pone:
var total = meal + tip;
Hallamos que pega ambas cantidades como si fuesen cadenas de caracteres. Pero fíjense que en el caso de la siguiente línea:
var tip = meal * .15;
el sistema entiende que el valor que está en la variable "comida" es un entero y hace el cálculo correctamente.
Dicho de otra manera, Javascript no es un lenguaje que preste atención a la tipificación de variables y esto es en mi opinión un diseño que no promueve una disciplina correcta en el arte de programar. Lo adecuado sería, e incluso el inventor de Pascal, Niklaus Wirth, estaría de acuerdo conmigo es que las variables se identifiquen como de cadenas de caracteres, reales, enteras, etc. Pero no, no pasa esto y entonces hay que adivinar el comportamiento del sistema.
El problema no es el ejemplo, que finalmente se soluciona agregando
//ponemos el valor de la variable 'meal' como un número y
//y no una cadena de caracteres
meal = eval(meal);
sino la cantidad potencial de errores que pueden darse por esta situación. Es francamente ridículo que a estas alturas de los lenguajes de programación tengamos que pasar por este tipo de lenguajes no tipificados. Y por cierto, PHP hace lo mismo.
Subscribe to:
Posts (Atom)


