¿Dónde y cómo se superponen la programación y las matemáticas?

Muchas buenas respuestas ya. Para agregar a la respuesta de Steve Baker: Por supuesto, hay ciencia computacional . Usted sabe, donde las personas usan su computadora para hacer cálculos complejos que permiten a los científicos e ingenieros simular proteínas que causan cáncer, optimizar la aerodinámica del automóvil para que su automóvil use menos combustible, calcular la conductividad de algunas aleaciones de metal o permitir el pronóstico del tiempo para el Día siguiente. Eso generalmente significa que hay un conjunto de ecuaciones lineales o no lineales acopladas, ecuaciones diferenciales parciales, una ecuación integral o un problema de optimización que es demasiado complejo para resolver con lápiz y papel. Sin embargo, la computadora no tiene noción de qué es, por ejemplo, una ecuación diferencial. Por lo tanto, el problema debe convertirse en simples bloques de construcción que se puedan manejar en la computadora. Este es el dominio de las matemáticas numéricas. Un ejemplo simple para resolver ecuaciones no lineales es el método babilónico para calcular una raíz cuadrada (Métodos de cálculo de raíces cuadradas – Wikipedia). El resultado es un modelo numérico que ya no trata con una ecuación diferencial, sino con una gran cantidad de operaciones simples. Este modelo numérico se implementa como código (por ejemplo, Python o Matlab para cosas pequeñas, C ++, C o Fortran para el trabajo pesado y, a veces, incluso lenguaje ensamblador para las partes más críticas). A menudo, los cálculos tomarán demasiado tiempo en una sola computadora. Luego escribimos código paralelo para que se ejecute en los múltiples nodos de cómputo de un grupo de computadoras.

Una conexión formal es a través de la correspondencia Curry-Howard – Wikipedia (también conocida como isomorfismo Curry-Howard). En resumen, y simplificado en exceso, cada programa de computadora puede verse como una prueba matemática y cada prueba matemática como un programa de computadora. Otra conexión fuerte es a través de la correspondencia formal entre las funciones recursivas y el cálculo Lambda: Wikipedia, la primera relacionada con las matemáticas constructivas y la segunda, el primer lenguaje de programación (funcional) de la computadora (incluso antes de que existieran las computadoras) tal como lo introdujo Alonzo Church, uniendo las matemáticas lógica y computación. Dicho de otro modo, las matemáticas constructivas pueden escribirse como programas informáticos digitales, e incluso las matemáticas no constructivas pueden escribirse en un lenguaje informático de alto nivel (por ejemplo, el lenguaje de descripción de Gurevich) para producir matemáticas de alto nivel que pueden ser realizadas por probadores de teoremas automáticos como Coq .

Depende en gran medida de cómo defina las matemáticas . Sostengo que la programación es en realidad un subconjunto de las matemáticas. Otros pueden sentir diferente acerca de eso. Pero si lo piensas, realmente lo es.

Para empezar, se trata directamente con la lógica en la programación. La decisión se ramifica según el resultado de algún predicado lógico . Y luego hay varios cálculos que uno debe hacer, especialmente, por ejemplo, en programación de juegos , cálculos financieros , medidas estadísticas , etc.

Todo lo que tenga que ver con el aprendizaje automático se trata principalmente de cálculos matemáticos, ya sea basado en el gradiente de gradiente, en cuyo caso estás hablando de cálculo, o basado en la evolución, en cuyo caso estás hablando de estadísticas.

Incluso la programación de la interfaz de usuario similar realizada normalmente para dispositivos móviles y sitios web implica cálculos y decisiones para el diseño de componentes, que deben establecerse correctamente en un conjunto diverso de dispositivos y navegadores y similares. Sin embargo, la mayoría de esos intrincados cálculos y decisiones normalmente están ocultos para el programador en un marco, en sí mismo un programa elaborado.

Luego está la programación funcional que ha tomado la luz de la luz últimamente, y sus raíces se remontan a la teoría de la categoría, que es especialmente evidente en un lenguaje como Haskell.

Una buena pregunta es qué aspecto de la programación no es matemático. ¡Te dejaré masticar eso, y siéntete libre de poner tus pensamientos en los comentarios!

Todo depende de qué rama de programación estés haciendo.

No toda la programación tiene muchas matemáticas:

Si está ordenando alfabéticamente los registros de clientes de su sistema bancario y marca los que tienen un saldo de menos de $ 100, entonces necesitará casi cero matemáticas más allá de la aritmética más básica del jardín de infantes, solo sumando y restando números enteros, nada más.

Pero algunas programaciones tienen MUCHAS matemáticas:

Soy ingeniero de gráficos en 3D. Trabajo en videojuegos y gráficos fotorrealistas.

En lo que estoy trabajando ahora es en gráficos 3D eficientes (y moderadamente realistas) para el océano. Si está haciendo eso, es posible que se encuentre en los reinos de las transformadas de Fourier o las funciones Wavelet para modelar la forma de las ondas: utilizará un montón de álgebra lineal para realizar rotaciones y cálculos en perspectiva y para descubrir reflejos del medio ambiente utilizando 4 × 4 matrices homogéneas y vectores. Los controles de su cámara pueden usar Quaternions (también conocidos como Hamiltonianos, que son como números complejos pero con cuatro elementos en lugar de dos). También usará mucha física, y la física aprovecha más las matemáticas, por lo que para que su océano se desvanezca de manera realista en la distancia, es posible que necesite ecuaciones de dispersión de Rayleigh y Mie. El color del agua requiere que lidies con las condiciones de Fresnel. Todo esto requerirá que se sienta cómodo con el álgebra, las ecuaciones simultáneas, los teoremas de Euler en geometría, el teorema de Pitágoras, la trigonometría … todas esas cosas entrarán en juego. Para controlar el alias de sus ondas, necesita comprender el teorema de muestreo de Nyquist-Shannon. Si el océano es grande y el mundo simulado es redondo, entonces el líder de su equipo podría sugerirle que lea sobre el “teorema de la pelota peluda” de la topología algebraica. Entonces, dirígete a Wikipedia y se espera que comprendas el significado de enunciados como: ” No hay un campo de vector tangente continuo que no desaparezca en n-esferas de dimensiones pares ” y ” Si f es una función continua que asigna un vector en R3 a cada punto p en una esfera tal que f (p) siempre es tangente a la esfera en p, entonces hay al menos una p tal que f (p) = 0 ”. (Lo que se reduce a “No puedes usar una textura 2D porque se verá realmente horrible cuando te acerques a los polos Norte y Sur de tu planeta”). Dado que el mundo es redondo, pero no esférico, incluso es posible que deba sumergirse en secciones cónicas para comprender las ecuaciones que describen la forma con mayor precisión.

En otras partes de lo que hago, a menudo me encuentro necesitando una comprensión básica de los fractales, la teoría de los números primos y una pizca de estadísticas, pero hasta ahora, no he necesitado ningún cálculo, lo cual es igual de bueno porque me he olvidado ¡La mayor parte!

Mucho de lo que hay en un videojuego es física … y la física aprovecha las matemáticas.

Entonces, ya sea aritmética de jardín de infantes … o matemáticas de nivel universitario … o en algún lugar entre esos dos límites.