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

Por que se preocupar com linguagens e frameworks?

Eu dificilmente participo de outras comunidades de desenvolvedores, pois dedico muito do meu tempo estudando e criando projetos. O pouco que me sobra, eu dedico a familiares. No entanto, Eu comecei a navegar em comunidades no Discord para networking, e sinceramente, estou um pouco decepcionado.

Que diferença faz se você sabe linguagem X?

A maior preocupação que notei é que linguagem X é melhor que Y. Ainda há uma crença que, se você sabe Java, você é melhor que o carinha que programa em Python.

A diversos absurdos sobre acreditar que tecnologia X te faz melhor que pessoa Y. Quem sabe Java com certeza tem contato com software mais robusto e programação orientada a objetos mais presente que em outras linguagens, mas isso não quer dizer que os dev Java sejam melhores que outros.

A pessoas criticam o Java por ser verboso. Dizem que Python é ruim por ser lento. Afirmam que Go é uma linguagem morta (risos).

Discussão estúpida! Se fosse assim, quem program em assembly é melhor que todos. Não interessa a ferramenta. Quem usa Java resolve problema X, quem usa python resolve problema Y, e quem usa Go resolve Z.

Estou mencionando apenas linguagens que causam mais brigas por ai. Já ouvi falar que Rust é uma merda, ou que C é coisa de gente velha...

Até quando irão se preocupar com isso? A maioria não sabe o que é de fato um algoritmo, como o computador lida com strings. Não reconhece um ADT... Nunca pegou num livro e entendeu como uma linguagem é compilada. Já vi pessoas não saberem que JavaScript é uma linguagem interpretada...

Se você perde tempo com essa baboseira, talvez dedicasse melhorar se aprimorando. Sempre há espaço para melhorias.

Lembrando que eu não estou afirmando que sei tudo, o que sou melhor que alguém só por não fazer essas coisas. Eu já participei diversas vezes dessa briga estúpida. Eu apenas acordei e passei a usar meu tempo melhor.

Framework X é melhor que Y...

Mesma coisa que acima, a diferença é que creem que framework é a solução mágica para tudo. Tem gente que já instala o Next.js para criar uma página simples... Mais uma vez, uma demonstração de ignorância. Há tanto para se aprender ao invés de discutir isso. Na maior parte das vezes nem é necessário utilizar Next.js.

Eu citei algumas tecnologia, como o Next.js por serem bastante populares, mas isto é praticamente com qualquer coisa em qualquer ferramenta. Fazem isso com plugins ou extensões.

Valorizam conhecimento com prazo de validade

Por que se preocupar com conhecimento que tem prazo de validade? Talvez tua linguagem nem esteja sendo usada mais amanhã. Basta um dia para que o mercado fique de ponta cabeça e repentinamente você fica sem chão algum.

Quem estudou de fato as abstrações, os fundamentos e entende do que faz, esse sempre vai ter um chão para ficar de pé, se deitar e até pular. Não depende de tecnologia X. Não precisa de muleta, não fica com medo de ter seu emprego tirado, sabe o que faz. Essa pessoa aprende qualquer ferramenta rapidamente, e com confiança no que faz.

Carregando publicação patrocinada...
6

Sobre essa coisa de uma linguagem ser compilada ou interpretada, escrevi um post sobre isso.

Mas de forma resumida, não existe essa coisa de que uma linguagem só pode ser um dos dois. É um pouquinho mais complicado que isso, então sugiro que leiam :-)

Obs: nas primeiras versões do JavaScript, usava-se um interpretador, mas hoje em dia as engines dos browsers mais usados costumam usar um compilador que gera byte code, que por sua vez é executado por uma VM (que pode ter outro compilador just in time - JIT - que converte o byte code para código de máquina). Enfim, o meu post explica em mais detalhes.

1
3

Eu aqui programando em Java, fazendo relatórios no banco de dados com SQL, gerando uma pequena aplicação para ler e importar dados de arquivos XML com NodeJS, para depois reproduzir a mesma coisa em Go para aprendizado.

O pessoal aprende uma linguagem e quer casar com a linguagem.

Como você mesmo disse, cada linguagem tem o seu papel e não necessariamente uma é melhor do que a outra.
Quem tem a base boa, navega entre elas sem problema.

2

Acho q o problema não é bem a briga em si pelas linguagens e sim como o individuo lida com isso. INfelizmente isso é mais natural q parece e duvido q irá terminar. Só ver como vivemos cheios de guerras e teoricamente deveríamos ser seres intelectuais avançados o suficiente para ter uma era de paz... mas somos humanos, gostamos de treta. Uns mais outros menos... vai depender da pessoa.

