Evolução e Especificação do JavaScript Moderno – Hipsters #58

JavaScript, ECMAScript, TC39 e proposals. Tá difícil entender as versões e nomes da linguagem que quer dominar todas as outras. Nesse episódio falamos um pouco da história, da evolução e de como novos recursos entram no JavaScript, com alguém que está por trás dela.

Participantes:

  • Paulo Silveira, um host que curte especificações
  • Sergio Lopes, o cohost frontender mais famoso do pedaço
  • Leo Balter, engenheiro na bocoup, o brasileiro que tá tocando o terror na especificação!

Links:

Conteúdo dos criadores do podcast:

Produção e conteúdo:

  • Alura Cursos online de Tecnologia
  • Caelum Ensino e Inovação

Edição e sonorização: Radiofobia Podcast e Multimídia

Leave a Reply

49 Comentários

  1. Leonardo Gregianin

    O título da capa não passou pelo teste unitário… Arruma por favor a “Especificação”.

  2. Luiz Costa

    Bom dia hipsters, para mim uma ideia boa seria a geracao automatica de arquivos de testes, baseado no arquivo js.

    • aí seria tipo versionar o arquivo e qualquer alteração passa por diff e um humano revisa.

      Eu prefiro testes escritos com intenção. Testar só porque funciona daquele jeito pode deixar passar direto pequenos problemas que podem virar bola de neve na frente. Testes precisam falhar por um bom motivo, e inclusive permitir refatorações completas.

      Um exemplo de testes gerados que me dá arrepios são os snapshots do React/Jest. Aquilo só testa o diff do código.

  3. Paulo Nasciemento

    Sugiro adotar o nome de JavaScript Hipster para as proximas versões. Estará sempre por dentro das novidades.

  4. Tiago Nobrega

    Sugiro uma solução para o problema: 0.1+0.2===0.3 (return false). Isso é insano. A escolha de uma implementação melhor para number daria muito mais segurança para operações matemáticas decimais. Não gostaria de quebrar a web com isso, mas por favor não criem uma classe especificamente para isso. Nenhuma linguagem deveria ter mais de um tipo de número hoje em dia.

    • Isso não é um problema do JavaScript em si. Isso é problema de como números de ponto flutuantes são calculados em arquitetura 32 bits. Isso acontece em diversas linguagens. A solução para este problema é de se utilizar estruturas que suportam o cálculo de números com alta precisão. Existem bibliotecas para isso em quase todas as linguagens. 😉

      Veja mais informações em: https://www.wikiwand.com/pt/Ponto_flutuante

    • O mais próximo disso é o BigInt para números inteiros. https://tc39.github.io/proposal-bigint/

      As operações são feitas por bit e não por matemática exata. A soma para 0.1 + 0.2 no JS é precisa em relação ao posicionamento de bits no cálculo. Esse – e algumas outras operações – deixam uma sujeira. Pode parecer ridículo, mas essa operação permite uma série de coisas interessantes como melhor performance e até manipulação pesada de memória (ex: gráficos).

      É um cobertor curto, pro lado que puxar vai ter vantagens e desvantagens. Como já mostraram, não é diferente em outras linguagens.

      Essa operação segue um padrão especificado pelo IEEE.

  5. Raphael Lacerda

    Conclusão do podcast

    Javascript === java, returns false
    Javascript == Java, returns true

    • Paulo Silveira

      ele foi convocado!!! nao bateu horario 🙁

      • Welton Vaz de Souza

        Então esta perdoado, como o Professor deu causa para a falha!

    • seria ótimo! Quem sabe nao me chamam novamente para um outro episódio onde eu possa bater um papo com o Flavio? Eu adoraria. #pidao.

    • Guilherme Leoni

      Fiquei chateado quando percebi que ele não estaria… Tá loco! Só o Flávio pra compartilhar dos nossos problemas com teclados malditos…

      • Welton Vaz de Souza

        Infelizmente, como explicou o Paulo Silveira não foi possível! O professor Flávio Almeida foi a unica pessoal no universo que consegui ensinar-me essa mald…, quer dizer linguagem, é achar divertido. Apesar que agora eu usar mais ELM, com Javascript já consegui fazer um joguinho para meu filhote.

  6. Mais um excelente episódio do Hipsters.tech!

    É de dar orgulho de ver brasileiros envolvidos em projetos importantes relacionados a evolução de linguagens como o JavaScript. Além disso, o Leo Balter é uma excelente pessoa e sempre aberto para uma conversa, seja pessoalmente ou pelo Twitter. Tive a oportunidade de conversar com ele em diversas ocasiões. 😉

    Uma das funcionalidades (que não é tão maluca assim) que espero poder ver no JavaScript é o pipeline operator que já existe em linguagens como Elixir, Elm e Hack. Além de ser elegante e deixar o nosso código mais expressivo, é um caminho para tornar o JavaScript com uma pegada mais funcional.

    Agora, para botar lenha na fogueira e polemizar um pouco, será que existe alguma proposta ou intenção por parte do TC39 na implementação de um sistema de tipos mais robusto em JavaScript com anotações de tipos, por exemplo? ;P

    Pipeline Operator Proposal – https://github.com/tc39/proposal-pipeline-operator
    Pipeline Operator – https://youtu.be/dYQIkV2L-eg

    • eu acho difícil – beirando o impossível – rolar sintaxe de tipagem no JS (tipos já existem). Acho que o TypeScript seria a melhor saída para quem procura alguma alternativa, já que ele anda bem colado no desenvolvimento do ES.

    • Roberto Oliveira

      Pipeline operator <3

      Ja uso muito esquema de composição usando a função de pipeline do ramda. Seria fantástico ter essa notação na linguagem.

    • João Paulo Oliveira

      Apoio muito um sobre Python, alias já faz um tempão que aguardo um podcast sobre Python, segue ai umas sugestões de convidados.

      Fernando Masanori
      Nilo Ney Coutinho Menezes
      Luciano Ramalho

      • Rafael Novello

        Sim, estes são ótimos nomes para um episódio sobre Python. Outras boas sugestões seriam:

        Christiano Anderson
        Rodrigo Senra
        Henrique Bastos

        • João Paulo Oliveira

          Eu nunca ouvi esses nome que você falou, isso é bom que já aprendi novos nomes, vou procurar melhor sobre eles.
          Acho que seria uma boa falar sobre, o futuro da linguagem, o titulo que a linguagem tem de “Faz de Tudo”, e sobre os Frameworks.

          • Rafael Novello

            Nossa, tem muita coisa pra falar de Python! Alem destes pontos que vc citou, da pra falar da evolução da linguagem até chegar a ser a mais usada segundo várias pesquisas, da pra falar de data science, de dev web, devops, etc, etc, etc
            =D

          • João Paulo Oliveira

            Concordo totalmente com vc 🙂

  7. Jaelson RC

    Mas essa moda de brake change que esta nos Framework javascript ta uma bosta.. em menos de um ano seu código já esta defasado pelos os framework… os framework podia adotar esse preocupação do javascript em não quebra o códigos…

  8. Marcos

    Seria bacana ter um modo em que a tipagem dos dados seja obrigatória, se não me falha a memória o PHP implementou este recurso recentemente na versão 7.

    • a gente quer se livrar de modos no JS. “use strict” já foi muito, e nem o “use module” conseguiu entrar.

    • Vinícius Dias

      Opa, Marcos.

      PHP tem o strict types, mas isso não força o desenvolvedor a usara tipagem. Só desabilita o casting. Por exemplo:

      function funcao(int $numero) {}

      Isso funciona dessa forma: funcao(‘1’) sem strict types, mas com strict types habilitado, não funciona.

  9. Gabriel Prates

    Aí @peasilveira:disqus, já fizeram um episódio sobre criptografia?

  10. Robson Peixoto

    Show de bola!!! Que tal falar sobre Kotlin, se possível fora do mundo Android? =D

  11. Bruno Costa

    Nossaaaaa vão mudar o Date do JS. Esse tem jeito ainda kkkkkk. Ótimo Podcast. Queria sugerir um tema sobre gos mais voltado para comparação gráfica seria muito legal.

    • na verdade o Date continua o mesmo, mas vai ser feita uma outra API nativa com a situação resolvida. Assim não quebra o código de ninguém.

  12. Fernando Boaglio

    Que absurdo, o nível desse podcast caiu muito, a extensão do Warcraft não é Frozen Helmet , é Frozen Throne kkk frozen-throne.js kkk

    • Giordano Amaral Do Nascimento

      uhauhahuahuahu fdm.. kkkkk

    • Eu tinha falado de Frozen Realms. E tem Realms no Warcraft certo?

      De qualquer forma, Warcraft é a única coisa que me vem à mente quando falam de Frozen Realms.

  13. Augusto Santos

    Excelente podcast. Fico feliz em saber que os responsáveis pela especificação da linguagem estão realmente focados em tornar a linguagem ainda mais eficiente, não incluindo recursos “da moda” sem um profundo estudo antes.

  14. Lucas Lopes

    array[-1] para acessar o último elemento do array

  15. Interessante. Com essas novas especificações aí parece até uma linguagem de programação de verdade. Fico pensando se é esperança sobre o futuro da web ou ilusão… espero que as coisas continuem melhorando.

Next ArticleO design dos programadores – Vida De Hipster #01