Três grandes mentiras sobre JavaScript

Olá Habr! Apresento a você minha tradução do artigo " As três grandes mentiras sobre o JavaScript ", de Richard Kenneth. Este artigo foi escrito em maio de 2016, mas sua relevância, na minha opinião, não desapareceu. Eu sou um programador iniciante, portanto, erros em termos de "entendimento" são possíveis. Então ...

Três grandes mentiras sobre JavaScript


Existem dois tipos de mentiras: a mentira que dizemos aos outros e a mentira que dizemos a nós mesmos para justificá-la
Existem três grandes mentiras que os fãs de JavaScript me dizem repetidas vezes.

Mentiras # 1


JavaScript é a linguagem de programação mais incompreendida do mundo.
As pessoas não sabem como usá-lo corretamente e, portanto, constantemente enfrentam todos os tipos de problemas. E isso é mentira, porque no JavaScript não há nada incompreensível.

Essa é uma linguagem de programação imperativa / procedimental comum, com uma pequena quantidade de funcionalidade de programação (FP) e uma polêmica função "orientada a objetos", chamada protótipos de objetos. E o que há de tão especial nisso?

Basicamente, todos os problemas que surgem ao usar o JavaScript são culpa apenas das pessoas que o usam: são ignorantes, preguiçosos, estão acostumados com o modo como a programação é feita em Java ou Python. O que eles não sabem? Programação funcional?

Por que, então, as pessoas não se enganam ao usar outras linguagens FP, como C #, Clojure, Dart, Elm, Erlang, F #, Julia, Haskell, Scala e Scheme ? A programação funcional é um paradigma bastante bem compreendido no setor de TI. Então, o que torna o JavaScript tão particularmente problemático nesse sentido?

Talvez as pessoas não tenham conhecimento sobre protótipos de objetos. Nesse caso, leia "Quais protótipos de objetos do JavaScript não são" . Os protótipos, é claro, não são adequados para o desenvolvimento de software. Eles não são um nível particularmente alto de abstração de programação. Os protótipos são principalmente tabelas de hash distintas, um nível bastante baixo e é isso que chamo de "blocos de construção" para programação orientada a objetos real (OOP baseado em classe). As pessoas podem não entender como usar protótipos de objetos, mas por que você precisa aprender a “colocar tijolos”? Isso não vale o seu esforço.

Sim, entendi. Protótipos são muito flexíveis. Eles não possuem todos os “rituais” nos quais o AKI clássico se baseia. Nesse sentido, eles são divertidos de usar. Mas eles não se adaptam bem a aplicativos grandes e, portanto, as pessoas estão retornando às aulas. Se os protótipos fossem um truque tão útil, você o veria adaptado em qualquer lugar, porque os protótipos podem ser modelados em linguagens baseadas em classes, assim como as classes podem ser modeladas em linguagens baseadas em protótipos. E isso é algo que os programadores de JavaScript não conseguem descobrir.

Mentiras # 2


A programação assíncrona é um dos pontos fortes do JavaScript. Bem, vamos primeiro entender por que a programação assíncrona ainda existe em JavaScript .

