Estás mirando la versión 3 de mi sitio web, para ver la última versión por favor anda a juque.cl

juque

Juan Pablo Aqueveque: Ingeniero de Sistemas, Diseñador y Desarrollador Web que reside en Temuco, Chile.

ECMAScript

Publicado por Juan Pablo el 24.Ene.2007 | Comentarios (6)

En 1992 el mundo era testigo de:

CEnvi: el pionero

Movidito año ¿eh?. Ese mismo año una empresa llamada Nombas comenzó a desarrollar un lenguaje de programación del tipo script (interpretado) llamado C-minus-minus (Cmm, C-menos-menos). Éste lenguaje script debía ser lo suficientemente poderoso como para construir macros pero además similar a C (C++) para que fuera fácilmente aprendido por los desarrolladores. El lenguaje script fue empaquetado dentro de un shareware llamado CEnvi. Pero Nombas finalmente le cambio el nombre a Cmm por sonar demasiado “negativo” y además la letra “C” “atemorizaba a la gente”, el nombre escogido fue ScriptEase (fuente). Cuando Netscape Navigator se pupularizó Nombas desarrolló una versión de CEnvi que podía incrustarse en una página web. Aquello representó el primer script usado del lado del cliente (client-side) en la WWW. Así comenzó todo.

Yo también quiero dijo Netscape

En aquella época el tiempo de retardo para que una página respondiera a un “Enviar” (submit) era de aproximadamente 30 segundos, por si no lo recuerdas se navegaba por la red a la diabólica velocidad de 28.8 Kbps, es por eso que se hacía necesario un lenguaje del lado del cliente para ahorrarse todos estos tiempos de espera. Netscape rápidamente entendió esto y comenzó a desarrollar un lenguaje script. Brendan Eich trabajaba en Netscape y comenzó el desarrollo de LiveScript, el cual sería incluido en la versión 2.0 de Netscape Navigator. Netscape se asoció con Sun Microsystems para completar el desarrollo de LiveScript a tiempo para el lanzamiento de Netscape Navigator 2.0 (marzo de 1996). Justo antes del lanzamiento de la versión 2.0, Netscape le cambia el nombre de LiveScript y pasa a llamarse JavaScript y así aprovechar los dividendos de la palabra de moda por esos tiempos: Java (ahora es 2.0). Fue un error llamarlo así porque Java y JavaScript se parecen bastante poco. En algún grupo de discusión de Usenet alguna vez se publicó: Java es a Javascript lo que un auto es a una carpeta, bien poco creativa la comparación en todo caso.

La versión 3.0 de Netscape Navigator trajo consigo la versión 1.1 de Javascript, en ese mismo tiempo Microsoft lanzaba la versión 3.0 de Internet Explorer (agosto de 1996) pero que tenía su propio lenguaje script, lo llamaron JScript para no tener problemas de licencias con Netscape. Microsoft como siempre... copiando.

¿Qué tal si remamos todos para un mismo lado?

Recapitulando, nuestro escenario ahora tenía 3 actores:

Era de perogrullo, la industria necesitaba de un estándar para su sintáxis o características; las tres versiones sólo hacían resaltar este problema.

En 1997 Javascript 1.1 fue enviado a European Computer Manufacturers Association (ECMA) como una propuesta. El comité técnico #39 fue asignado a “estandarizar la sintaxis y semántica del lenguaje script de propósito general, independiente de la plataforma y vendedor neutral”. El comité lo componían desarrolladores de Netscape, Sun, Microsoft, Borland, y otras compañías con intereses en el futuro del scripting, el TC39 se reunió por meses hasta publicar el ECMA-262, un estándar que definía un nuevo lenguaje script llamado ECMAScript.

El año siguiente, la —10 dolares a que no puedes pronunciar esto de corrido—International Organization for Standardization and International Electrotechnical Commission (ISO/IEC) también adoptó ECMAScript como un estándar (ISO/IEC-16262). Desde esa fecha, los navegadores han intentado con diversos grados de éxito y fracaso usar ECMAScript como la base de sus implementaciones Javascript.

