Normalmente, a resposta à pergunta "por que a matemática é necessária?" é algo como "ginástica para a mente". Na minha opinião, essa explicação não é suficiente. Quando uma pessoa realiza exercícios físicos, ela sabe o nome exato dos grupos musculares que estão sendo trabalhados. No entanto, as conversas sobre matemática continuam muito abstratas. Quais "músculos da mente" são treinados pela álgebra escolar? Ela é bem diferente da verdadeira matemática, onde são feitas grandes descobertas. O que a habilidade de buscar a derivada de algumas funções complicadas oferece?
Ensinando programação para alunos fracos, cheguei a uma resposta mais precisa para a pergunta "por quê?". Neste artigo, tentarei transmitir isso a você.

Na escola, há bastante tempo dedicado à transformação e simplificação de expressões. Por exemplo: 81×2+126xy+49y2 deve ser transformado como (9x+7y)2.
Neste exemplo, espera-se que o aluno se lembre da fórmula do quadrado da soma

Em casos mais complexos, a expressão obtida pode ser usada para outras transformações. Por exemplo:

é transformada primeiro em

e depois, com uma ressalva (a + 2b) != 0, resulta em

Para alcançar esse resultado, o aluno precisa reconhecer na expressão original e depois aplicar três fórmulas:
- Quadrado da soma
- Diferença de quadrados
- Redução de fatores de uma fração comum
Na escola, quase todo o tempo na álgebra era dedicado a esse tipo de transformação de expressões. Na universidade, na matemática superior, nada mudou substancialmente. Nos foram ensinadas a tirar derivadas (integrais, etc.) e nos deram uma tonelada de exercícios. Isso foi útil? Na minha opinião — sim. Como resultado da realização desses exercícios:
- A habilidade de transformar expressões foi aprimorada.
- Desenvolveu-se uma atenção aos detalhes.
- Foi formado um ideal — uma expressão concisa à qual se pode aspirar.
Na minha visão, ter esse ideal, qualidade e habilidade é muito útil no trabalho diário do desenvolvedor. Afinal, simplificar uma expressão, na essência, significa mudar sua estrutura com o objetivo de facilitar a compreensão, sem alterar o sentido. Isso não te lembra nada?
É praticamente a definição de refatoração do livro homônimo de Martin Fowler.
Em sua obra, o autor as formula da seguinte maneira:
Refatoração (Refactoring) (substantivo): mudança na estrutura interna do software, com o objetivo de facilitar a compreensão do seu funcionamento e simplificar a modificação, sem alterar o comportamento observado.
Realizar refatoração (Refactor) (verbo): modificar a estrutura do software, aplicando uma série de refatorações, sem afetar seu comportamento.
O livro fornece "fórmulas" que precisam ser reconhecidas no código-fonte e regras para sua transformação.
Como exemplo mais simples, cito a "introdução de uma variável explicativa" do livro:
if ( (platform.toUpperCase().indexOf(“MAC”) > -1 ) &&
(browser.toUpperCase().indexOf(“IE”) > -1 )&&
wasInitialized() && resize > 0 ) {
// faça algo
}Partes da expressão devem ser atribuídas a uma variável, cujo nome explica sua finalidade.
final boolean isMacOS = platform.toUpperCase().indexOf(“MAC”) > -1;
final boolean isIEBrowser = browser.toUpperCase().indexOf(“IE”) > -1;
final boolean isResized = resize > 0;
if(isMacOS && isIEBrowser && wasInitialized() && isResized) {
// faça algo
}
Imagine uma pessoa que não consegue simplificar expressões algébricas usando a fórmula do quadrado da soma e diferença dos quadrados.
Você acha que essa pessoa conseguirá refatorar o código?
Conseguirá ela, de fato, escrever um código que seja compreensível para outras pessoas, se não tiver formado um ideal dessa concisão? Na minha opinião, não.
No entanto, todos estudam na escola, e poucos se tornam programadores. É útil essa habilidade de transformar expressões para as pessoas comuns? Eu penso que sim. Apenas a habilidade é aplicada de uma forma mais abstrata: é necessário avaliar a situação e escolher a ação subsequente de modo a se aproximar do objetivo. Na pedagogia, esse fenômeno é chamado de .
Os exemplos mais marcantes aparecem em reparos domésticos feitos com ferramentas improvisadas, de maneira "caseira". Como resultado, surgem as chamadas "dicas" e life hacks, um dos quais está ilustrado no exemplo. O autor da ideia tinha um pedaço de madeira, um fio e quatro parafusos. Lembrando do modelo de um soquete para lâmpadas, ele montou um soquete caseiro a partir deles.
Mesmo ao dirigir, o motorista está constantemente reconhecendo padrões no mundo ao seu redor e realizando manobras apropriadas para chegar ao seu destino.
Quando você morre, você não sabe disso, apenas os outros sofrem. O mesmo acontece quando você não dominou a matemática…
O que acontece se uma pessoa não conseguir dominar a transformação de expressões? De vez em quando, dou aulas individuais para alunos que tiveram dificuldades em matemática na escola. Geralmente, eles ficam completamente atolados no tema dos loops. Tanto que precisamos trabalhar com 'álgebra', mas na linguagem de programação.
Isso acontece porque, ao escrever loops, a técnica principal consiste em transformar um grupo de expressões idênticas.
Suponha que o resultado do programa deva ser assim:
Introdução
Capítulo 1
Capítulo 2
Capítulo 3
Capítulo 4
Capítulo 5
Capítulo 6
Capítulo 7
Conclusão
Um programa trivial para alcançar esse resultado é assim:
static void Main(string[] args)
{
Console.WriteLine("Introdução");
Console.WriteLine("Capítulo 1");
Console.WriteLine("Capítulo 2");
Console.WriteLine("Capítulo 3");
Console.WriteLine("Capítulo 4");
Console.WriteLine("Capítulo 5");
Console.WriteLine("Capítulo 6");
Console.WriteLine("Capítulo 7");
Console.WriteLine("Conclusão");
}Mas essa solução está longe do ideal conciso. Primeiro, é necessário encontrar o grupo de ações que se repetem e, em seguida, transformá-lo. No final, obteremos a seguinte solução:
static void Main(string[] args)
{
Console.WriteLine("Introdução");
for (int i = 1; i <= 7; i++)
{
Console.WriteLine("Capítulo " + i);
}
Console.WriteLine("Conclusão");
}Se a pessoa não dominou a matemática na época certa, ela não conseguirá realizar tais transformações. Ela simplesmente não terá a habilidade necessária. É por isso que o tema dos loops é o primeiro obstáculo no aprendizado de um desenvolvedor.
Problemas semelhantes surgem em outras áreas. Se uma pessoa não sabe usar uma ferramenta à mão, não conseguirá mostrar engenhosidade no cotidiano. Comentários maldosos dirão que as mãos não estão no lugar certo. Na estrada, isso se manifesta na incapacidade de avaliar corretamente a situação e escolher a manobra. O que às vezes pode levar a consequências trágicas.
Conclusões:
- A matemática escolar e universitária é necessária para que possamos melhorar o mundo com os meios que temos.
- Se você está estudando e encontra dificuldades em aprender sobre loops, tente voltar às origens — à álgebra escolar. Pegue um livro de exercícios da 9ª série e resolva os problemas.
Fonte: habr.com
