Tradução: O fenômeno JavaScript é uma psicose em massa

Por Joao Junqueira | 20-09-2019

Recentemente, recebi esta amável mensagem no LinkedIn do presidente de uma empresa canadense de tecnologia de crimes cibernéticos:

"Eu li alguns dos seus artigos em javascript. Foi como estar num filme de zumbis e finalmente encontrar alguém que não está infectado.
Eu dirigi um negócio de software durante alguns anos. Foi comprado e agora estou desenvolvendo o mesmo produto que eu vendia. Meus ex-empregados colocaram AngularJs e Node.js lá dentro. Lembro-me da minha conversa há 3 anos com o meu melhor engenheiro: ele disse que o javascript estava tomando conta de tudo. Eu pensei: "Uau, eles conseguiram consertar essa linguagem medonha".

Bem, não. E é pior, porque pelo menos antes, estávamos a estragar pequenas coisas com o JS, era um jogo. A questão é que há uma psicose em massa sobre o JS e é como se todos estivessem fingindo que não é horrível. E depois, como se isto não fosse suficientemente ruim, alguém teve a brilhante idéia de colocar esta coisa na parte no backend. O Nodejs está custando milhões por ano a empresas ingénuas que o adotam. Você estava se perguntando quem eles são: eles são startups e pequenas empresas.

Tenha em mente que esses engenheiros são inteligentes, mas fracos contra o pensamento popular

Então me fez pensar muito sobre esta situação JS, e a única explicação plausível é esta: O frontend tem sido desprezado pelos engenheiros porque é menos científico e mais intuitivo, e também porque as ferramentas nos falharam ao longo dos anos. Então os designers pegaram a bola e agora querem programar, o resultado é NodeJS, JS e uma cegueira nos seus defeitos ( - craters). Designers não são engenheiros e vice versa, devemos nos ater aos nossos respectivos pontos fortes.

Na minha nova empresa, todos estavam a fingir que o JS estava bem. Eu me cansei e falei alto. Acontece que, no fundo, todos eles odiavam o JS, era só o pensamento popular. Agora todos eles odeiam o JS. E nós estamos à espera impacientemente da Web Assembly.

Bastava alguém para falar, como você fez. Então continue a fazer isso. Antes que um pirralho se magoe e nós tenhamos uma tragédia."

De todas as mensagens de apoio que tenho recebido ao longo dos anos, esta é uma das minhas favoritas.

Confirma o que sempre soube: que os programadores de JavaScript têm sido levados a pensar que o JavaScript é uma boa linguagem de programação. O presidente fala de "psicose em massa" e " pensamentos de grupos", mas eu usei a analogia da síndrome de Estocolmo e da psicologia de culto. Pense na Patty Hearst e em Scientology.

Como a maioria das pessoas bem sabe, todas as linguagens de programação têm os seus defeitos. Algumas têm mais do que outras.
No entanNo entanto, o JavaScript é especialmente mau. É por isso que você pode encontrar tantas queixas sobre o JavaScript na web.
Uma das coisas mais surpreendentes e angustiantes sobre o JavaScript é que ele pode realmente falhar silenciosamente em tempo de execução, devido a erros sintáticos! Outra coisa é o "callback hell" (inferno de retorno) que promete amenizar, mas não é uma solução perfeita. A mais notória das falhas do JavaScript está provavelmente na sua fraca digitação (não confundir com digitação dinâmica) que se manifesta na profusão de WATs e WTFs que fazem do JavaScript o alvo de tantas piadas da indústria. Aqui está uma das mais engraçadas (de um proponente do JavaScript, não menos!):

Eu não vou regurgitar a web apenas para dizer que uma simples pesquisa no Google vai revelar as muitas inconsistências e armadilhas internas do JavaScript que literalmente fazem do JavaScript um "campo minado digital".

A linguagem é tão ruim que o uso de um linter (como o JSLint ou ESLint) é praticamente obrigatório para todos os programadores de JavaScript. Isto, apesar do fato de ECMAScript ter sofrido muitas, muitas melhorias nos últimos anos, culminando no ES6. Aparentemente, o comitê ECMA TC39 é incapaz de eliminar completamente todas as falhas mais graves do JavaScript. Portanto, faça a si mesmo esta pergunta: Que outra linguagem de programação moderna é tão má que um linter é muito recomendado por razões de segurança?

E não vamos ignorar o fato de que nenhum linter é perfeito. Não pode detectar tudo, e pode até produzir falsos positivos. Sim, é mesmo o tipo de coisa que se quer de um analisador de código estático.

Quando se trata de desenvolvimento web, o JavaScript é um mal necessário. É a única linguagem nativa do navegador web. Com efeito, é refém (e não surpreende que muitos programadores de JavaScript tenham aprendido a amar a linguagem, graças à síndrome de Estocolmo).

Mas você tem opções! Você pode usar linguagens que se transpõem para o JavaScript. Aqui estão algumas das melhores, mas há muitas, muitas linguagens para escolher. Para o desenvolvimento de front-end, você não tem que escolher JavaScript a menos que você seja gado.

No back end, você não precisa escolher Node (JavaScript) porque o back end já é rico com muitas linguagens superiores como Java, Python, C#, Ruby, Erlang, e Go. Vá, em específico: veja The Fall of the House of the Node.

Eu tenho escrito aplicações web por mais de uma década e é totalmente chocante como pouco JavaScript eu conheço! Você não precisa usar muito JavaScript, exceto talvez para fazer interface com jQuery e afins. Eu fiz todo o meu trabalho de desenvolvimento web com Java, Python (web2py), C#, PHP (Drupal), Smalltalk (Seaside), e Go (Beego). Para o front end, em particular, eu usei Amber Smalltalk.

Portanto, a escolha é mesmo sua. Depende de você se quer mergulhar no mundo caótico do JavaScript. É aí que está o dinheiro em termos de empregos de front-end. Mas também é aí que está a confusão profana das estruturas web do JS, o que leva à "fadiga da estrutura". Angular 1, Angular 2, Reage, Ember, Meteoro, Backbone, Knockout, Mercury, Polymer, Aurelia, Mithril, Vue, etc. (React é o " sexy " atual, mas Vue poderia muito bem derrubá-lo.) Estas estruturas têm a duração de vida de uma mosca da fruta!