Na empresa q trabalho, a gente vive brincando q java é verboso q javascript é locão, kkkk. Mas levamos isso na brincadeira, pois não existe motivos para defender algo a fundo, pois são tudo ferramentas. Eu por exemplo, uso Dart, q de fato é bem parecido com Java. Mas eu crio mil maravilhas aqui. Já no backend, antigamente era Ruby, mas eles mudaram pra Elixir... e isso não importa desde q cada um usem para q foram feitos. Se um dia existir algo bem melhor do q Flutter, tenho certeza q irei aprender. Não há motivos para estagnar em uma tecnologia.

Por isso essas brigas tem mais haver com o individuo, e nunca irá parar. Simplesmente pq as pessoas tão nem ai. Elas precisam de algo pra tretar, e nada mais do q defender o q eles gostam. É igual time de futebol.

1

Eu sou completamente a favor da briga entre linguagens, runtimes, compiladores, frameworks e qualquer tipo de ferramentas. Discussões entre tecnologias não são um problema, elas são um dos motores da evolução da indústria de software.

Por quê?

Porque é legal! Quando essa briga acontece de forma natural, entre pessoas intelectuais que sabem o que estão fazendo, que sabem o que estão defendendo, isso se torna um pilar para evolução dessas ferramentas.

Exemplos:

  1. Rust
    Graydon Hoare, estava insatisfeito com as linguagens de baixo nível, as falhas de segurança e gerenciamento e erros de memória de linguagens como C e C++, levou ele a criar o Rust. Não demorou muito para se criar um hype em cima da linguagem, levantando muitas críticas em cima de C/C++, o que causou uma divisão na comunidade low-level. De um lado, amantes de Rust e do outro, defensores do C++.

  2. Angular
    Por muitos anos, Angular foi taxado de bloated, complexo e de curva de aprendizado lenta. Com isso, a comunidade criou um hate em cima do framework da google, o que espalhou muita desinformação a respeito do mesmo. Com a popularização do React e o hate no Angular, criou uma inimizade entre as duas comunidades.

  3. Java e PHP
    Por muitos anos, essas duas linguagens eram desnecessariamente complexas. Criar um projeto, subir infra e gerenciar dependências, era um grande inferno. PHP era (as vezes ainda é) feio e inseguro. Java era verboso e inflexível. Com linguagens mais abstraídas e modernas como Python e Javascript (que escondem complexidade), novos sistemas foram criados do 0, seguindo os padrões e boas práticas. Isso fez Java e PHP se tornarem monstros do legado. Muitos sistemas em Java ainda estão na versão 8/11 e sistemas em PHP de 10 anos atrás nunca foram modernizados. Novamente, se cria uma rivalidade, comparando um Hello, world em Python com o equivalente em Java e comparando uma Rest API moderna em Express/Nestjs com os legados php.

O que muda?

Essas "inimizades", geram um alerta muito grande em cima da tecnologia. Afinal, o outro lado pode ter razão. No mundo de TI, as coisas tendem a estagnar. Afinal, não se mexe no que funciona. Pra que alterar o que dá dinheiro?
Mas o defeito está lá! É por isso que, hoje, muitos sistemas em Java acabam nunca sendo atualizados! Porque as vezes tecnologia central morreu, ou o sistema é tão grande que acaba sendo mais fácil construir do zero do que portar um sistema Java 5/6/7 para o Java 21. É o preço da estagnação.

Com a comunidade "pegando fogo", nasce a chama da modernização. Hoje, Rust evoluiu. Umas das maiores críticas, era o fato da linguagem depender de libs em C/C++ e descartar a segurança com código unsafe. Hoje, isso está gradativamente diminuindo, algumas dependências de C e C++ estão sendo Reescritas em Rust.

O Angular, na versão 17, melhorou as parte mais complexa do framework: os módulos e as confusões com diretivas (DSL em template, que modernizaram). Na versão 18, adotou signals, que diminui o uso do RxJS. Na versão 21, abandonou o Zone.js, reduzindo o tamanho do build e aumentando o controle sobre o CD (Change detection).

Java e PHP, se modernizaram tanto, que nem parecem a mesma linguagem. Mudaram sintaxe e nasceram frameworks e ferramentas que resolvem vários problemas.

Responsabilidade!

