Geralmente a pergunta "por que precisamos de matemática?" responda 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 se desenvolvendo. Mas falar sobre matemática permanece muito abstrato. Quais “músculos mentais” específicos são treinados em álgebra escolar? Afinal, não se parece nada com matemática real, na qual grandes descobertas são feitas. O que dá a capacidade de procurar a derivada de algumas funções confusas?
Ensinar programação para alunos fracos me levou a uma resposta mais precisa à pergunta “por quê?”. No artigo, tentarei transmiti-lo a você.
Na escola, dedica-se bastante tempo à transformação e simplificação das expressões. Por exemplo: 81x
2 + 126xy + 49y
2 precisa ser convertido como (9x + 7y)
2 .
Neste exemplo, espera-se que o aluno lembre a fórmula do quadrado ao quadrado

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

convertido primeiro em

e então, com o refinamento (a + 2b)! = 0, acontece assim

Para alcançar esse resultado, o aluno precisa reconhecer na expressão original e aplicar três fórmulas:
- Quantidade ao quadrado
- Diferença quadrada
- Reduzir fatores multiplicadores
Em uma escola comum de álgebra, quase todo o tempo estávamos envolvidos em uma transformação de expressões. Na universidade de matemática superior, nada mudou significativamente. Disseram-nos como obter derivativos (integrais, etc.) e recebemos várias tarefas. Isso foi útil? Na minha opinião sim. Como resultado de tais exercícios:
- A habilidade de transformar expressões foi aperfeiçoada.
- A atenção aos detalhes se desenvolveu.
- Um ideal foi formado - uma expressão concisa pela qual se pode lutar.
Na minha opinião, a presença de tal ideal, qualidade e habilidade é muito útil no trabalho diário do desenvolvedor. De fato, simplificar a expressão significa, essencialmente, mudar sua estrutura para facilitar a compreensão, sem afetar o significado. Isso lembra alguma coisa?
Essa é praticamente a definição de refatoração do livro de mesmo nome de Martin Fowler.
Em seu trabalho, o autor as formula da seguinte forma:
Refatoração (n): Uma mudança na estrutura interna do software com o objetivo de facilitar o entendimento de sua operação e simplificar a modificação sem afetar o comportamento observado.
Executar refatoração (verbo): altere a estrutura do software aplicando uma série de refatoração sem afetar seu comportamento.
O livro fornece "fórmulas" que precisam ser reconhecidas no código-fonte e nas regras para sua conversão.
Como exemplo simples, citarei a “introdução de uma variável explicativa” do livro:
if ( (platform.toUpperCase().indexOf(“MAC”) > -1 ) &&
(browser.toUpperCase().indexOf(“IE”) > -1 )&&
wasInitialized() && resize > 0 ) {
// do something
}
, .
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) {
// do something
}
, .
, ?
, ? — .
, . ? . : , .
().
, «» . «» , . , . , .
, , .
, , . , …
, ? , . , . , «», .
, , .
:
1
2
3
4
5
6
7
:
static void Main(string[] args)
{
Console.WriteLine("");
Console.WriteLine(" 1");
Console.WriteLine(" 2");
Console.WriteLine(" 3");
Console.WriteLine(" 4");
Console.WriteLine(" 5");
Console.WriteLine(" 6");
Console.WriteLine(" 7");
Console.WriteLine("");
}
. . :
static void Main(string[] args)
{
Console.WriteLine("");
for (int i = 1; i <= 7; i++)
{
Console.WriteLine(" " + i);
}
Console.WriteLine("");
}
, . . — .
. , . , . . .
:
- , , .
- , — . 9 .