¿De qué manera las matemáticas son similares a la codificación?

Creo que la respuesta obvia (y breve) es acerca de la programación funcional, que es “muy buena para modelar construcciones matemáticas y está muy ligada a conceptos matemáticos, particularmente al cálculo de Lambda” – (respuesta en Ingeniería de software, StackExchange).

Para conocer los orígenes de esta conexión, consulte LISP de John McCarthy: el primer lenguaje de programación funcional fue “Originalmente creado como una notación matemática práctica para programas de computadora, LISP se basa en la notación del cálculo lambda de Alonzo Church”.

Los lenguajes de programación ahora están cayendo unos sobre otros para introducir una sintaxis funcional (y convertirse en algo más parecido a Lisp), una tendencia que Paul Graham pronosticó hace años. Básicamente, la programación es una forma de representar la lógica, y la programación funcional está más cerca de las formalidades matemáticas de la lógica que (por ejemplo) las declaraciones anidadas if o case-test.

En un sentido amplio, la programación es una forma de matemática aplicada. Más específicamente, una gran cantidad de código es efectivamente un modelo matemático que proporciona predicciones basadas en entradas, algoritmos de control (fórmulas) o transformaciones.

Ambos requieren un pensamiento lógico y abstracto.

Ambos requieren atención al detalle. Precisión sin concesiones.

Ambos tratan sobre la resolución de problemas (en matemáticas, demostrando teoremas; en programación, demostrando la corrección del programa); Se esperan soluciones. Por supuesto, en el mundo real, los programadores rara vez prueban que los programas son correctos (si alguna vez lo hacen). Se basan en pruebas exhaustivas y depuración para lograr un nivel de confianza particular de “corrección”. Un programa es correcto si cumple con los requisitos del usuario a satisfacción del usuario.

Sería lo suficientemente audaz como para decir que ambos resuelven el mismo tipo de problemas utilizando un lenguaje diferente.

La naturaleza aplicada de la codificación hizo que su familia lingüística se acercara más a los idiomas humanos nativos (en realidad inglés), mientras que el lenguaje matemático es bastante abstracto (la relación más cercana al lenguaje humano es el uso extensivo del alfabeto latino).

Al final, todo el código en ejecución se reduce a la aritmética y lógica del procesador, y podría describirse potencialmente en términos matemáticos.

En ambos esfuerzos, debe prestar atención a los detalles y ser preciso en su idioma. Tanto en matemática como en codificación, debe analizar todas las posibilidades. En ambos casos, es posible crear cosas subóptimas (código o prueba) que harían el trabajo en cuestión, pero serán feas y tal vez no sean aplicables a otras situaciones, mientras que un buen código o prueba podría adaptarse a otros problemas.

Probablemente hay otras similitudes, pero esto es lo que pensé de inmediato.