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

A Negligência da Matemática na Programação: Uma Crise Silenciosa na Era do 'Ctrl+C, Ctrl+V'

Antes de ler o texto saiba de duas coisas:
1 - eu escrevi esse texto sozinho, porem pedi para a IA arrumar e formatar
2 - eu relutei muito em publicar por que algumas pessoas são um pouco sensíveis, mas no final das contas é o que eu penso, e estou vendo. É a minha opinião sincera como um cientista da computação de fato.

Introdução:
A programação moderna parece ter se tornado um campo obcecado por atalhos: frameworks que abstraem tudo, tutoriais de "aprenda em 10 minutos" e uma cultura que celebra a entrega rápida em detrimento da compreensão profunda. Enquanto isso, a matemática — alicerce histórico da ciência da computação — é tratada como um fóssil incômodo, algo a ser evitado por "gênios do código" que se orgulham de nunca ter aberto um livro de álgebra linear ou teoria dos grafos. Como programador, isso não só me incomoda: me assusta. Estamos criando uma geração de desenvolvedores que sabem como programar, mas não entendem por quê.


1. A Ilusão da Abstração Total: Quando Ignorância Vira Moda
Frameworks e bibliotecas modernas são maravilhosas, mas viraram uma muleta perigosa. O desenvolvedor médio hoje não precisa implementar um algoritmo de ordenação, entender complexidade assintótica (O(n)) ou sequer saber como uma matriz multidimensional é armazenada na memória. Basta instalar um pacote via npm ou pip. A mensagem subliminar é clara: "Não se preocupe com o que está por trás".

O resultado? Programadores que não conseguem otimizar um loop simples, que escrevem código exponencialmente ineficiente para problemas triviais e que, diante de um bug, ficam reféns do Stack Overflow. A matemática ensina pensamento algorítmico, não apenas a sintaxe de uma linguagem. Sem ela, o código vira uma colcha de retalhos de soluções alheias, sem coerência ou propósito.


2. O Culto ao "Funciona na Minha Máquina" e a Morte do Rigor Científico
A ciência da computação nasceu da matemática. Alan Turing, Gödel e Von Neumann eram matemáticos, não "influencers de tech". Hoje, porém, muitos programadores tratam a disciplina como um mero exercício de lógica aplicada, ignorando que tudo em computação é modelagem matemática:

  • Estruturas de dados? Grafos, árvores e hash tables são conceitos matemáticos.
  • Machine Learning? Uma fachada sem álgebra linear e cálculo.
  • Criptografia? Impossível sem teoria dos números.
  • Concorrência? Exige entendimento de lógica formal e provas de correção.

Quando negamos essa base, reduzimos a programação a uma atividade mecânica. O código pode até "funcionar", mas será frágil, inseguro e incapaz de evoluir. Pior: sem matemática, como avaliar por que algo funciona? A ausência de rigor abre espaço para vazamentos de memória, brechas de segurança e sistemas que desmoronam sob escala.


3. Bootcamps e a Fábrica de Desenvolvedores de Superfície
A explosão de bootcamps de programação — muitos dos quais prometem empregabilidade em 12 semanas — alimenta esse problema. Eles focam em ensinar React, Django ou Docker, mas raramente dedicam mais de uma aula a tópicos como álgebra booleana, indução matemática ou até mesmo complexidade de algoritmos. O aluno sai apto a criar um CRUD, mas incapaz de discernir entre O(n log n) e O(n²).

Isso cria profissionais que dependem de ferramentas, não de conhecimento. Quando a stack muda (e muda sempre), eles ficam obsoletos. Matemática, por outro lado, é atemporal. Um bom entendimento de estatística ou otimização linear será relevante daqui a 30 anos, mesmo que Python seja substituído por outra linguagem.


4. "Mas Eu Não Preciso de Matemática Para Criar Apps!" — O Engano do Praticismo
O contra-argumento mais comum é: "Grande parte dos projetos não exige matemática avançada". Concordo. Você não precisa resolver equações diferenciais para desenvolver um blog. Mas e quando o problema exige?