Eu sou o tipo de pessoa, que aquece as brigas por tecnologia na internet. Eu entro em discussões, e vou até o final. Mas mantenho a humildade e meu lugar de fala. Eu sou um dev, formado pela comunidade. Aprendi no Tabnews e no stack overflow. Eu trabalho com Angular + Nestjs, mas atuo 80% dos casos como arquiteto e não como dev.
Minha opinião sobre minhas ferramentas de trabalho: eu amo Angular, amo Nestjs. Mas eu odeio com todas as forças Javascritp e todo seu ecossistema. Não gosto de Javascript, nem do Browser, nem do Typescript, nem do npm.

Então, porque eu continuo usando? Simples! De ponto batido, tecnologia é pra ganhar dinheiro! Eu separo muito bem as responsabilidades.

Fora do trabalho, eu não toco em Javascript. Minha stack é GO, C e C++. Na internet, vou defender GO para CLI, criticar APIs em Python (na minha opinião, não é linguagem para fazer API), vou criticar quem usa Electron (essa porcaria) e defender que Desktop é código nativo em C++ ou hibrido em Flutter.

Eu não vou na comunidade React Native xingar o framework dos caras. Mas quando o tópico for "melhor desempenho em renderização", pode ter certeza, o skia e o Impeller são superiores ao RN. Agora, de ponto batido, não cabe essa discussão. Eu levanto os requisitos e comparo com a competência técnica do time, faço estimativa de tempo com as tecnologias e ganha quem constrói mais rápido em menos tempo.

A gente tem que saber separar bem as coisas. E saber também, a finalidade da discussão. Eu não posso chegar cagando regra, se o tópico for, por exemplo: "Como otimizar uso de recursos em aplicações Python". Eu vou chegar no post do cara falando:
— Tem que usar Rust, porque ele gerencia memoria automaticamente e blá blá blá...
Ai por trás, o cara tem um serviço segurando 6 dígitos de RPS.

3

Concordo totalmente com você! No entanto eu me refiro a pessoas cujo não tem argumentos para comprovar suas afirmações. É evidente o tom irônico da conversa. O intuito deles não é alcançar o melhor para a solução, mas sim discutir de forma vazia. Se todo mundo pensasse como você, com certeza teríamos pessoas mais capacitadas

1

Logo que comecei a estudar programação a primeira coisa que notei foi isso... uma das coisas mais infantis que já vi no mundo "profissional". Também segui pelo mesmo caminho, quase não perco tempo nesses fóruns ou comunidades. Passo a maior parte do tempo pensando, criando, produzindo, testando... Devo ter hoje muito mais bagagem sobre linguagens e frameworks que essa galera

1

Primeiramente, parabéns por um post não ser mais uma ferramenta de IA que ninguém precisa.

Meus 5 centavos: devemos discutir sim! Civilizadamente. Já aprendi muita coisa nessas discussões, uma vez tava perguntando pra um dev PHP porque esse negócio é tão utilizado se tem um ambiente de desenvolvimento tão ruim? (Era 2019 e PHP era bem pior que hoje). A resposta dele foi que com 10 reais por mês você pode ter uma aplicação aplicação PHP rodando mais um banco MySQL, daí nunca mais critiquei kkk e acho que cada um pode ter uma opinião pessoal besta, eu por exemplo acho Go uma linguagem feia com a falta de tratamento de erro (que o Rust tirou de letra mesmo sem exceções), acho muito desagradável programar em linguagens sem tipo, porque quando vai mexer um mês depois, você não sabe mais o que vem naquela função que recebe um objeto... Além disso também tenho minha opiniões objetivas, sobre que uma empresa NÃO deveria do nada começar usando essas linguagens de youtuber, como Erlang, porque não vai achar funcionário que conhece.

1

Discutir civilizadamente sobre o que é melhor ou não, é preferível sim. O meu post desrespeito a pessoas que ficam apenas nisso. Eles não tem argumento para provar suas premisas. Repetem o que falam. Eu amo descutir seriamente se X compensa mais que Y, mas da maneira correta.

1

Tenho um monorepo com diversas aplicações e processos, tem Node, python, golang, cue, rust, sh...
Programador fan boy de linguagem nao evolui, saber onde cada uma brilha da forma correta é que faz a diferença. Fazer manipulação de dados massiva em TS tem como? Sim. Mas python para isso é muito mais prático e bem estabelecido, ainda mais usando um polars por exemplo que entrega performance bruta.
Criotografia da para fazer em python? Sim.. mas com rust a performance é outra e a segurança também.
Quem se limita jamais vai atingir um nível de arquiteto de verdade, que consiga tocar demandas diversas dentro de um modelo de negócios complexo.