Executando verificação de segurança...
5

Por quê o ecossistema Javascript é tão caótico, inflado e bagunçado?

Fala pessoal, sou desenvolvedor Jr, e no inicio da minha carreira começei a programar com Java, passando a utilizar Spring Boot e também um pouco de C# com Aspnet Core.

Uma coisa em comum que pude perceber nessas duas linguagens são as padronizações no seu ecossistema, seja no código, de frameworks e bibliotecas.

Acontece que ao me aventurar pelo mundo Javascript, descobri que há uma PANCADA de coisa, estas que geralmente fazem as mesmas coisas no final das contas, e a minha indagação é, porque a comunidade do Javascript não é unida a ponto de construir uma solução definitiva e estável como as outras comunidades fazem?

Digo porque todo dia surge um dev maluco no Javascript reinventando a roda com estilo, prometendo uma nova tecnologia milagrosa ao invés de contribuir com soluções que já existem, tornando o seu ecossitema mais rico, mais estável e mais confiável ao longo do tempo?

Carregando publicação patrocinada...
3

Eu acho que o problema do js nem é os vários frameworks e sim o sistema de dependências - Quando entrei na postagem pensei que você ia falar sobre isso mas acabou não falando.

Quem ai ja abriu a pasta do node_modules? cara aquilo é um submundo sem volta, cheio de dependência sem sentido, pacote fake, quebrado e com vírus. Acho que a comunidade devia olhar mais para a padronização de pacotes e formas de não criar dependências do tipo: isPositive, isNumber ou até a história do leftPad.

.Net e Java têm grandes empresas ditando os padrões e também já trazem muitas coisas imbutidas nas standart libraries.

Pra mim o pior problema do Js é o node modules. Python tbm sofre bastante com isso e tbm é ainda pior pois tem biblioteca que algumas coisas são CamelCase outras snake_case dai dps ja tem pascalCase vira uma farofa. PHP tbm cheio de função interna com nome praticamente duplicado e sem padronização na escrita.

5

O próprio criador do Node admite que o node_modules foi um erro. Veja esta palestra dele, especificamente aos 13 minutos, quando ele mostra o slide dizendo "It's my fault and I'm very sorry".

Tanto que ele próprio resolveu criar o Deno, com um esquema mais centralizado - mais detalhes aqui.

1

nunca tinha parado pra pensar sobre esse problema do node_modules. existe alguma "solução" ou ao menos proposta pra melhorar isso?

acham que o composer do PHP pode ter o mesmo problema?

2

Uma ideia é ter um local centralizado, já evita que se baixe várias vezes a mesma coisa. Mais ou menos como o Maven/Gradle já faziam, e bem similar ao que o Deno está fazendo.

Claro que não é livre de problemas. Gerenciamento de dependências parece ser algo difícil de resolver, no fim é algo que temos que conviver.

2

Também acho que esse é o pior problema.

Me lembro de um evento que fiz e falando sobre microsserviços alguém usou como uma justificativa que o build demora muito. Chegaram a falar que levava 3 horas. E eu fiquei assustado com isso, Estão criando o Windows? Justificaram que era Node.

Me lembro de um ERP que trabalhei que era enorme (certamente é uma das maiores bases de código do Brasil), e na época, ainda que muito menor, fazia o monólito em 2 minutos, em um computador com 12Mhz e 1MB de memória.

Isso mostra o que falo muito, quando é obrigado fazer isso a ferramenta é automaticamente errada, e vão procurar soluções para isso em vez de consertar o problema original. Usar microsserviços é justificável aí, mas o problema real permanece.

E concordo com o kht, que o Deno parece ser um passo na direção correta, ainda que eu não tenha domínio dessa área. Curiosamente acontece uma forma de "síndrome de Estocolmo", as pessoas não conseguem ir para o Deno que é claramente muito melhor.

É preciso uma certa centralização para algo crescer de forma organizada. Comunidades possuem vantagens, mas também problemas. Nada é só bom ou ruim. As coisas nunca podem ser reduzidas ao maniqueísmo.

A desorganização é "ajudada" pelo fato de ter muita coisa.

Faz sentido para você?

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

2

Acho que falei disso em https://www.tabnews.com.br/maniero/e0cf52ce-fd7b-42c8-8de2-9d53989e4f4a.

Mas é sintomático. Cada um tem o que merece e recebe o que "todo mundo" quer. Só tem venda de drogas porque tem gente querendo consumir. Em comunidades que as pessoas não querem que seja assim, não é. A bagunça, a fragmentação, a complexidade não é valorizada.

Tem coisas piores no ecossistema do que estão relatadas aqui.

Mas as pessoas estão felizes, tem emprego.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1
1

Why not? Nós só temos as tecnologias e ferramentas que temos hoje devido a essa fome de inventar e reinventar, tentar fazer algo melhor, ou às vezes só refazer o que já existe.

