Todo esto comenzó cuando estaba buscando una forma de probar la conformidad de JavaScript en mi página web, como el Validador HTML W3C . No he encontrado uno todavía. Hazme saber si sabes de alguna ...
Busqué la página oficial de JavaScript y encontré ECMA Script . Estas personas han estandarizado un lenguaje de secuencias de comandos (¡ya no tengo ganas de llamarlo JavaScript!) Y lo llamaron ECMA-262 ( Wikipedia ). Su último trabajo es la Edición 5.1
JavaScript fue desarrollado por Mozilla Corporation y su última versión estable es 1.8.5 ( ver esto ) que se basa en la edición 5.1 de ECMA
La página de Wikipedia vinculada menciona dialectos. JavaScript 1.8.5 de Mozilla aparece como un dialecto junto con JScript 9 (IE) y JavaScript ( V8 de Chrome [ Wiki ]) y muchos otros. ¿Debo entender que JavaScript 1.8.5 es un derivado del ECMA-262 y SpiderMonkey [ Wiki ] es un motor que lo ejecuta? ¿Y Chrome tiene su propio dialecto y el motor V8 es el programa que lo ejecuta?
Con todos estos dialectos basados en ECMA-262, lo que ya no puedo entender es "¿Qué es JavaScript "? ¿Hay algún lenguaje de script de navegador cruzado? ¿Los diferentes implementadores se unen para acordar la compatibilidad cruzada del dialecto? ¿Es este esfuerzo ECMA?
fuente
Respuestas:
Casi todos los lenguajes maduros están definidos por una especificación, y los compiladores o intérpretes intentan seguir el estándar definido en esa especificación. Pero muy raramente tienen éxito, a menos que el autor del lenguaje defina el estándar.
Puede encontrar el estándar C ++ 2003 , la especificación C # 4 , la especificación Java 7 y muchos más en línea. Muchos de estos tienen números de estandarización ECMA o ISO. Estas son solo organizaciones con las que puede registrar un estándar y hacerlo más oficial.
Históricamente, Ruby ha hecho las cosas de manera un poco diferente, teniendo un conjunto ejecutable de pruebas como especificación . Entonces, si desea escribir un intérprete y llamarlo Ruby estándar, solo tenía que crear un intérprete que pasara todas esas pruebas. Pero incluso Ruby es probable que se convierta en una especificación más formal con el tiempo.
Javascript no es diferente, excepto posiblemente en la forma en que ha evolucionado.
Javascript fue creado por primera vez por Netscape. Lo llamaron LiveScript, pero se parecía a Java y llegaron a un acuerdo con Sun por el nombre, lo que benefició tanto a la comercialización de Netscape como a Java. Microsoft tenía VBScript y (por razones probablemente perdidas por conjeturas) básicamente copió Javascript, pero el nombre era propiedad de Sun, por lo que descaradamente lo llamaron JScript.
Pero JScript, aunque era muy similar a Javascript en la sintaxis, hizo un gran uso de COM, por ejemplo, IE5 y 6 instanciaron un objeto XMLHttpRequest usando
new ActiveXObject("Microsoft.XMLHTTP");
.Y así, nacieron paralelos, similares pero también diferentes "dialectos" de Javascript. Con el tiempo, varios grupos que poseen navegadores con menos participación de mercado que IE han intentado estandarizar el idioma, y durante años Microsoft se resistió. Hasta V8.
V8 fue rápido. Estableció un nuevo estándar de mercado. Hizo que todo lo demás pareciera pobre.
Y, a través de varios casos antimonopolio contra Microsoft, IE estaba perdiendo participación de mercado. De repente, a Microsoft le interesaba apoyar la estandarización. Todavía no estamos allí, pero está en el camino correcto.
Mientras tanto, V8 era de código abierto, lo que permitió a la gente a empezar a pensar nuevos usos para un analizador Javascript rápido, como Node.JS .
Pero, para volver a su pregunta: ¿Qué es Javascript? Es el nombre común (y original) de ECMAScript, una especificación para un lenguaje prototípico que se usa comúnmente, pero no exclusivamente, para navegar y manipular el modelo de objeto de dominio en una ventana.
ECMA-262 es solo la definición estándar, como ECMA-334 es la definición estándar para C #. ECMAScript fue el único nombre en el que todas las partes interesadas podían ponerse de acuerdo, en el '99, cuando se escribió ECMA-262.
fuente
Javascript es una implementación comúnmente utilizada de ECMAScript. Es una situación muy similar a la familia Scheme . En Scheme, tiene una especificación altamente formalizada. La versión actual es R6RS, aunque R5RS es, con mucho, el estándar más comúnmente implementado a partir de esta publicación. Las implementaciones están más dispersas que las de ECMAScript debido a la edad y las filosofías generales de Scheme.
Javascript es común ahora en gran parte debido al crecimiento explosivo en la participación de mercado tanto de Firefox de Mozilla como de Chrome de Google. Originalmente se estableció con Netscape Navigator, que finalmente se convirtió en el navegador Mozilla y luego en Firefox (y Iceweasel si corres con la multitud de Scheme).
Ahora aquí es donde se pone un poco incierto. La mayor parte del rendimiento de Javascript proviene del analizador y el motor que lo ejecuta. Aquí es donde las diferencias reales entre los navegadores se hacen evidentes. Spidermonkey ejecuta Javascript de manera diferente que V8. Javascript todavía tiene puntos difíciles como la falta de una biblioteca completamente común, aunque eso se está trabajando.
Entonces, si Javascript fuera C ++, entonces ECMAScript sería el C ++ 11, con UNIX y G ++ siendo el más cercano al "estándar", mientras que C ++ para .NET y Objective C ++ se encuentran mucho más lejos en la forma en que Actionscript lo hace desde ECMAScript
fuente