Imagine um desenvolvedor front-end que não entende geometria coordenada, tentando criar animações complexas. Ou um engenheiro de dados que não domina probabilidade, construindo sistemas de recomendação enviesados. A matemática não é sobre usar fórmulas; é sobre desenvolver um mindset analítico. Ela treina o cérebro para decompor problemas, identificar padrões e provar que uma solução é correta — habilidades que transcendem linguagens de programação.


5. O Preço da Ignorância: Inovação Estagnada e Dependência Tecnológica
Há uma ironia trágica aqui: enquanto programadores ocidentais abandonam a matemática, países como China e Índia investem pesado no ensino de STEM (Ciência, Tecnologia, Engenharia e Matemática). Eles não estão produzindo apenas "codificadores", mas cientistas da computação. Enquanto isso, nós nos contentamos em ser usuários avançados de ferramentas criadas por outros.

O futuro da tecnologia — quantum computing, algoritmos bioinspirados, IA generalista — será construído por quem domina matemática, não por quem decora sintaxe de JavaScript. Se continuarmos negligenciando a base teórica, nos tornaremos meros operários digitais, dependentes de soluções terceirizadas e incapazes de inovar.


Conclusão: Reabilitando a Ciência na Computação
A programação não é um fim, mas um meio. Reduzi-la a "escrever código" é como confundir literatura com digitação. Precisamos resgatar a essência científica da computação:

  • Educação: Cursos de programação devem integrar matemática de forma prática (ex.: ensinar matrizes através de gráficos 3D).
  • Contratação: Empresas precisam valorizar candidatos com sólida base teórica, não apenas experiência em frameworks.
  • Cultura técnica: Debates sobre otimização, provas de algoritmo e eficiência devem ser tão comuns quanto discussões sobre qual biblioteca usar.

Como disse Edsger Dijkstra: "A Ciência da Computação é tão sobre computadores quanto a astronomia é sobre telescópios". Se queremos ser mais do que operadores de ferramentas, é hora de reabrir os livros de matemática — antes que a computação se torne um campo de técnicos, não de pensadores.

Aos que dizem "matemática é difícil": sim, é. Mas programação também era difícil antes de você aprender. A diferença é que a matemática não é um obstáculo — é a bússola. Ignorá-la é navegar em mar aberto sem mapa. E no mar da computação, quem não sabe para onde vai, qualquer porto basta — mas nenhum será verdadeiramente seu.

Carregando publicação patrocinada...
10

Muito bom!

Complementando, seguem algumas discussões anteriores sobre o assunto:

Acho que o principal problema é a percepção que as pessoas têm com relação à matemática, sintetizada no começo do primeiro link acima:

O problema é que quando dizemos "matemática", muita gente associa com aquilo que vemos na escola: decorar fórmulas e sair fazendo contas - infelizmente, muitas vezes sem entender pra que serve. Na minha opinião é essa forma equivocada de ensino que fez com que gerações inteiras odiassem matemática, e achem até hoje que é inútil.

Se for esse o caso, então realmente vc não vai usar o que só viu - e decorou - na escola. Mas matemática é algo que vai muito além. Entre outras coisas, ela é uma ferramenta para resolver problemas através da criação de abstrações, e no fundo é isso que fazemos o tempo todo ao programar.

Para criar um programa qualquer, pegamos entidades do mundo real e tentamos encaixar nas estruturas e mecanismos que as linguagens nos dão (arrays, classes, funções, etc). Traduzimos algo concreto para uma representação abstrata, e a matemática te dá a capacidade de fazer isso. O problema é que esse ganho é indireto e geralmente demora para ser percebido (em parte, é um dos motivos de muita gente achar que não precisa, ou que "agora não estou usando").

Ou, como já comentei no segundo link acima, sem matemática não teríamos computação:

