Javascrip{filter}t tem um histórico de nomes muito estranho.
Foi lançado pela primeira vez em 1995 como parte do Netscape Navigator, que deu à nova linguagem o nome Livescrip{filtering}t. Um ano depois, para acompanhar o hype da mídia sobre Java na época, o nome foi temporariamente alterado para Javascrip{filtering}t (claro, a relação entre Java e Javascrip{filtering}t é a mesma que a de Lei Feng e Lei Feng Tower – não tem nada a ver com isso)
A piada do noz torto não tem graça nenhuma
Nota do tradutor: A entrada Javascrip{filter}t da Wikipédia descreve essa história com mais detalhes
Em 1996, a Netscape submeteu o Javascrip{filtering}t à ECMA International (Associação Europeia de Fabricantes de Computadores) para padronização, e finalmente finalizou um novo padrão de linguagem, que foi o ECMAscrip{filtering}t. Desde então, ECMAscrip{filtering}t tem sido a base para todas as implementações de Javascrip{filtering}t, embora por razões históricas e de mercado (aparentemente ECMAscrip{filtering}t não é um nome de gosto...... Na realidade, usamos apenas ECMAscrip{filter}t para chamar o padrão, e geralmente usamos Javascrip{filter}t para chamar essa linguagem.
Terminologia:
- Padrão: Um conjunto de regras que definem o que o distingue de outras coisas
- Implementação: A implementação específica/prática prática prática de um padrão
No entanto, os desenvolvedores de Javascrip{filtering}t não se importam muito com isso, porque o ECMAscrip{filtering} não mudou muito nos 15 anos desde seu início, e muitas implementações do mundo real já são muito diferentes do padrão. Na verdade, após o lançamento da primeira versão do ECMAscrip{filtering}t, mais duas versões foram lançadas logo depois, mas desde o lançamento do ECMAscrip{filter}t 3 em 1999, nenhuma alteração foi adicionada com sucesso à especificação oficial por dez anos. Em vez disso, os fornecedores de navegadores estão correndo para expandir suas próprias linguagens, deixando os desenvolvedores web sem escolha a não ser experimentar e dar suporte a essas APIs. Mesmo após o lançamento do ECMAscrip{filter}t 5 em 2009, levou vários anos para que essas novas especificações ganhassem amplo suporte dos navegadores, mas a maioria dos desenvolvedores ainda escrevia código no estilo ECMAscrip{filtering}t 3 e não sentia necessidade de aprender sobre elas.
Nota do tradutor: O rascunho do ECMAscrip{filter}t versão 4 foi abandonado porque era muito agressivo, e o Actionscrip{filtering}t 3.0 da Adobe é a única implementação do ECMAscrip{filtering}t edição 4 (o Flash quase unificou a web)
Em 2012, as coisas começaram a mudar de repente. Há um suporte push to end para versões mais antigas do IE, e é mais viável escrever código no estilo ECMAscrip{filter}t 5 (ES5). Ao mesmo tempo, uma nova especificação ECMAscrip{filtering}t é lançada. Nesse ponto, as pessoas começaram a se acostumar a descrever várias implementações de Javascrip{filtering}t em termos de suporte de versões para a especificação ECMAscrip{filter}t. Esse novo padrão foi originalmente chamado ES. Harmonia. Em 2015, o TC39, o comitê responsável pelo desenvolvimento do rascunho da especificação ECMAscrip{filter}t, decidiu mudar o sistema de definição de novos padrões para uma vez por ano, significando que cada nova funcionalidade pode ser adicionada após a aprovação, ao contrário da especificação anterior ser finalizada apenas após a conclusão completa do rascunho e todas as funcionalidades estarem em regulação. Como resultado, a versão 6 do ECMAscrip{filtering}t foi renomeada para ECMAscrip{filtering}t 2015 (ES2015) antes de ser publicada em junho.
Ainda há muitas novas funcionalidades ou sintaxe do Javascrip{filter}t sendo propostas, incluindo decoradores, async-await e propriedades de classe estática. Eles são frequentemente chamados de ES7, ES2016 ou ES. Depois, mas na verdade só podem ser chamadas de propostas ou possibilidades, afinal, a especificação ES2016 ainda não está completa, e é possível que todas sejam apresentadas, ou nenhuma delas seja apresentada. O TC39 divide uma proposta em 4 fases, e você pode verificar em qual estágio cada proposta está atualmente no site da Babel.
Então, como usamos esse monte de terminologia? A lista a seguir pode ajudar você:
- ECMAscrip{filter}t: Uma linguagem padronizada pela ECMA International e supervisionada pelo comitê TC39. Frequentemente usado para se referir ao próprio padrão.
- Javascrip{filtering}t: O nome mais comum para várias implementações do padrão ECMAscrip{filtering}t. Esse termo não se limita a uma versão específica da especificação ECMAscrip{filtering}t, e pode ser usado para qualquer grau variável de implementação de qualquer versão do ECMAscrip{filtering}t.
- ECMAscrip{filtering}t 5 (ES5): A quinta edição do ECMAscrip{filtering}t, padronizada em 2009. Essa especificação é bastante implementada em todos os navegadores modernos.
- ECMAscrip{filter}t 6 (ES6) / ECMAscrip{filter}t 2015 (ES2015): A sexta edição do ECMAscrip{filtering}t foi revisada e padronizada em 2015. Esse padrão é parcialmente implementado na maioria dos navegadores modernos. Você pode consultar esta tabela de compatibilidade para ver como diferentes navegadores e ferramentas são implementados.
- ECMAscrip{filter}t 2016: A esperada sétima edição da revisão ECMAscrip{filter}t, prevista para lançamento no próximo verão. As características específicas que serão incluídas nesta especificação ainda não foram finalizadas
- Propostas ECMAscrip{filter}t: Propostas de recursos e sintaxe que forem consideradas para inclusão em versões futuras do padrão ECMAscrip{filter}t passarão por cinco etapas: Strawman, Proposal, Draft, Candidate e Finalizada.
Ao longo deste blog, vou me referir à versão atual do ECMAscrip{filtering}t como ES6 (porque é a essa que a maioria dos desenvolvedores está mais acostumada), à especificação do próximo ano como ES2016 (porque, ao contrário do ES6/ES2015, esse nome será usado durante todo o processo de padronização), e a conceitos futuros de linguagem que ainda não foram finalizados ou elaborados propostas ECMAscrip{filtering}t ou Javascrip{filter}t proposal. Farei o possível para acompanhar este artigo em qualquer ocasião que possa causar confusão.