¿Qué es JavaScript realmente?

94

Todo esto comenzó cuando buscaba una forma de probar mi página web para verificar la conformidad de JavaScript como Validador de HTML W3C . Todavía no he encontrado uno. Así que avísame si conoces alguna ...

  1. Busqué la página oficial de JavaScript y busque Script de ECMA . Estas personas han estandarizado un lenguaje de scripting (¡ya no tengo ganas de llamarlo JavaScript!) Y lo llamaron ECMA-262 ( Wikipedia ). Su último trabajo es la Edición 5.1

  2. JavaScript fue desarrollado por Mozilla Corporation y su última versión estable es 1.8.5 ( vea esto ) que se basa en la edición 5.1 de la ECMA

  3. La página de Wikipedia vinculada dialectos de las menciones. El JavaScript 1.8.5 de Mozilla aparece como un dialecto junto con JScript 9 (IE) y JavaScript (Chrome's V8 [ Wiki ]) y muchos otros. ¿Debo entender que JavaScript 1.8.5 es un derivado de 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 realmente lenguajes de script de navegador cruzado? ¿Los diferentes implementadores se unen para ponerse de acuerdo sobre la compatibilidad cruzada del dialecto? ¿Es este esfuerzo ECMA?

    
pregunta Lord Loh. 22.10.2012 - 22:11

2 respuestas

95

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 rara vez tienen éxito, a menos que el autor del lenguaje defina el estándar.

Puede encontrar el C ++ 2003 standard , el Especificación C # 4 , especificación de 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 de pruebas ejecutables como una especificación . Entonces, si desea escribir un intérprete y llamarlo Ruby estándar, solo tuvo que crear un intérprete que haya superado todas esas pruebas. Pero incluso Ruby es probablemente se convierta en una especificación más formal eventualmente.

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 hicieron un trato con Sun sobre el nombre, lo que benefició tanto a la comercialización de Netscape como a Java. Microsoft tenía VBScript y (por razones probablemente perdidas en conjeturas) básicamente copió Javascript, pero el nombre era propiedad de Sun, por lo que descaradamente lo llamaron JScript.

Pero JScript, aunque es muy similar a Javascript en su sintaxis, hizo mucho uso de COM, por ejemplo, IE5 y 6 crea una instancia de un objeto XMLHttpRequest utilizando new ActiveXObject("Microsoft.XMLHTTP"); .

Y así nacieron "dialectos" paralelos, similares pero también diferentes de Javascript. Con el tiempo, varios grupos que poseen navegadores con menos cuota de mercado que IE han intentado estandarizar el lenguaje, y durante años Microsoft 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 cuota de mercado. De repente, a Microsoft le interesaba apoyar la estandarización. Aún no estamos allí, pero estamos en el camino correcto.

Mientras tanto, V8 era de código abierto, lo que permitía a las personas comenzar a pensar en 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 comúnmente, pero no exclusivamente, utilizado para navegar y manipular el modelo de objeto de dominio en un entorno.

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 que todas las partes interesadas pudieron acordar, en el 99, cuando se escribió ECMA-262.

    
respondido por el pdr 23.10.2012 - 01:37
22

Javascript es una implementación comúnmente utilizada de ECMAScript. Es una situación muy similar a la Scheme family . En Scheme, tienes 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 ahora es común en gran parte debido al crecimiento explosivo en la cuota de mercado de Mozilla Firefox y Google Chrome. Ganó un punto de apoyo originalmente con Netscape Navigator que finalmente se convirtió en el navegador Mozilla y luego en Firefox (y Iceweasel si se ejecuta con la multitud de Scheme).

Ahora aquí es donde se pone un poco peligroso. La mayor parte del rendimiento de Javascript proviene del analizador y del motor que lo ejecuta. Aquí es donde las diferencias reales entre los navegadores se hacen evidentes. Spidermonkey ejecuta Javascript de forma diferente a como lo hace V8. Javascript todavía tiene puntos difíciles como la falta de una biblioteca completamente común, aunque se está trabajando en ello.

Entonces, si Javascript fuera C ++, entonces ECMAScript sería C ++ 11, siendo UNIX y G ++ lo más parecido a "standard", mientras que C ++ para .NET y Objective C ++ se encuentran más lejos en la forma en que lo hace Actionscript desde ECMAScript

    
respondido por el World Engineer 23.10.2012 - 01:07

Lea otras preguntas en las etiquetas