O que é JavaScript, realmente?

95

Tudo isso começou quando eu estava procurando uma maneira de testar minha página da web para conformidade com JavaScript, como W3C HTML Validator . Eu não encontrei um ainda. Então me avise se você souber de algum ...

  1. Procurei a página oficial do JavaScript e encontre o Script do ECMA . Essas pessoas padronizaram uma linguagem de script (eu não sinto mais como chamar isso de JavaScript!) E a chamaram de ECMA-262 ( Wikipedia ). Seu trabalho mais recente é a edição 5.1

  2. O JavaScript foi desenvolvido pela Mozilla Corporation e sua última versão estável é a 1.8.5 ( veja isto ) que é baseado na edição 5.1 do ECMA

  3. A página da Wikipédia ligada menciona dialetos. O JavaScript 1.8.5 da Mozilla está listado como um dialeto, juntamente com JScript 9 (IE) e JavaScript (do Chrome V8 [ Wiki ]) e muitos outros. Devo entender que o JavaScript 1.8.5 é um derivativo do ECMA-262 e do SpiderMonkey [ Wiki ] é um mecanismo que executa isso? E o Chrome tem o seu próprio dialeto e o motor 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 linguagens de script realmente cruzadas? Os vários implementadores se reúnem para concordar com a compatibilidade cruzada do dialeto? Esse esforço é feito pela ECMA?

    
por Lord Loh. 22.10.2012 / 22:11
fonte

2 respostas

96

Quase 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 , o Especificação do C # 4 , o Especificação do Java 7 e muito mais on-line. 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.

Ruby historicamente tem feito coisas um pouco diferentes, tendo um conjunto executável de testes como uma especificação . Então, se você quer escrever um interpretador e chamá-lo de Ruby padrão, você só precisa criar um interpretador que passe por todos esses testes. Mas até Ruby é provável que se torne uma especificação mais formal eventualmente.

O JavaScript não é diferente, exceto possivelmente da maneira como evoluiu.

O Javascript foi criado pela Netscape. Eles o chamaram de LiveScript, mas ele parecia semelhante ao Java e eles fizeram um acordo com a Sun sobre o nome, que beneficiou tanto o marketing do Netscape quanto o Java. A Microsoft tinha o VBScript e (por razões provavelmente perdidas para a conjectura) basicamente copiava o Javascript, mas o nome era de propriedade da Sun, então eles o chamavam descaradamente de JScript.

Mas o JScript, embora seja muito semelhante ao JavaScript na sintaxe, fez muito uso do COM - por exemplo, IE5 e 6 instanciam um objeto XMLHttpRequest usando new ActiveXObject("Microsoft.XMLHTTP"); .

E assim, paralelos, semelhantes, mas também diferentes "dialetos" de Javascript nasceram. Com o passar do tempo, vários grupos que possuem navegadores com menos participação de mercado do que o IE tentaram padronizar o idioma, e por anos a Microsoft resistiu. Até V8.

V8 foi rápido. Estabeleceu um novo padrão de mercado. Isso fez tudo parecer ruim.

E, através de vários processos 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 chegamos lá, mas está no caminho certo.

Enquanto isso, o V8 era de código aberto, o que permitia que as pessoas começassem a pensar em novos usos para um analisador de 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 comumente, mas não exclusivamente, usada para navegar e manipular o modelo de objeto de domínio em um broswer.

A ECMA-262 é apenas a definição padrão, como o ECMA-334 é a definição padrão para C #. ECMAScript era o único nome que todas as partes interessadas poderiam concordar, em 99, quando o ECMA-262 foi escrito.

    
por 23.10.2012 / 01:37
fonte
23

Javascript é uma implementação comumente usada do ECMAScript. É uma situação muito parecida com a família Scheme . No Scheme, você tem uma especificação altamente formalizada. A versão atual é R6RS, embora o R5RS seja de longe o padrão mais comumente implementado a partir deste post. As implementações são mais dispersas do que as do ECMAScript, devido à idade do Scheme e filosofias gerais.

O Javascript passa a ser comum agora em grande parte devido ao crescimento explosivo na participação de mercado do Mozilla Firefox e do Google Chrome. Ele ganhou uma posição inicial com o Netscape Navigator, que acabou se transformando no navegador Mozilla e depois no Firefox (e Iceweasel, se você correr com o público 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. É aí que as diferenças reais entre os navegadores se tornam aparentes. Spidermonkey corre Javascript de forma diferente do que o V8 faz. 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 ++, então ECMAScript seria o C ++ 11, com UNIX e G + + sendo os mais próximos de "padrão", enquanto C ++ para .NET e Objective C ++ ficavam mais longe do caminho que o Actionscript faz do ECMAScript

    
por 23.10.2012 / 01:07
fonte