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

Já disse em outros posts, mas não custa repetir: mesmo que vc ache que não, usamos matemática praticamente o tempo todo pra programar.

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").


Só pra dar um exemplo, em matemática existe o conceito de grafos (não é "gráficos" nem "garfos", é "grafos" mesmo). Basicamente, são nós interligados por vértices (ou "bolinhas ligadas por setinhas"):

Exemplo de grafo

A teoria matemática estuda as propriedades destas estruturas, e se vc só ler e aprender sobre esta parte, vai achar que não serve para nada.

Mas e se cada bolinha for uma cidade, e cada seta for uma estrada que liga duas cidades? Vc pode usar as propriedades matemáticas do grafo para calcular a melhor rota de uma cidade a outra, seja em distância, custo (supondo que algumas têm pedágio), etc. A teoria matemática não diz nada sobre estradas, apenas sobre encontrar o caminho entre dois nós, mas ela pode ser aplicada a qualquer problema do mundo real que possa ser modelado como um grafo.

Aliás, eu tive que fazer isso uma vez. Tinha um arquivo gigante de dependências, em um formato arbitrário e não padronizado (foi bem antes de inventarem o package.json). E dava problema porque alguém colocou dependências circulares nele. Então eu joguei o arquivo em um grafo, e procurei por ciclos (que também é um algoritmo conhecido de grafos). Claro que usei uma lib pronta, mas se eu não soubesse nem o que são grafos (e se não percebesse que aquele problema no fundo tinha tudo a ver com grafos), não saberia nem por onde começar.

Outro ponto é que, mesmo que vc não vá usar ou implementar diretamente algum conceito matemático, conhecê-lo ajuda a entender melhor como as coisas funcionam. Por exemplo, um repositório do Git no fundo é um grafo, e depois que eu compreendi isso passei a entender melhor o que cada comando faz (pois no fundo todos eles consultam ou manipulam o grafo).

E várias outras coisas que parecem banais têm alguma base matemática por trás. Como já dito aqui:

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.

Enfim, é isso. Vc (quase) sempre usa matemática, mas muitas vezes é indiretamente, e não da maneira que muitos imaginam.

Carregando publicação patrocinada...
2