O que Brendan Eich disse sobre a hipotese imaginária de substituir o JS por outra linguagem no Front, uma Aula gratuita via Twitter

← ← ←   5/2/2022, 6:34:00 PM | Posted by: Felippe Regazio


Fiz um tweet bobo perguntando em sobre Front: "Qual linguagem vc gostaria que tivesse suporte nativo nos browsers que não fosse JS?"

O @ronascentes marcou o Brendon Eich (criador do JS) e ele respondeu. A questão é que o que ele falou foi bem massa e queria comentar sobre.

Aqui está a resposta do Brendan. Tem um fio inteiro na resposta dele que merece ser lido e é BEM bacana, a resposta inteira não aparece por padrão no card de preview abaixo. Legal notar também que ele teve o cuidado de traduzir a resposta para pt-BR.

Você realmente gostaria que o Python da era de 2005 congelasse, como uma mosca no âmbar, e simplesmente evoluísse sem mudanças incompatíveis? sem Python 3, sem sistema operacional ou chamadas de FFI também.

— BrendanEich (@BrendanEich) January 3, 2022

No tweet eu tinha dito que a linguagem que eu escolheria seria Python. Na resposta o Brendon diz que isso teria prendido python numa armadilha de mosca e teria estragado toda a evolução da linguagem rumo ao que ela é hoje.

Isso porque o JS carrega uma forte pressão quanto a "Backward Compatibility", ou seja: Não pode haver Breaking Changes na linguagem. E realmente, se vc pegar Python 3 e comparar com 2, existem varias breaking changes.

O Brendon literalmente diz que a pressão relativa a backward compatibility teria sido aplicada no Python. Sendo assim, qualquer linguagem rodando num browser com o fim de "carregar a web nas costas" teria sido massacrada por esse principio.

É difícil evoluir uma linguagem a qual vc não pode introduzir NENHUMA breaking change sob o risco de quebrar produtos no mundo inteiro do dia pra noite, ou a curto/medio prazo. É como se fosse uma maldição dos browsers haha.

Isso dá uma perspectiva muito interessante sobre como JS sobreviveu ao longo do tempo, e como foi se adaptando e evoluindo: Com Transpilers (TS, Babel) para code safety e automatic backward compatibility entre codebases por exemplo, mas sempre sem alterar seu core.

O ponto importante aqui é: muitas pessoas responderam minha pergunta (inclusive eu) com linguagens mais robustas, alguns levantaram até Rust, Haskeell, Ruby...

Porém se tivessemos colocado essas linguagens em seus early-stage sob a implicancia de rodar em diferentes browsers de diferentes vendors, carregar toda a web nas costas ao longo da historia e sem quebrar nada, isso teria massacrado boa parte da evolução delas.

E talvez linguagens mais rígidas não tivessem resistido bem a ação do tempo sob o principio "dont break the web" e a evolução da internet per si: ou vc sacrifica a evolução da lang ou toda a internet quebra. Ou seja, qualquer lang em early-stage seria "Javascriptizada".

Olhando desse ponto, JS é um survivor e criar uma core language que "roda a internet" é como correr dentro de uma loja de cristais sem quebrar nada. Dá também uma perspectiva muito foda de como evoluímos as coisas até aqui, e é um bom parametro pra falarmos menos mal das coisas.