No início dos anos 2000, as linguagens de programação mais proeminentes nas empresas eram C, C++, Java e C#. Todas eram linguagens estáticas e cerimoniosas, além de um tanto claudicantes num momento em que a Web demandava mais e mais software. Quando surgiram frameworks como o Ruby on Rails e...

No início dos anos 2000, as linguagens de programação mais proeminentes nas empresas eram C, C++, Java e C#. Todas eram linguagens estáticas e cerimoniosas, além de um tanto claudicantes num momento em que a Web demandava mais e mais software. Quando surgiram frameworks como o Ruby on Rails e runtimes como node.js, programadores e programadoras mundo afora beberam da água como beduínos sufocando num deserto de erros de compilação. A vida parecia, de súbito, muito boa.

Para nossa tristeza, felicidade de programador é passageira. Todo aquele ganho de produtividade foi paulatinamente substituído por dificuldades de manutenção, redução de qualidade e muitos chamados de suporte na madrugada. As (agora enormes) bases de código dinâmico tornaram-se fontes de profundos ressentimentos para muitas equipes.

Surgiu aí a pergunta: e se o jeito antigo e o novo dessem match um no outro? E se construíssemos coisas novas olhando para o que a academia vem fazendo com linguagens estáticas? E se eu dissesse que minha variável x é mesmo um número? Alguém disse microsserviços? E se, e se?

Pois bem: o e-se-e-se virou o tema do Inviável 41. Vem com a gente que 2 não é string e a chapa é quente!

Rollbar: Top 10 JavaScript Errors
C#: /dynamic/
Scala: Dynamic
Haskell: Data.Dynamic
TypeScript
Flow
Sorbet
Hack
Typed Racket
What Makes a Good REPL
REPL-Driven Development
Making Impossible States Impossible
Phantom Types
GADTs
TypeScript: Advanced Types

Recomendações:

Leonardo

react-spring
React.PureComponent
Making Sense of React Hooks


Vitor

“New Dark Age: Technology and the End of the Future”, James Bridle
Barry