Para desenvolver uma interface gráfica com o usuário (GUI), o loop de eventos é - de rigueur (a coisa usual) , seja no Windows ou no X Window , no Cocoa do OS X ou em um navegador da web. Todos eles lidam com eventos de entrada do usuário de forma assíncrona. Isso significa que a programação assíncrona também é uma potência de C ++ ou Objective-C ? Loops de eventos (com bibliotecas assíncronas) também foram usados ​​em Python, Perl e Tcl . Então, suponho que todos eles tenham o poder da programação assíncrona? (Eu rio quando as pessoas usam a palavra inexistente " assincronicidade " ( assíncrona é um adjetivo que descreve objetos ou eventos que não são coordenados no tempo ).

O JavaScript também usa um loop de eventos e processamento assíncrono para suportar a interface do usuário do navegador da web. Isso faz dele uma ótima linguagem?

E agora, esse modelo computacional tornou o Node.js bastante popular no lado do servidor, onde é usado para o desenvolvimento não-GUI, ou seja, para simultaneidade de alto desempenho. O nó é obviamente útil para muitos aplicativos, mas é improvável que domine o mundo da simultaneidade. Eventos recentes mostram as limitações do Node.js. E sim, isso deve convencer todos a usar apenas JavaScript.
O ciclo de eventos foi descrito como “o paralelismo dos pobres.
Os apoiadores do Node gostam de mostrar os mesmos exemplos de grandes empresas (PayPal, Netflix, Walmart, Uber etc.) repetidamente. O que para cada exemplo do Node.js pode ser comparado na resposta? - centenas de exemplos de Java ? O Java já se provou inúmeras vezes para o desenvolvimento corporativo. É por isso que é um padrão da indústria. O Node.js ainda não se provou. Na verdade, não sabemos quantas empresas tentaram usar o Node.js e o abandonaram. Não temos idéia de qual é a verdadeira taxa de sucesso dos projetos Node.js. Para as empresas, optar pelo Node.js ainda é um risco.
Prevejo com confiança que o Go substituirá o Node no futuro assim que crescer seu ecossistema de estruturas e pacotes. Sua trajetória é inegável.
Idiomas como Go e Erlang / Elixir podem facilmente superar o Node na maioria dos cenários de simultaneidade. Mesmo o modelo de loop de evento / assíncrono não é sustentável a longo prazo. Deveríamos estar interessados ​​em usar linguagens de programação paralelas reais se nosso objetivo é o desempenho máximo. Por que comprometer-se com JavaScript .

Mentiras # 3


JavaScript é a linguagem de programação mais popular do mundo.

Isso é realmente assim? Há uma enorme diferença entre um idioma que é amplamente usado por padrão e um idioma que é amplamente usado.
Lembre-se de que em qualquer outro campo, exceto na Internet, os desenvolvedores não são reféns de um idioma. Ignoramos esse fato por nossa conta e risco.

O JavaScript é a única linguagem nativa para um navegador da Web; portanto, essa é a maneira mais direta de escrever um aplicativo de navegador. A maioria dos desenvolvedores, no entanto, despreza essa linguagem e, se realmente tivesse uma escolha melhor, faria isso. Você pode verificar isso sozinho se pesquisar na Internet (fóruns, redes sociais, sites etc.) em busca de opiniões de pessoas sobre JavaScript . Existem muitas listas longas de WATs e WTFs sobre JavaScript que você não encontrará em nenhum outro idioma, exceto PHP . O que sabemos com certeza é que a web é muito popular, não JavaScript .

Os principais índices de classificação de idiomas não indicam que o JavaScript é a linguagem de programação mais popular. Nem mesmo a segunda, terceira ou quarta posição. De acordo com o IEEE Spectrum (American Journal) - este é o lugar, PYPL nº 5 , TIOBE nº 7 , CodeEval nº 6 . Redmonk (uma empresa analítica) usa estatísticas do Github , que mostram um número muito alto para JavaScript , precisamente porque aplicativos da Web escritos em qualquer idioma devem ter pelo menos algum JavaScript para funcionar no navegador; não há opções Portanto, Redmonk não pode dar uma classificação objetiva de anomalias no JavaScript ; caso contrário, a linguagem mais popular é Java .

As pesquisas de usuários, por exemplo, do StackOverflow, também contêm um viés semelhante na seleção. Como podemos dizer que o JavaScript é uma linguagem popular quando não temos escolha a não ser usá-lo sozinho? (Felizmente, os tradutores estão disponíveis para nós).

Devemos lembrar que em outras áreas (por exemplo, servidores de rede, jogos e gráficos, dispositivos móveis, computadores, etc.). Existe uma grande variedade na escolha da linguagem de programação. Os aplicativos da Web são extremamente exclusivos. (Pelo menos até o lançamento do WebAssembly finalmente ocorrer.)

Verdadeiro


Deixe-me esclarecer: o JavaScript não é uma boa linguagem de programação para o desenvolvimento de software . O JavaScript foi projetado para ser uma linguagem leve e fresca de script para um navegador da web. Como tal, foi feito para ser flexível e extremamente tolerante, com digitação fraca. Ele nem sequer tem o tipo inteiro certo ou o tipo certo de matriz. Que idioma é esse?

Digitação fraca, esse é o calcanhar de Aquiles da linguagem de programação com a qual o software é desenvolvido. Embora isso facilite a criação de scripts simples e rápidos para um navegador da Web, ele também funciona contra você quando você escreve aplicativos grandes que exigem segurança e confiabilidade. É por isso que a maioria dos idiomas principais geralmente são fortemente tipados (para não confundir com os estaticamente). E é muito, muito importante!

Tipificação fraca e a coerção arbitrária resultante demonstram uma completa falta de disciplina linguística. Isso explica a maior parte da lista de WATs e WTFs.

gerado por JavaScript. (Além disso, o autor fornece links para recursos online, onde é fornecida uma lista de warts JavaScript ).

Source: https://habr.com/ru/post/pt445170/


All Articles