p Eminente cientista da computação Leslie Lamport, vencedor do Prêmio Turing de 2013, falando no diálogo realizado em conjunto com o SMU-Global Young Scientists Summit 2020. Crédito:Rebecca Tan
p Você já seguiu uma receita de fazer pão? Se você tem, Parabéns; você executou um algoritmo. Os algoritmos que nos seguem pela Internet para sugerir itens de que podemos gostar, e aqueles que controlam o que aparece em nossos feeds do Facebook podem parecer misteriosos e misteriosos às vezes. Ainda, um algoritmo é simplesmente um conjunto de instruções a serem concluídas em uma sequência especificada, seja por padeiros humanos ou programas de computador. p A diferença, Contudo, reside em como o algoritmo é expresso. As receitas são escritas em inglês ou outras linguagens faladas, enquanto os programas de computador são escritos em linguagens de programação ou código. De acordo com Leslie Lamport, vencedor do Prêmio Turing de 2013, pensar matematicamente pode ser uma etapa útil para especificar o algoritmo para programas de computador, pois pode ajudar os programadores a esclarecer seu pensamento e tornar os programas mais eficientes.
p "A maioria dos programadores simplesmente começa a escrever código; eles nem sabem o que é o algoritmo. É como começar a construir sem um projeto, "disse o Dr. Lamport, falando em um diálogo exclusivo na Singapore Management University (SMU) em 14 de janeiro de 2020, realizado em conjunto com o SMU-Global Young Scientists Summit 2020.
p "E o resultado? O programa é difícil de depurar e ineficiente porque você estaria tentando otimizar no nível do código, e não no nível do algoritmo. Devemos fazer o que quase todos os outros campos da ciência e da engenharia fazem:inicialmente descrever o problema com matemática em vez disso. "
p
Por que a matemática é melhor do que o código
p Usando o algoritmo de Euclides como exemplo, O Dr. Lamport mostrou ao público como um algoritmo pode ser expresso de forma precisa, mas simples, com matemática. Descrito pelo antigo matemático grego Euclides em 300 aC, O algoritmo de Euclides é um método para identificar o máximo divisor comum (GCD) de dois números, isso é, o maior número que pode dividir os dois números sem deixar resto. Por exemplo, o GCD dos números 15 e 12 é 3.
p O método é simples:subtraia o número menor do número maior, então repita até que ambos os números sejam iguais; o número resultante é o GCD. Todo o procedimento pode ser descrito em uma única fórmula matemática, disse o Dr. Lamport, que é reconhecido por desenvolver o formato de arquivo LaTex amplamente usado, além de seu trabalho pioneiro em sistemas de computação distribuída.
p Em contraste, escrever o algoritmo de Euclides em código é mais demorado e complicado, e, portanto, mais difícil de depurar se não estiver funcionando corretamente. "O programa de Euclides teria que conter muitos detalhes de nível inferior, como o que você deve fazer se qualquer número for menor ou igual a zero, "Dr. Lamport disse." Você teria que decidir se está escrevendo um programa de computador, mas não é problema do algoritmo. "
p Quão mais eficiente seria usar matemática em vez de código? Quando os engenheiros usaram TLA +, uma linguagem de especificação formal de alto nível baseada na matemática desenvolvida pelo Dr. Lamport para modelar, documentar e verificar sistemas de computação simultâneos, eles foram capazes de reduzir drasticamente o tamanho de um sistema operacional originalmente usado para controlar alguns experimentos na espaçonave Rosetta. "Um dos resultados da especificação da lógica do software com TLA + foi que o tamanho do código foi capaz de ser reduzido a cerca de dez vezes menos do que o original, "Dr. Lamport disse." Você não reduz o tamanho do código em dez vezes com uma codificação melhor; você faz isso por uma arquitetura mais limpa, que é apenas mais uma palavra para um algoritmo melhor. "
p Além de ser mais eficiente, adotar uma abordagem matemática tem o benefício adicional de tornar a depuração mais fácil. Os engenheiros da Amazon Web Services e do Microsoft Azure usam TLA + para seus serviços em nuvem, Dr. Lamport disse, e através dele encontraram bugs em seus projetos de sistema que não podiam ser encontrados por meio de nenhuma outra técnica.
p
Fique confortável com a matemática
p Embora a matemática seja poderosa e elegante quando se trata de descrever algoritmos, muitas pessoas - incluindo programadores de computador e engenheiros - ficam intimidadas e evitam usá-lo. "Alguns alunos nos perguntaram quando eles podem parar de fazer e revisar a matemática e começar a programação do software, "disse o professor Steven Miller, Vice Reitor (Pesquisa) da SMU e ex-Reitor Fundador da Escola de Sistemas de Informação.
p O Dr. Lamport acredita que se acostumar a 'falar' em matemática é uma questão de exposição. "Por que 'dois mais dois é igual a quatro' é considerado simples, mas uma operação lógica como 'um elemento de' é difícil de entender para a maioria das pessoas? Operações lógicas como" elemento de "simplesmente significam que algo é parte de um monte de outras coisas . Esse conceito não exige que você aprenda coisas complicadas como contar, porque a contagem é bastante complicada, " ele disse.
p "Por que 'elemento de' parece assustador quando 'mais' parece tão fácil? É só uma questão de não estar familiarizado com ele, e isso não é tudo culpa sua - os matemáticos são péssimos em ensiná-lo. "
p Para o Dr. Lamport, tornar-se fluente em matemática é o primeiro passo, mas para o pensamento matemático realmente impactar a maneira como os algoritmos são escritos, tem que mudar a maneira como pensamos. "Quero enfatizar que a matemática não resolve o problema para você; você tem que resolver o problema, "disse ele." Pensar matematicamente o ajudará a resolver o problema; e a matemática ajuda a garantir que a solução estava certa. "