Um exemplo que gosto de pensar é nos frameworks para ReactJS, hoje nós temos uma infinidade de possibilidades, NextJS, Astro, Remix, etc. Por que todo mundo não usa NextJS e trabalha para que ele seja o melhor possível? Porque não serve para tudo e para todos. Na empresa em que eu trabalho hoje, usamos Astro pela velocidade que ele proporciona, oferecendo features que, por exemplo, o NextJS não entrega. Assim como pessoas/empresas utilizam Remix, ou alguma outra ferramenta que melhor a supre.

Da mesma forma, temos a possibilidade de optar por Vue, Angular, Ember, Preact...

É um jogo onde todos ganham, nós devs por termos um canivete suíço cada vez mais amplo, e as empresas por terem cada vez mais demanda. Além do fato onde o livre mercado sobe o nível a cada dia, onde cada empresa busca melhorar e aprimorar seu produto para não se tornar obsoleta, e nós só ganhamos com isso.

0
1

porque a comunidade do Javascript não é unida a ponto de construir uma solução definitiva e estável como as outras comunidades fazem?

Que tipo de solução definitiva você se refere? Que comunidade conseguiu isso em uma tecnologia de algumas décadas de estrada usada amplamente nas mais diversas regras de negócio?

Nem o GIT é uma solução definitiva, há por exemplo um projeto gigantesco brasileiro chamado ACBr que usa e tira proveitos dos recursos do SVN.

Veja o Linux, um sistema tão importante e tão "onipresente" poderia ser uma solução definitiva, mas ele tem mais variações que todo multiverso da Marvel.


Sobre várias soluções em JS que fazem a mesma coisa, para pequenas bibliotecas eu concordo com você, há várias que fazem a mesma coisa. Acredito que a facilidade de criar algo e colocar em uso em JS facilite essa proliferação, boa parte dessas pequenas libs "clones" são feitas por iniciantes que não tem o hábito de pesquisar antes de fazer alguma coisa, eu já vi acontecer algumas vezes.

Grandes soluções apesar de parecerem resolver o mesmo problema na primeira vista como Angular, React, Vue, Svelte... elas são diferentes, resolvem problemas diferentes ou de formas diferentes. Por exemplo:

  • Para uma aplicação corporativa como um CRM ou ERP o Angular nada de braçadas em relação aos demais, é muito mais simples gerenciar uma rotina ou processo com Angular.
  • Para conteúdo mais dinâmicos como sites de vendas, redes sociais, ou coisas do tipo o React vai facilitar a vida onde o Angular iria pesar demais (atenção ao SSR).
  • Os dois anteriores requerem que o projeto seja moldado para eles, as vezes é um projeto pequeno demais para justificar toda a carga do Angular ou React, precisamos de algum dinamismo no desenvolvimento e comportamento do site então nesse cenário entra o Vue que vai desempenhar um bom papel.

Sem um dia alguma ferramenta prometer ser a solução definitiva para um problema, certamente os criadores estavam empolgados demais.

Ou o esforço para se criar uma solução melhor não vale a pena, por exemplo notebooks de uso geral com teclado diferente do QWERTY. O QWERTY não é o melhor padrão (existem outros), mas o esforço de mudar o mercado não vale a pena, então ele se estabeleceu como solução "definitiva"

1

Se já começou errado mano! Com C# e e asp kkkkk
Tirando a brincadeira!

Javascript é uma linguagem muito, muito poderosa e não tão complicada de fazer qualquer coisa!

Tudo que pode ser feito com Javascript, será feito com Javascript!

No mais, não existe solução unica para nada!
C# também tem frameworks e libs que fazem coisas parecias! Claro em menor número.

Mas fazer algo em C# é bem mais complicado que em Javascript.
Digo fazer uma lib/framework.

Se é bem complicado, melhor usar o que o povo ta usando. Ainda mais se a MS ta junto.

E temos uma coisa interessante. A comunidade é grande demais. Com gente cmo ego grande pra todo lado. Sempre achando que sabe mais Javascript que o outro.
Ou que pode fazer algo mais rápido que o do vizinho.

Junte facilidade de criar com Javascript.
Junte milhares de pessoas que sabem Javascript.
Junte o ego dessas pessoas.

