Skip to content

Instantly share code, notes, and snippets.

@leobalter
Last active August 27, 2015 21:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leobalter/0bb35e29f3d39382d3dc to your computer and use it in GitHub Desktop.
Save leobalter/0bb35e29f3d39382d3dc to your computer and use it in GitHub Desktop.

Anotações da palestra feita pelo Leo Balter na QCon do Rio em 2015 sobre o Ecossistema de produção e lançamento de novidades e especificações do JavaScript.

  • Functions are first-class citizens, syntax resembles Java, inheritance is prototypal, and (+””) equals zero.
  • O JavaScript foi criado em 10 dias pelo Brendan Eich em 1995.
  • Quando falamos sobre o JS, nós falamos sobre muitas outras coisas que orbitam em volta da linguagem em si. Como o DOM, NodeJS ou o asm.js
  • Hoje ele passa por um caminho de evolução. Hoje ele ainda é feito por um grupo chamado Ecma. Que é como o ISO, onde eles criam padrões e o JS é feito se baseando nessa padronização.
  • O ES6 vem com muitas novidades. Algumas coisas principais: promises, generators, proxies, reflect, arrow functions, rest parameters, default parameters, class, Template
  • O ES7 vai trazer outras funcionalidades como async, SIMD, async generators
  • O ES7 pode desembarcar em 2016. Não vai ser tão agressivo quanto o ES6, mas a ideia é trazer as novidades em uma velocidade melhor.
  • As funções são cidadãos de primeira classe no JS.
  • Hoje o JS tem muitos pequenos problemas que o ES6 resolve. Como por exemplo a perda do contexto de escopo, definir um valor padrão de parâmetros usados nas funções
  • O ES6 não cria novos contextos de escopos. Ela mantém o mesmo escopo dentro de todas as funções de um script de mesmo contexto
  • Os generators são mais que funções simples, elas permitem uma forma melhor de trabalhar com recursividade.
  • Com a aparição do NodeJS, a parte de criação de código assíncrono se tornou um ponto muito importante, além da execução de código apenas no browser.
  • Com o ES7 teremos funções assíncronas, onde a runtime da linguagem faz a função realmente funcionar de forma assíncrona.
  • Mas isso não torna o JS multi-thread.
  • A manipulação de strings no JS eram horríveis. Agora temos as Templates Strings, usando a crase.
  • Para o @leobalter, uma das maiores mudanças foi as template strings
  • Tudo isso foi feito pelo TC39, responsável pelo Standard ECMA-262. EcmaScript 2015 Language Specification
  • O Brendan Erich continua liderando o grupo que está produzindo esses padrões
  • http://tc39.github.io/process-document
  • O passo 0 é a captação de Ideias. onde eles debatem o que é importante, tem ideias de novidades e etc.
  • O passo 1 são as Propostas. Onde apresentam casos, descrição do formato dessa ideia, identificação de desafios, onde um representando da ideia se apresenta, dando exemplos.
  • Passo 2: Rascunhos. Descrevendo precisamente a sintaxe de semântica utilizando o idioma formal da especificação. Texto inicial da especificação.
  • Pensa numa linguagem formal. Mais formal que documentos de advogados.
  • Mas é esse texto que vai servir como base para todo o processo de criação e oficialização.
  • Passo 3: Candidato. Indica que outros ajustes precisam de feedback de implementações e usuários.
  • Nesse momento é sugerido que as pessoas implementem e experimentem a especificação para ver se tudo está correto.
  • Passo 4: Final. Indica que a adição está pronta para inclusão como um padrão formal do EcmaScript. Aqui são passados por testes de aceitação e implementação compatíveis.
  • os testes para validar as especificações do Ecma são bem complicados. Mesmo se o teste seja bem simples de aplicar, existe todo um processo de explicação sobre o que aquele teste está validando, porque ele é necessário.
  • O Ecma6 não está 100% implementado. Mas os browsers estão adotando em boa velocidade. Mesmo assim, eles dependem dos testes para criar as implementações.
  • E o Edge é o browser que mais tem suporte ao ES6.
  • Mas todas as implementações dos browsers tem erros de implementação. São MUITOS erros de suporte.
  • O babel é um transpile. Ele tem erros de implementação. Eles não usam os Tests262. Mesmo assim ele é uma das melhores opções.
  • A Microsoft tem trabalho no TypeScript, que está interpretando o ES6, fazendo a mesma coisa que o Babel.
  • O JSHint é liderado por duas pessoas que estavam no Test262.
  • Eles tomaram uma decisão de dar suporte ao ES6 somente para as coisas que estão do estágio 2 para frente.
  • As novidades que estão em estágios anteriores podem ainda mudar muito até serem lançadas.
  • http://github.com/addyosmani/es6-tools
  • O Ember usa ES6. Usando o Babel para fazer o Transpile.
  • O Bootstrap está sendo lançado com suporte para o ES6.

Fonte: http://diegoeis.com/anotacoes/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment