Tudo isso começou quando eu estava procurando uma maneira de testar minha página da Web quanto à conformidade com o JavaScript, como o W3C HTML Validator . Ainda não encontrei um. Então, deixe-me saber se você conhece algum ...
Procurei a página oficial do JavaScript e encontrei o script ECMA . Essas pessoas padronizaram uma linguagem de script (não sinto mais vontade de chamá-la de JavaScript!) E a denominamos ECMA-262 ( Wikipedia ). Seu trabalho mais recente é a Edição 5.1
O JavaScript foi desenvolvido pela Mozilla Corporation e sua última versão estável é a 1.8.5 ( veja isto ), baseada na edição 5.1 da ECMA
A página da Wikipedia vinculada menciona dialetos. Da Mozilla JavaScript 1.8.5 é listado como um dialeto juntamente com JScript 9 (IE) e JavaScript (do Chrome V8 [ Wiki ]) e muito outros. Devo entender que o JavaScript 1.8.5 é um derivado do ECMA-262 e o SpiderMonkey [ Wiki ] é um mecanismo que o executa? E o Chrome tem seu próprio dialeto e o mecanismo V8 é o programa que o executa?
Com todos esses dialetos baseados no ECMA-262, o que não consigo mais entender é "O que é JavaScript "? Existem verdadeiras linguagens de script entre navegadores? Os vários implementadores se reúnem para concordar com a compatibilidade entre dialetos? Esse esforço é ECMA?
fonte
Respostas:
Praticamente todas as linguagens maduras são definidas por uma especificação, e os compiladores ou intérpretes tentam seguir o padrão definido nessa especificação. Mas muito raramente conseguem, a menos que o padrão seja definido pelo autor da linguagem.
Você pode encontrar o padrão C ++ 2003 , a especificação C # 4 , a especificação Java 7 e muito mais online. Muitos deles têm números de padronização ECMA ou ISO. Estas são apenas organizações com as quais você pode registrar um padrão e torná-lo mais oficial.
Historicamente, Ruby fez as coisas de maneira um pouco diferente, tendo um conjunto de testes executáveis como uma especificação . Portanto, se você deseja escrever um intérprete e chamá-lo de Ruby padrão, basta criar um intérprete que passe em todos esses testes. Mas mesmo Ruby provavelmente se tornará uma especificação mais formal eventualmente.
Javascript não é diferente, exceto possivelmente da maneira como evoluiu.
O Javascript foi criado pela Netscape. Eles o chamavam de LiveScript, mas era semelhante ao Java e fecharam um acordo com a Sun sobre o nome, o que beneficiou tanto o marketing do Netscape quanto do Java. A Microsoft tinha o VBScript e (por razões provavelmente perdidas por conjecturas) basicamente copiou o Javascript, mas o nome era de propriedade da Sun, então eles o chamaram de JScript.
Mas o JScript, embora muito parecido com o Javascript na sintaxe, fez muito uso do COM - por exemplo, IE5 e 6 instanciam um objeto XMLHttpRequest usando
new ActiveXObject("Microsoft.XMLHTTP");
.E assim nasceram paralelos, semelhantes, mas também diferentes "dialetos" de Javascript. Com o tempo, vários grupos que possuem navegadores com menos participação de mercado do que o IE tentaram padronizar o idioma e, durante anos, a Microsoft resistiu. Até V8.
V8 foi rápido. Estabeleceu um novo padrão de mercado. Fazia todo o resto parecer pobre.
E, através de vários casos antitruste contra a Microsoft, o IE estava perdendo participação de mercado. De repente, era do interesse da Microsoft apoiar a padronização. Ainda não estamos lá, mas está no caminho certo.
Enquanto isso, V8 foi open-source, o que permitiu que as pessoas começam a pensar-se novos usos para um analisador Javascript rápido, como Node.js .
Mas, voltando à sua pergunta: O que é Javascript? É o nome comum (e original) do ECMAScript, uma especificação para uma linguagem prototípica comum, mas não exclusivamente, usada para navegar e manipular o modelo de objeto de domínio em um broswer.
ECMA-262 é apenas a definição padrão, como ECMA-334 é a definição padrão para C #. ECMAScript era o único nome com o qual todas as partes interessadas poderiam concordar, em 99, quando a ECMA-262 foi escrita.
fonte
Javascript é uma implementação comumente usada do ECMAScript. É uma situação muito semelhante à família Scheme . No esquema, você tem uma especificação altamente formalizada. A versão atual é o R6RS, embora o R5RS seja de longe o padrão mais comumente implementado até agora. As implementações são mais dispersas que as do ECMAScript devido à idade do Scheme e às filosofias gerais.
Agora, o Javascript é comum em grande parte devido ao crescimento explosivo da participação de mercado no Firefox, da Mozilla, e no Chrome, do Google. Ele ganhou uma posição originalmente com o Netscape Navigator, que acabou se transformando no navegador Mozilla e depois no Firefox (e Iceweasel, se você roda com a multidão do Scheme).
Agora aqui é onde fica um pouco arriscado. A maior parte do desempenho do Javascript vem do analisador e do mecanismo que o executa. É aqui que as diferenças reais entre navegadores se tornam aparentes. O Spidermonkey executa o Javascript de maneira diferente da V8. O Javascript ainda tem pontos difíceis, como a falta de uma biblioteca totalmente comum, embora isso esteja sendo trabalhado.
Portanto, se o Javascript fosse C ++, o ECMAScript seria o C ++ 11, com UNIX e G ++ sendo o mais próximo do "padrão", enquanto o C ++ para .NET e o Objective C ++ se situam mais longe, como o ActionScript do ECMAScript
fonte