Habla matemáticas, no código - .

Breaking

Geometría Analítica con GeoGebra

jueves, 5 de marzo de 2020

Habla matemáticas, no código

¿Alguna vez has seguido una receta para hornear pan? Si es así, felicidades; Has ejecutado un algoritmo. Los algoritmos que nos siguen en Internet para sugerir elementos que podrían gustarnos, y aquellos que controlan lo que aparece en nuestros feeds de Facebook pueden parecer misteriosos y misteriosos a veces. Sin embargo, un algoritmo es simplemente un conjunto de instrucciones que deben completarse en una secuencia específica, ya sea por panaderos humanos o programas de computadora.

La diferencia, sin embargo, radica en cómo se expresa el algoritmo. Las recetas se escriben en inglés u otros idiomas hablados, mientras que los programas de computadora se escriben en lenguajes de programación o código. Según Leslie Lamport, ganadora del Premio Turing 2013, pensar matemáticamente puede ser un paso útil para especificar el algoritmo para programas de computadora, ya que puede ayudar a los programadores a aclarar su pensamiento y hacer que los programas sean más eficientes.

"La mayoría de los programadores comienzan a escribir código; ni siquiera saben cuál es el algoritmo. Es como comenzar a construir sin un plan", dijo el Dr. Lamport, hablando en un diálogo exclusivo en la Singapore Management University (SMU) el 14 de enero 2020, celebrado en conjunto con la SMU-Global Young Scientists Summit 2020.

"¿Y el resultado? El programa es difícil de depurar e ineficiente porque estarías tratando de optimizarlo a nivel de código en lugar de a nivel de algoritmo. Deberíamos hacer lo que casi todos los demás campos de la ciencia y la ingeniería hacen: describir inicialmente el problema con matemáticas en su lugar ".


¿Por qué las matemáticas son mejores que el código?


Usando el algoritmo de Euclides como ejemplo, el Dr. Lamport guió a la audiencia a través de cómo un algoritmo puede expresarse de manera precisa pero simple con las matemáticas. Descrito por el antiguo matemático griego Euclides en 300 a. C., el algoritmo de Euclides es un método para identificar el máximo divisor común (MCD) de dos números, es decir, el número más grande que puede dividir los dos números sin dejar un resto. Por ejemplo, el MCD de los números 15 y 12 es 3.

El método es simple: reste el número más pequeño del número más grande, luego repita esto hasta que ambos números sean iguales; El número resultante es el MCD. Todo el procedimiento se puede describir en una sola fórmula matemática, dijo el Dr. Lamport, quien es reconocido por desarrollar el formato de archivo LaTex ampliamente utilizado, además de su trabajo pionero en sistemas de computación distribuida.

En contraste, escribir el algoritmo de Euclides en código es más lento y engorroso, y por lo tanto más difícil de depurar si no funciona correctamente. "El programa de Euclid tendría que contener muchos detalles de nivel inferior, como lo que debe hacer si cualquiera de los números es menor o igual a cero", dijo el Dr. Lamport. "Tendrías que decidir eso si estás escribiendo un programa de computadora pero no es el problema del algoritmo".

¿Cuánto más eficiente sería usar las matemáticas en lugar del código? Cuando los ingenieros utilizaron TLA +, un lenguaje de especificación formal de alto nivel basado en las matemáticas desarrollado por el Dr. Lamport para modelar, documentar y verificar sistemas informáticos concurrentes, pudieron reducir drásticamente el tamaño de un sistema operativo originalmente utilizado para controlar algunos experimentos en Rosetta astronave. "Uno de los resultados de especificar la lógica del software con TLA + fue que el tamaño del código se pudo reducir a aproximadamente diez veces menos que el original", dijo el Dr. Lamport. "No se reduce el tamaño del código diez veces mediante una mejor codificación; lo hace mediante una arquitectura más limpia, que es solo otra palabra para un mejor algoritmo".

Además de ser más eficiente, adoptar un enfoque matemático tiene el beneficio adicional de facilitar la eliminación de errores. Los ingenieros de Amazon Web Services y Microsoft Azure usan TLA + para sus servicios en la nube, dijo el Dr. Lamport, y a través de él han encontrado errores en los diseños de sus sistemas que no se podían encontrar mediante ninguna otra técnica.

Ponte cómodo con las matemáticas


Aunque las matemáticas son poderosas y elegantes cuando se trata de describir algoritmos, muchas personas, incluidos los programadores e ingenieros de computadoras, se sienten intimidados y evitan usarlo. "Algunos estudiantes nos han preguntado cuándo pueden dejar de hacer y revisar las matemáticas y comenzar la programación del software", dijo el profesor Steven Miller, Vice Rector (Investigación) en SMU y ex decano fundador de la Escuela de Sistemas de Información.

El Dr. Lamport cree que acostumbrarse a "hablar" en matemáticas es una cuestión de exposición. "¿Por qué 'dos ​​más dos es igual a cuatro' se considera simple pero una operación lógica como 'un elemento de' es difícil de entender para la mayoría de las personas? Las operaciones lógicas como" elemento de "simplemente significa que algo es parte de un montón de otras cosas "Ese concepto no requiere que aprendas algo complicado como contar, ya que contar es realmente bastante complicado", dijo.

"¿Por qué el 'elemento de' parece aterrador cuando 'más' parece tan fácil? Es solo una cuestión de no estar familiarizado con él, y esto no es todo culpa tuya: los matemáticos son terribles al enseñarlo".

Para el Dr. Lamport, dominar las matemáticas es el primer paso, pero para que el pensamiento matemático realmente impacte la forma en que se escriben los algoritmos, tiene que cambiar la forma en que pensamos. "Quiero enfatizar que las matemáticas no resuelven el problema por ti; tienes que resolver el problema", dijo. "Pensar matemáticamente lo ayudará a resolver el problema; y las matemáticas ayudan a garantizar que la solución sea correcta".

No hay comentarios:

Publicar un comentario