Primeiro post *:・゚✧!
Olá, sou a Sawa! Esse é o começo de um blog informal aqui no estúdio para falar de coisas diversas, entre elas matemática e computação. Espero conseguir transmitir ambos conteúdos de forma agradável e fácil.
Neste primeiro post vou falar um pouco sobre minha trajetória e explicar brevemente meu ponto de vista sobre a relação entre matemática e computação. Trabalho como programadora há alguns anos e me formei em Ciência da Computação em 2019.
Por que escolhi Ciência da Computação entre todos os outros cursos de TI?
Primeiro porque matemática sempre foi a matéria que eu mais tive facilidade na escola. E Ciência da Computação é o que mais tem matérias de matemática, se comparar com os outros cursos de TI.
Ao perguntar a diferença entre as graduações de TI a outros profissionais, será comum ouvir respostas como: “o curso Análise e Desenvolvimento de Sistemas é mais objetivo, curto e vai te ajudar a entrar no mercado de trabalho mais rápido. Já Sistemas de Informação vai te dar mais noção sobre como modelar um sistema e também tem mais matérias de humanas. Ciência da Computação só tem muita matemática mesmo.” Claro que não é só isso, mas ouvir essa última sentença me despertou muita curiosidade e ao comparar as grades curriculares, vi que realmente fez sentido.
Mas por que tem matérias de matemática em graduações de TI? Precisa saber matemática para programar? Qual a verdadeira ligação entre ambos?
Quando eu tive a primeira matéria de matemática na faculdade, a professora perguntou para turma sobre a relação que tínhamos com a matemática. A turma se dividiu entre duas opiniões discrepantes, a primeira opinião pode ser representada pela fala do meu amigo, que foi a seguinte: “se você não gosta de matemática, não faz sentido fazer esse curso” que rapidamente foi retrucada pela segunda opinião de outros alunos: “tenho amigos programadores que são bem sucedidos e não precisam de matemática para trabalhar.”
Qual dessas opiniões faz mais sentido para você?
Precisa saber matemática para programar?
Para responder a essa pergunta, precisamos primeiro responder a outra pergunta: “programar o quê?“. Dependendo do que você vai desenvolver, pode ser necessário sim saber matemática. Porém, para sistemas simples (que pode ser a maioria dos casos), normalmente não é necessário saber matemática avançada para programar. Geralmente, no máximo, usamos uma aritmética simples que aprendemos no fundamental, nada complicado. Então, quais seriam as áreas de programação que usam uma matemática mais “pesada”? Segue alguns exemplos:
- Desenvolvimento de jogos: dependendo do jogo, pode ter muitas leis da física para que a movimentação de objetos e personagens seja feita. Existe muita matemática para simular saltos, colisões, tiros, etc. Sei que existem engines prontas com boa parte dessas funções, mas o fato é que alguém teve que programar e aprimorar. Geometria pode ser muito presente também;
- Softwares de engenharia que precisam fazer cálculos mirabolantes de engenharia;
- Computação gráfica e processamento de imagens: tive essas matérias na faculdade e é realmente puro cálculo. Imagine como é um algoritmo de uma funcionalidade qualquer de um editor de imagens: ele precisa trabalhar com matrizes e modificar cada pixel de uma forma diferente;
- Pesquisa e ordenação de dados: ter noções de logaritmos pode ajudá-lo a fazer uma análise assintótica, responsável por analisar algoritmos que lidam com um volume extenso de dados. Consegue imaginar como o algoritmo de pesquisa da Google consegue achar resultados tão rápido em meio a milhões e milhões de páginas indexadas?
Tem muitos outros exemplos, mas eu diria que são igualmente específicos; não são temas abordados em qualquer tipo de sistema. Logo, não é necessário ser um expert em matemática para trabalhar como programador. Existem muitos programadores que não são fãs de matemática e não precisam usá-la tanto no dia-a-dia. Mas então, será que existe alguma relação entre matemática e programação, mesmo se tratando de softwares simples?
Matemática, programação e lógica
Programar é, sobretudo, utilizar estruturas lógicas para construir algoritmos que farão algo. E para quem a gente constrói esses algoritmos? Para um computador. O que é um computador? Se analisarmos a etimologia, computador é “aquilo que computa, calcula”. Calcula o quê? Operações lógicas, ou matemáticas. Ao programar, você estará construindo uma estrutura que no final, será calculada/computada por um processador – um componente que só entende matemática.
A matemática, assim como programação, envolve usar a lógica para abstrair e resolver problemas. Se não ficou claro o que quero dizer, é que tanto matemática quanto programação dependem da lógica. Ou seja, você não precisa saber função quadrática para programar seu sistema em Fortran ou Lisp, mas precisa de lógica. Da mesma forma, é desnecessário saber programar um CRUD para fazer um cálculo de integral, mas se você não usar a lógica para ambos os casos, não vai ser possível solucioná-los.
O raciocínio lógico é necessário em ambos, matemática e programação. Por quê? Raciocínio lógico é a habilidade de organizar os pensamentos em estruturas que te permitem chegar num resultado ou numa conclusão. É necessário pensar organizadamente e de forma sequencial tanto para programar quanto para resolver um problema matemático. Em ambos, você resolve um passo de cada vez; o código executa uma linha por vez. Assim como na matemática: primeiro se resolve multiplicação e divisão para depois ir para a adição e subtração (exceto casos que possuam parênteses, mas deu para entender, né?). Raciocínio lógico depende de um pensamento organizado e sequencial.
Pode ser que quem gosta de matemática, tende a ter o raciocínio lógico mais treinado. Com a lógica treinada, aprender a programar pode se tornar mais fácil. Estudar matemática é uma ótima forma de treinar seu raciocínio lógico, mas não é a única forma. Além disso, nem todo mundo que é bom em matemática vai ser bom como programador. Eu mesma sou um exemplo, eu ia bem em exatas mas não programo lá tão bem assim. O que acontece é que programar depende de outras skills além da lógica. Mesmo assim, em certos pontos são super parecidas, vou dar um exemplo:
Função polinomial de 2º grau:
f(x) = ax² + bx + c
Função qualquer em javascript:
function calc(x) {
return x + x;
}
Ambos tem “função” no nome e recebem um parâmetro que será usado para fazer algum cálculo. Farão a mesma coisa com o parâmetro (ou variável recebida): aplicar na fórmula (ou algoritmo) e resolver. Quem conseguiu assimilar bem essa matéria no ensino médio, não vai estranhar as funções dentro das linguagens de programação. Essa e outras coincidências sempre acontecem entre esses dois campos.
Um probleminha na educação
Eu diria que matemática e programação são irmãs, filhas da lógica e abstração. A matemática em si pode ser maravilhosa, porém, tanto a matemática que aprendemos no ensino médio quanto a matemática de uma graduação em Ciência da Computação possuem uma carência, na minha opinião, na forma que são ensinados: a contextualização.
Muitas vezes, estamos aprendendo as fórmulas e praticando-as em exercícios sem saber o real motivo daquilo tudo existir. Raramente vemos conexão com a matemática ensinada no meio acadêmico e o mundo real e acabamos não percebendo o quão presente a matemática está no nosso cotidiano.
Não aprender como funciona na prática colabora com o fato de muitos acharem chato ou desinteressante; contribuindo com o famoso “aposto que nunca vou precisar usar isso na minha vida“.
Quando cursamos as matérias de cálculo em Ciência da Computação, algumas matérias vistas no ensino médio começam sim a fazer sentido. Mas aí, o “não fazer tanto sentido” que essas matérias do ensino médio tinham até então, parecem que são transferidas para as matérias da faculdade. É triste, já que a matemática pode ser muito interessante e divertida mesmo não sendo exclusivamente necessária para programar.
Podemos tentar melhorar essa situação
Por isso, meu objetivo principal com esse singelo blog é contextualizar melhor a matemática teórica com o nosso mundo. Também vou falar de outros assuntos relacionados a computação e programação.
Conhecimentos que podem não parecer úteis agora podem ajudar lá na frente, ou não. A questão é que é importante não rejeitarmos conhecimento, ainda mais quando são relacionados direta ou indiretamente com nossa área. Ser receptivo a novos aprendizados é fundamental para nossa evolução.
Obrigada por chegar até aqui! <3