Muitos dos conceitos que a gente usa no dia a dia vieram diretamente da matemática. Funções, por exemplo, seguem basicamente a mesma ideia: recebe dados, faz algo com eles (seguindo determinadas regras) e retorna um resultado. SQL veio diretamente da Álgebra Relacional. Programação funcional é basicamente uma implementação do Lambda Calculus ("Daí que vem o lambda que muitas linguagens tem?" - De certa forma, sim) - e por aí vai, muita coisa que a gente usa nada mais é que um conceito matemático adaptado para ser usado em programação.

Mesmo que vc não vá precisar diretamente, conhecer os conceitos matemáticos te ajuda indiretamente. O caso mais comum é o de reconhecer padrões: perceber que determinada situação se encaixa em problema específico que já tem solução - ou seja, vc não perde tempo reinventando a roda, mas pra perceber isso vc precisa pelo menos saber que aquilo existe (e se vc não estudou matemática, não vai nem saber o nome daquilo para procurar a resposta). E a matemática te dá a capacidade de abstração, que é essencial para reconhecer que duas situações aparentemente diferentes são na verdade o mesmo problema - e quantas gambiarras seriam evitadas se mais gente tivesse esta capacidade...

Também falo disso nos links acima. Por exemplo, saber que o repositório do Git é um grafo me ajudou a entender melhor como ele funciona e o que cada comando faz (já que todo comando basicamente consulta e/ou manipula o grafo). Antes eu tinha dificuldade de montar um modelo mental do repositório e do que acontecia quando eu fazia commit, merge, rebase, etc. Depois que vi este site explicando que no fundo é um grafo, tudo passou a fazer mais sentido. Mas se vc não souber nem o que é um grafo, não vai adiantar nada ler.

Ou seja, pelo menos saber que determinado conceito existe e ter uma noção básica do que é me ajudou com algo que uso diariamente. Eu até entendo a revolta dos alunos na aula de grafos (ainda ensinam na faculdade, né?), ao não perceber porque aquilo é útil. O que eu não entendo é porque o professor não diz: "Olha, isso aqui é usado para fazer o Git, o GPS e as redes sociais" - pronto, já aumentaria o interesse da turma, ou não?

7

Me deu uma vontade enorme de positivar só pelo começo (antes até de começar o assunto), já vi que vem coisa boa. Mas só vou fazer quando terminar. Eu vou escrevendo conforme vou lendo.

E claro que entrando no texto propriamente dito o dedo começou coçar mais, mas eu sei que tem gente que decepciona mesmo começando bem :)

Eu tenho a impressão que não é nem caso das pessoas saberem o como. Não é exatamente uma discordância, mas boa parte nem isso tem acontecido, sabem programar, geram um código que traz algum resultado, mas não têm ideia do que está fazendo, nem se está certo, só que deu o resultado. Depois você tem o grupo dos que sabem como, mas não o porquê.

O texto é ponderado até onde vi e entende o problema.

As pessoas não estão sabendo escolher que pacotes instalar ou que códigos prontos usar para ser o adequado. O que muitas vezes ainda atenderá a demanda, mesmo que seja uma porcaria em pelo menos algum vetor que possamos analisar.

A matemática ensina a pensar. Já poderia parar aí, mas ela realmente ensina de formas específicas. Eu não sei se a escola está ensinando matemática, desde cedo. Eu não culpo totalmente os alunos.

Consegue imaginar quando (ontem) as pessoas deixarem de serem reféns do SO e passarem ser da IA, como será? Só piora.

Ouvindo influencers estão se desviando de coisas muito mais básicas do que foi citado. Tem gente que não sabe fazer porcentagem, ou não consegue raciocinar o algoritmo, sem falar que não entende os mecanismos básicos da linguagem de programação, só faz o ^C^V. Eu dei aula e tinha alunos que não conseguiram fazer um exercício na prova que em vez de só incrementar 1 tinha que incrementar 2. Eles não entendem a relação dos números. Mas não importam tá cheio de gente nas redes sociais falando que programação é fácil e tem vaga sobrando (o que é verdade, mas esquecem de falar o que precisa dominar para pegar essas vagas).

