← ← ← 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.