Imagina que tengo 10 años: ¿Qué demonios es ECMAScript?

Simple (me encanta decir eso), ECMAScript raya la cancha, establece las reglas para la implementación de un lenguaje script, es decir, define todas las propiedades, métodos y objetos. Cuando escuchas la palabra “lenguaje basado en ECMAScript” piensa de inmediato que la línea base de funcionalidad de aquel lenguaje es el estándar ECMA gestado en 1997.

ECMAScript describe:

¿Qué aplicaciones contienen ECMAScript? — entre paréntesis el nombre de la implementación:

¡Un momento!, ¿esto quiere decir que mi súper código ActionScript funcionaría igual en mi página web?. ¡No!, cada implementación de ECMAScript contiene sus propias librerías, esto significa que no necesariamente deben funcionar en cualquier ambiente que interprete ECMAScript, aunque se puede crear cierta compatibilidad.

Java-Java-Javascript

Alguna vez lo comenté en este blog, cuán ave Fénix Javascript a resurgido de sus cenizas, hoy más y más desarrolladores lo aprenden, pero si lo vamos a aprender hagámoslo bien, hagámoslo de manera estándar, estudiando ECMAScript... su corazón.

Enlace Permanente, Comentarios (6), Publicada en: Estándares | JavaScript

Comentarios

1. cavorite
26.Ene.2007

Muy buena reseña histórica, gracias por publicarla.

Estoy de acuerdo cuando dice que programar bien en JavaScript hay que conocer bien el lenguaje como tal, antes de fijarse en las librerías adicionales (como el DOM). Creo que este desconocimiento ha tenido consecuencias un poco desafortunadas.

En primer lugar, muchas veces se lo considera un lenguaje "malo", argumentando que no es orientado a objetos o que no maneja herencia, cuando no es cierto, sin embargo la manera de hacer esto es diferente a la tradicional, léase la manera como se hacen las cosas en Java.

Por otro lado, a veces se culpa al lenguaje de problemas relacionados con las implementaciones y con las librerías adicionales. Esto se presenta, sobre todo, con el diferente manejo le dan los navegadores al DOM.

Por último, noto que muchas de las librerías que buscan "corregir" las fallas del lenguaje y hacer más fácil la programación, introducen más problemas porque no siguen las convenciones del lenguaje. Esto ocurre con Prototype (por lo menos hasta la versión 1.4), que en lugar de utilizar el mecanismo de prototipos para la definición de objetos, define funciones para crear clases y manejar la orientación a objetos con ellas. Aunque es interesante que un lenguaje permita utilizar múltiples paradigmas, en este caso creo que implementar un sistema de clases crea más confusión e introduce patrones que no son convenientes.

Bueno, para terminar dejo un par de enlaces que buscan reivindicar a Javascript presentándolo tal como es:

http://javascript.crockford.com/javascript.html http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/

2. voxd
26.Ene.2007

Me debes 10 dolares xD

Buena entrada ;)

3. Vikingo
26.Ene.2007

Hey, yo puedo decir "International Organization for Standardization and International Electrotechnical Commission (ISO/IEC)" de corrido en correcto ingles... como cobro mis USD 10?

jejeje :)

saludos, buen articulo. Siempre he querido aprender JavaScript y nunca me he dado el tiempo, a ver si este año lo puedo hacer

4. juan pablo
26.Ene.2007

¡demonios!, tengo a dos personas que han dicho bien "International Organization for Standardization and International Electrotechnical Commission", ¿si se tiran al cachi pun muchachos?

5. voxd
26.Ene.2007

ok, que vikingo tire primero :D

6. Guillermo R.
29.Ene.2007

Excelente reseña, la verdad, ni siquiera estaba al tanto de un porcentaje aceptable de lo que publicas; sólo alguna vez leí sobre el origen de Javascript y alguna otra cosilla en la wikipedia.

Por cierto, me debes U$10, en efectivo ojalá :)

Saludos.