Resultado. É o que esta acontecendo!
E isso é muito bom, muito bom mesmo!
O que as pessoas fazem acabam de alguma forma entrando no core da linguagem!
Promises, async await(que veio do C#) mas antes estavam em libs!

Javascript é muito legal, sua natureza prototipica(um estilo de oop) e funcional,
sua facilidade em criar coisas é muito boa.

Abraços!

1

JS é uma coisa de louco, amor e odio a todo tempo rsrsrs.

Acho muito dificil ter padronização numa linguagem que nem tipos são certos e tudo pode ser tudo.
O typescript que vem para dar uma "acertada" nele, mas ainda assim fica muito louco kkk

Ja fiz muitas APIs em JS e a facilidade para isso é absurda, mas, sinceramente, em python tambem é facil e não existe esse "zoneamento" todo, entao respondendo a sua pergunta... SEI LA MANO ta todo mundo louco kkkkkkk

1

Tem muito a ver com o fato que o Javascript foi criado para rodar em um navegador, então ele tem que ser retrocompatível com o que navegadores antigos estão usando: não é possível fazer uma mudança brusca na linguagem, se não, a internet inteira poderia dar pau.

Um exemplo é o surgimento do TypeScript: tem muitos comportamentos do Javascript que causam muitos problemas, então a solução foi criar as tipagens para propiciar uma experiência menos frustrante ao mesmo tempo que o Javascript continua funcionando da mesma maneira de sempre.

Então ao invés de fazer mudanças na linguagem quando algo precisava de melhorias, a solução foi de usar módulos e bibliotecas para resolver o problema.

1

Cara vi um vídeo recentemente de um programador JavaScript que ele crítica fortemente isso, diz não ter uma união entre os programadores JavaScript, o vídeo no caso é esse, acho que é bem essa sua crítica, alguns devem ter uma noção de que ta evoluindo, mas segundo esse rapaz do vídeo, isso não acontece, ta mais para uma repetição de conceitos antigos/novos.

p.s: fica mais claro vendo o vídeo.

1

Eu vi esse vídeo, mas achei o cara chorão demais. Isso acontece muito pq quem é guiado pelo hype, ele vai quicando de react, para react com next, depois com remix e por aí vai, como se alguém estivesse obrigando a ele fazer isso.

O argumento dele é mais ou menos: "Você estuda pra caramba, aí do nada a coisa muda, depois muda, aí volta pro começo ao que era antes da primeira mudança"

O que parece é que ele quer estar sempre na "crista da onda", e fatalmente essas novas modas mudam o tempo todo, principalmente quando são puxadas por empresas.


Tanto Remix quanto Next, ganham dinheiro com a hospedagem de projetos na cloud deles. Quanto mais as pessoas dependerem da hospedagem especializada deles, mais dinheiro no bolso. Eles perceberam que o React tem um apelo de mercado grande, mas por rodar no client não tem como ganhar dinheiro com o processamento dessas aplicações, trazendo para o servidor (que é legal, resolve muitas limitações do React), eles tem a chance de faturar em cima disso.

Então a verba de marketing dessas empresas é para parecer que React é fundamental e que a solução deles é a bala de prata, matadora de dragões, etc. Mas é uma solução que tem vários problemas e por isso muda toda hora.

1

Dê tempo ao tempo, todas as plataformas foram, são ou serão caóticas:

  • Java: quem viveu meados dos anos 2000 sabe a loucura que era com struts, javabeans, jsf, gwt, etc (só pra falar de web).
  • C#: quem lembra do WebForms? Falem a verdade, vcs sabem a diferença entre '.net', '.net framework' e '.net core'?
  • PHP: insanidade completa até o PHP5.

E por aí vai...

2

Em Java eu não posso falar muito.

Em C# posso, e eu sei o que é cada um dos .NET. De fato cria alguma confusão ter essas opções, mas foi para o bem, melhora agora para quem está chegando porque só precisa usar o .NET atual e não precisa saber de nada anterior. Mas se quiser saber mais:

O bom do que acontece com o .NET é que uma coisa mata a outra e não nasce algo novo "a cada dia", tem algo novo praticamente a cada 10 anos, porque enxergam que algo tinha sido pensado errado. Concordo que não é o ideal, mas não se comparar com o que acontece com certos ecossistemas.

Curiosamente eu acho que o PHP era muito simples até a versão 5, depois passou a ter o problema que é descrito aqui neste tópico.

Faz sentido para você?

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1

Se aprofunda no ecossistema da Microsoft que você vai ver o que é bagunça, rs. A quantidade de frameworks, tecnologias que criaram em mataram também deixando os devs perdidos... Isso ocorre em todo lugar, a diferença é que o JavaScript está mais em alta e todo mundo tem suas preferências do que prefere usar e acha mais prático e rápido.

1

Sim isso é verdade, e a galera ainda fica chateada quando aparece um framework como o NextJS, ou NestJS dizendo o que eles tem que fazer no projeto deles. kkkkk.

1

Exatamente isso, nesse mundo de JS, você se vê muito sob pressão, algo que funciona hoje e é válido hoje pode não ser amanhã. Mesmo com muitos problemas citados pelo kallebysantos aqui nesse post, me vejo muito mais tranquilo e leve quando se aprofunda em um mundo de Python, Rust, PHP, etc.

O Lucas Montano com o DevSoutinho abordaram um pouco do tema dos frameworks em JS nesse vídeo aqui Link.

1

Mas a vantagem do JS é exatamente essa "bagunça" como você tem falado. Se JS fosse feito de padrões como tem no Java e C# eu ja teria caido fora faz tempo, muito pelo contrário, eu posso criar meu próprio padrão que me torna produtivo ou o padrão que a equipe na empresa será produtiva.

JS mostra exatamente como a comunidade de desenvolvedores são, pessoas diferentes, níveis diferentes e sem maquiagem. Não adianta por exemplo obrigar a comunidade usar Angular, cheio de padrões sendo que segundo o StackOverflow Survey mostra que ele é um dos frameworks mais odiados, enquanto os melhores frameworks são os menos opinativos.

1