Não lembro quantas vezes alguém postava um código com SQL Injection no SO, você responde arrumando isso, explica, logo depois ele pergunta algo novo do mesmo código e não corrigiu a vulnerabilidade. Ou quando alguém respondia sem consertar, sem fazer alerta e brigava porque a pergunta não falava isso, o que fere a filosofia do site de ser um repositório de bons códigos e práticas, não para apenas consertar o erro do cara. Então é pior, tem que pôr a teimosia como boa parte do problema.

Eu não fico só na superficialidade de quase todos os cursos vendidos por aí, ou mesmo os gratuitos. Nem vou falar de quanto as pessoas compram esses cursos e nem fazem. Tem dados mostrando que o índice de abandono dos cursos é algo quase inacreditável, e a maioria são cursos muito curtos. Então o curso nem precisa ser bom, tem que ser só bem vendido, porque quase ninguém o fará de verdade. Alguns vão falar que é bom sem nem ter feito. O próprio CS50 que muita gente fala que assim você será bom programador, e de fato é um avanço perto de algumas coisas por aí, não é tudo isso, e sozinho não faz ninguém ser bom programador. A pessoa precisa mudar todo seu pensamento e forma de estudar.

Eu nem estou querendo falar de matemática avançada. Vamos arrumar o arroz com feijão primeiro, porque ele tá cru, não dá para fazer Beef Wellington. Não estou pensando nos cientistas, os engenheiros que farão a diferença, esses eu acho que só acontecerão se nasceu privilegiado de alguma forma. E tem gente de várias áreas que sustentam isso, não é da minha cabeça. Eu quero só ser bons programadores dos softwares simples que afetam a minha vida.

Parabéns pelo primoroso texto. Espero que esta página seja a virada de chave em algumas (ou muitas) pessoas.

Vou pedir pro kht por um link para um texto dele sobre matemática.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

4

Ótima análise!

Essa discussão toca num ponto essencial que poucos têm coragem de admitir: programação não é digitação glorificada.
Estamos vivendo uma crise silenciosa onde a matemática, a base estrutural da computação, foi reduzida a um obstáculo opcional – e pior, tratada como um resquício acadêmico "desnecessário". O resultado? Um mercado repleto de desenvolvedores que não sabem distinguir um problema NP-difícil de um bug de tipagem, que confundem "otimização" com "rodar mais rápido na minha máquina" e que escrevem código sem entender os princípios matemáticos que sustentam cada estrutura de dados e algoritmo que utilizam.

A questão aqui não é elitismo acadêmico ou purismo matemático. É um problema estrutural: quem não entende matemática, inevitavelmente se torna um refém da abstração alheia. E o que acontece quando essa abstração falha? Pânico, Stack Overflow e tentativa e erro até "funcionar". Isso não é engenharia, isso é gambiarra glorificada.

Quer um exemplo prático? Machine Learning está por toda parte, mas quantos dos entusiastas de IA conseguem explicar o que é um espaço vetorial? Ou como funciona uma decomposição em valores singulares (SVD)? Sem isso, estão apenas chamando APIs, torcendo para o modelo cuspir algo útil. O mesmo vale para otimização de banco de dados, eficiência de código e até mesmo algo trivial como física em jogos.

A desculpa do "mas eu só faço CRUDs" só vai te manter empregado até o dia que uma nova tecnologia substituir sua stack.
Frameworks vêm e vão. A matemática permanece.

Se programar é seu fim, ok, continue decorando frameworks. Mas se seu objetivo é realmente entender computação, então pare de evitar a matemática e abrace-a. Porque no fim do dia, a diferença entre um desenvolvedor medíocre e um engenheiro de verdade é a profundidade do conhecimento que carrega.

Ótima reflexão! Você acertou ao expor como a falta de matemática enfraquece a programação.
Sem essa base, formamos mais operadores de frameworks do que pensadores de verdade.

