La eminente científica informática Leslie Lamport, ganador del premio Turing 2013, hablando en el diálogo celebrado en conjunto con la SMU-Global Young Scientists Summit 2020. Crédito:Rebecca Tan
¿Has seguido alguna vez una receta para hornear pan? Si usted tiene, Felicidades; ha ejecutado un algoritmo. Los algoritmos que nos siguen en Internet para sugerir elementos que nos pueden gustar, y aquellos que controlan lo que aparece en nuestros feeds de Facebook pueden parecer misteriosos y extraños a veces. Todavía, un algoritmo es simplemente un conjunto de instrucciones que deben completarse en una secuencia específica, ya sea por panaderos humanos o por programas de computadora.
La diferencia, sin embargo, radica en cómo se expresa el algoritmo. Las recetas están escritas en inglés u otros idiomas hablados, mientras que los programas de computadora están escritos en lenguajes de programación o en código. Según Leslie Lamport, ganador 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 simplemente comienzan a escribir código; ni siquiera saben qué es el algoritmo. Es como comenzar a construir sin un plano, "dijo el Dr. Lamport, hablando en un diálogo exclusivo en la Singapore Management University (SMU) el 14 de enero de 2020, celebrada junto con la SMU-Global Young Scientists Summit 2020.
"¿Y el resultado? El programa es difícil de depurar e ineficiente porque estaría tratando de optimizar 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 que las matemáticas son mejores que el código
Usando el algoritmo de Euclides como ejemplo, El Dr. Lamport mostró a la audiencia cómo se puede expresar un algoritmo de manera precisa pero simple con las matemáticas. Descrito por el antiguo matemático griego Euclides en el 300 a. C., El algoritmo de Euclides es un método para identificar el máximo común divisor (MCD) de dos números, es decir, el número más grande que puede dividir los dos números sin dejar un residuo. 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 GCD. Todo el procedimiento se puede describir en una única fórmula matemática, dijo el Dr. Lamport, que es reconocido por desarrollar el formato de archivo LaTex ampliamente utilizado, además de su trabajo pionero en sistemas informáticos distribuidos.
A diferencia de, escribir el algoritmo de Euclid 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 debería contener muchos detalles de nivel inferior, como lo que debe hacer si alguno de los números es menor o igual a cero, ", Dijo el Dr. Lamport." Debería decidir eso si está escribiendo un programa de computadora, pero no es problema del algoritmo ".
¿Cuánto más eficiente sería usar matemáticas en lugar de código? Cuando los ingenieros usaban TLA +, un lenguaje de especificación formal de alto nivel basado en matemáticas desarrollado por el Dr. Lamport para modelar, documentar y verificar los sistemas informáticos concurrentes, pudieron reducir drásticamente el tamaño de un sistema operativo utilizado originalmente para controlar algunos experimentos en la nave espacial Rosetta. "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 unas diez veces menos que el original, "Dijo el Dr. Lamport." No se reduce el tamaño del código diez veces con una mejor codificación; lo haces con 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 utilizan TLA + para sus servicios en la nube, El Dr. Lamport dijo:ya través de él, han encontrado errores en los diseños de sus sistemas que no se podrían encontrar con ninguna otra técnica.
Siéntete 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 informáticos, se sienten intimidados por él 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, Vicerrector (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 significan que algo es parte de un montón de otras cosas . Ese concepto no requiere que aprendas cosas complicadas como contar, como contar es bastante complicado, " él dijo.
"¿Por qué el 'elemento de' debería parecer 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 enseñándolo ".
Para el Dr. Lamport, dominar las matemáticas es el primer paso, pero para que el pensamiento matemático impacte realmente en la forma en que se escriben los algoritmos, tiene que cambiar nuestra forma de pensar. "Quiero enfatizar que las matemáticas no resuelven el problema por ti; tienes que resolver el problema, ", dijo." Pensar matemáticamente te ayudará a resolver el problema; y las matemáticas ayudan a garantizar que la solución sea la correcta ".