4

É bem complicado esse tema, mas também não é

Outro dia vi uma discussão no twitter a respeito de escrever codigo no papel. Citei que Deijkstra usava papel para "programar" e que afirmava, já naquela epoca que usar o computador atrapalhava o raciocinio. Fui crucificado por 300 javascripters de 20 e poucos anos, e o unico argumento era "não estamos mais em 1800". Bom kkkk erraram até a data...

As pessoas, e digo as mais novas, não querem ter o minimo de trabalho necessario para nada! Estamos vendo uma geração inteira de, ou esquizofrenicos ou ego inflado. Tudo tem que ser rapido e facil, sem demora e servido de bandeija.

3

Concordo com isso, só vou usar o termo mais próximo do correto, embora eu tenha entendido que usou jocosamente.

A nova geração, e as antigas, por osmome, estão muito mimadas. Estão saturadas de exposição de muita informação, e geralmente que toma muita energia, estão mal preparadas para a vida, cheio de incertezas cada vez maiores, em parte por culpa do ambiente, estão usando modelos irreais para moldar sua vida, estão com crenças insustentáveis, seguindo quem só quer ganhar dinheiro em cima delas promentendo milagres, em função disso, estão muito ansiosas e desfocadas.

E por isso estourou o diagnóstico de TDAH. Mas não, essas pessoas, de forma geral, não tem TDAH. E está cada vez mais difícil saber se é isso mesmo ou não, porque bebês já usam celular, jogos e pouco depois redes sociais, e a interação humana analógica cada dia menor. TDAH é um problema neurológico que a pessoa nasce assim e compromete muito a vida dela. Ela tem dificuldades cognitivas, mas se não estiver associado a outro problema não tem preguiça, muito pelo contrário, são obcecados. Ser aceleradinho e/ou distraidinho, são sintomas do TDAH, não a causa, e hoje em dia os sintomas estão presentes em pessoas só vivendo em um ambiente que o ser humano não foi preparado ao longo de séculos. E muito médico não sabe difereciar isso ou mesmo não é do interesse dele (não vou entrar em detalhes, até porque meu advogado proibiu).

E não é fácil as pessoas sairem disso, é como droga, de fato, age igual, é sobre dopamina do mesmo jeito.

2

A verdade é que o mercado que 'forçou' essa mudança... O mercado não quer pessoas que entendam complexidade assintótica (O(n)), o mercado quer o cara que consegue resolver problemas com as facilidades que já existem. E quando digo mercado estou me referindo a grande maioria dele. Eu gosto muito de baixo nível/matemática... Mas isso não vai me trazer um salário melhor. Então eu acabo estudando algoritmos e frameworks que irão me proporcionar a abstração necessária para resolver problemas

2

Concordo totalmente com você. Acredito que a maior parte da culpa está justamente nas empresas que criam essa cultura que valoriza muito a prática e esquecem das bases daquilo. Na minha opinião ambos deveriam andar em conjunto e não existe um sem o outro.

Hoje estou no 7º termo de ciência da computação e vejo como esse tipo de cultura afeta a maneira que as pessoas enxergam essas coisas. Não canso de escutar pessoas reclamando que "nunca" vão precisar de alguns aprendizados que vemos lá. Principalmente em matérias como pesquisa e ordenação e estrutura de dados.

Atualmente, o principal objetivo das pessoas que entram na área de programação é a busca pelo dinheiro fácil e na falsa promessa de consegui-lo em um curto espaço de tempo. Sempre dei muito valor nesses conhecimentos e busquei não ouvir as pessoas que acabam sendo alienadas por essas questões.

Recentemente tive até uma conversa com um gestor que conheci na área de dados sobre isso, o que me impressionou foi a forma que ele abordou o assunto de uma forma totalmente diferente da que eu costumo ouvir. Tenho muito a vontade de fazer mestrado mas não tenho o objetivo de seguir a carreira acadêmica, o ponto é que, normalmente quando comento isso com as pessoas elas normalmente não são muito favoraveis a essa ideias, mas, esse gestor me disse totalmente o contrário. Ele também fez mestrado e apoiou totalmente a ideia, mostrando como isso afetou a carreira dele, mudou a maneira de enxergar as coisas e principalmente, de resolver problemas de maneira inteligente.

Mas a conclusão é que, fica evidente como o mercado brasileiro é um culpado dessa cultura que temos hoje, ele não valoriza e muitas vezes não sabe como utilizar esse conhecimento. Em contra partida, empresas fora do país dão um real valor nesses conhecimento e muitas vezes levam em consideração no momento da contratação. Não que lá fora não aconteça a mesma coisa, mas no Brasil esses conhecimentos não são nada valorizados e muitas vezes são considerados sem utilidade.

1
1
1

Karalho, meu mano meteu a pill.
Gostei muito do texto acima, sou um programador estágiario/jr e estou sempre tentando aprender mais, fazendo alguns algoritimos no leetcode entre outras coisas, eu gostária de saber por onde eu começo a estudar Matématica para programar melhor, que livros eu busco oque eu devo praticar, eu não faço faculdade então tem meio que uma barreira sobre como começar e se eu estou começando pelo lugar certo.

1

Acredito que 2 fatores influenciam a situação que a gente se encontra.

Vejo posts no LinkeDisney sobre a falta de profissionais capacitados em programação. Porém, qual o sentido de estudar DSA e calculo I, II e III em uma boa faculdade, se o mercado só pergunta se você tem experiencia com framework X?

A demanda por um produto que precisa ser disponibilizado no menor tempo possível. A ideia de que o cliente não liga para o código implementado, sendo que o cliente se importa sim! Ninguém gosta de um aplicativo lento. Acabam criando programadores que se priorizam em entrega de qualquer jeito.

O segundo fator vem em forma de vendedores de curso, onde só explicam o caminho feliz. Ou que te vendem o sonho de 5k de salário com 3 meses de programação. O pior é que ACONTECE, porque se o mercado precisa de alguém que sabe montar uma tela em um framework, isso da para aprender em 3 meses.

1

É um dos motivos por termos um abismo salarial gigantesco entre os experientes e os que estão iniciando agora. Cada vez mais os iniciantes ganharão menos. Basta olhar aqui, quanta baboseira sendo lançada, com fracasso certo e com orgulho de dizer que "criou em 5 dias". Chego a ficar surpreso com algumas coisas que leio e que não pode ter vindo de alguém que estudou o cerne do desenvolvimento de softwares. Cada vez mais se esquecendo do que realmente importa.

1

Concordo plenamente,
Sobre essa questão do investimento pesado em STEM (Ciência, Tecnologia, Engenharia e Matemática) deveria ser um plano nacional para países como o Brasil, coisa que a Índia ja iniciou a tempos. O que se vê nas graduações de tecnologia hoje em maioria são alunos atraídos por salários, porém sem paixão por entender e resolver problemas.

1
1

Concordo contigo que matemática é importante na programação, ajuda a entender os conceitos fundamentais porque tudo provém da matemática: variáveis, constantes, funções, operadores, etc. Ao menos pro iniciante entender de onde vem esses conceitos.

Mas sou bem cétido de isso algum dia mudar, a coisa já se prostituiu de um jeito que não tem volta. As vagas hoje em dia são editais de concursos, nem a NASA tem tantos requisitos pra astronauta. O foco maior é nos frameworks e ferramentas, como se todo mundo usasse o mesmo tech-stack.

Pra piorar tem videos no YouTube pra ensinar como passar em entrevistas, como responder se perguntarem pra desenhar um back-end do Twitter ou Netflix. Vendem planos em sites que ensinam a resolver problemas que são aplicados em testes nas vagas, e os "influencers" vendendo cursos pros iniciantes conseguirem trampo. Criaram todo um esquema de concursado na contratação em TI que tá surreal.