¿Cómo juegan las matemáticas un papel importante en la programación?

Las matemáticas que aprende en la escuela secundaria, principalmente aritmética y álgebra, son extremadamente importantes en la programación de computadoras porque es extremadamente importante en prácticamente cualquier industria que use programas de computadora (que hoy en día son todas). Las computadoras fueron diseñadas inicialmente para realizar exactamente este tipo de matemática simple, permitiendo a físicos e ingenieros de la era espacial altamente remunerados dedicar su tiempo a la teoría y la implementación en lugar del “trabajo de corte” del cálculo.

Los conceptos básicos que usará todos los días en prácticamente cualquier trabajo de programación generalmente se encuentran en el campo de las “matemáticas discretas”. Las matemáticas discretas son distintas de las “matemáticas continuas” en que la disciplina se enfoca en problemas matemáticos que no se pueden o no se pueden representar en términos de una función matemática continua; en su lugar, se presentan en “conjunto” de datos numéricos discretos. Hay muchas superposiciones entre las matemáticas continuas y discretas, pero muchas ramas se encuentran totalmente dentro de una u otra.

Las cosas que verá mucho en cualquier lugar al que vaya incluyen:

* Aritmética: natch. Si al menos no sabe lo que hacen los cuatro operadores aritméticos principales, no tiene por qué tratar de programar. La aritmética es la base de toda la programación básica, y puede ser todo lo que necesita.
* Lógica booleana: estos son los principios básicos detrás del funcionamiento de la computadora electrónica moderna; todo el cálculo binario se reduce a una combinación de tres operadores (NOT, AND, OR) que toman uno o dos bits de entrada y producen un bit de resultado.
* Teoría de conjuntos: es posible que nunca obtenga una formación teórica formal en esta rama de las matemáticas al aprender a programar, pero le garantizo que la teoría moderna de programación de computadoras se basa en el concepto matemático de un “conjunto”, una colección de objetos distintos que puede considerarse un objeto distinto en sí mismo.
* Aritmética de enteros y modulares: las limitaciones en la forma en que una computadora almacena y representa datos, a su vez fundamentalmente limitada por la representación de números de memoria discreta finita de la computadora, significa que, en última instancia, todos los cálculos matemáticos se realizan en enteros, con dos números enteros que representan un racional de diferentes maneras (un número entero es el “significado”, y el otro es la posición del lugar decimal en ese significado en la notación de “punto fijo”, o la potencia de dos a la que se debe elevar el significado para llegar a la número real en notación de “punto flotante”). Por lo tanto, es fundamental para la programación comprender las limitaciones inherentes de realizar tales cálculos en una computadora. Además, estas limitaciones pueden explotarse e incluso definirse artificialmente de varias maneras que tengan interés para la criptografía y otros subcampos de la informática.
* Teoría de gráficos: un gráfico es un conjunto de nodos interrelacionados. Los nodos tienen información sobre sí mismos, más información sobre “conexiones” a otros nodos (llamados “bordes”). Si ha tomado cursos formales de ciencias de la computación, esto debería sonar muy familiar como base para listas vinculadas, pilas, colas, árboles, montones y otros mecanismos de almacenamiento de datos. También resulta una forma conveniente de representar redes, desde el tipo social hasta el tipo de datos y el tipo de transporte humano. Existen varios buenos algoritmos para optimizar gráficos y su recorrido, que tienen aplicación en todo, desde la estructura y el diseño de Internet hasta Google Maps y su GPS.
* Cálculo discreto: este es, en un sentido amplio, el estudio de la aplicación de algoritmos discretos para resolver problemas que normalmente requieren fórmulas matemáticas continuas. Tratar de programar una computadora para que siga todas las reglas de diferenciación e integración de funciones continuas lleva mucho tiempo y, en última instancia, es contraproducente. Pero no tenemos que hacerlo, porque esas fórmulas se derivaron en parte para simplificar la cantidad de aritmética simple necesaria para encontrar un área delimitada por la curva. Bueno, la aritmética simple es para lo que se construyó una computadora, por lo que simplemente podemos configurarla para calcular el valor discreto de la función en valores X separados por algún delta arbitrariamente pequeño, luego calcular la suma de Riemann, la cuadratura gaussiana o una aproximación similar, y aún así, encontrar una respuesta precisa dentro de los límites de los tipos de datos que la computadora usa más rápido de lo que un humano podría encontrar la respuesta exacta. Estos tipos de cálculos, a su vez, son prácticamente la única forma de modelar cosas que representan las funciones continuas, como una bala de cañón de masa m volando por el aire después de recibir un impulso inicial de fuerza F con el tiempo ti en un ángulo de inclinación a con gravedad Fg y coeficiente de arrastre Cd . Determinar cosas como la velocidad de impacto del proyectil, el punto de impacto a lo largo del suelo, la altura máxima de desplazamiento, etc., son problemas complejos de ecuaciones diferenciales debido al cálculo de la resistencia (que es co-dependiente de la velocidad y, por lo tanto, del tiempo). puede resolverse con un nivel práctico de precisión simplemente conectando las variables y haciendo que la computadora calcule la posición instantánea, los vectores de velocidad y los vectores de aceleración a intervalos de tiempo arbitrariamente cortos. Ese mismo método es prácticamente la única forma de modelar estas interacciones en tiempo real para cosas como los juegos.

La programación diaria en realidad no requiere matemáticas avanzadas: puede comprender todo lo que necesita saber sobre matemáticas para la programación de propósito general, incluidos los algoritmos más utilizados, con aritmética y álgebra básicas. Muchas personas, incluido yo mismo durante la mayor parte de mi carrera, nunca aprenden más que eso.

Si trabajas en un campo más especializado, te encontrarás aplicando matemáticas más altas en el día a día. Buenos ejemplos son gráficos en 3D, finanzas o datos científicos. Principalmente geometría, álgebra lineal, trigonometría y un pequeño cálculo para gráficos, cálculo en finanzas y potencialmente cualquier cosa / todo en datos científicos, dependiendo de lo que esté haciendo con él.

También se encontrará necesitando una sólida comprensión del binario si está trabajando más cerca del metal desnudo donde cada bit y cada operación cuentan (por ejemplo, programación de sistemas).

Con la forma popular de enseñar y aprender programación de computadoras, no está estrechamente relacionado con las matemáticas y alguien que odia las matemáticas podría amar la programación. Además, la programación de computadoras en la práctica tiende a estar más relacionada con el uso de API, SDK o frameworks, y la programación de aprendizaje es como entrenarse para familiarizarse con ellos. Si solo juegas con lenguajes de programación imperativos o de procedimiento, que es el más común, nunca entenderías cómo las matemáticas juegan un papel importante en la programación de computadoras.

Si desea sentir lo cerca que están, puede estudiar programación funcional. Y un día descubriría que todo lo que había aprendido de los maestros de matemáticas en un salón de clases era en realidad un lenguaje de programación.

Comienzo de la inmutabilidad. Piense que en realidad no existe una variable mutable en el álgebra, lo que nos hace traducir o convertir del algoritmo matemático a lenguajes de programación imperativos. Cuando lo comprenda con el paradigma de programación funcional y se convierta en escribir un programa con pocas variables, se encontrará escribiendo expresiones matemáticas con el teclado de su computadora.

Sabes que una computadora no entiende nada excepto 0/1. Entonces, si desea que una computadora haga algo, debe ordenarla usando solo 0/1.
La programación consiste en establecer algunas instrucciones para la computadora de manera sistemática.
Estas instrucciones son una mezcla de matemática y lógica (que también resulta en 0/1).
Para resolver un problema, debe dividir el proceso de resolución en varios pasos que no son más que operaciones matemáticas o cálculos lógicos.
Es probable que el procedimiento completo resuelva un problema matemático en el que haces matemáticas en cada paso de la solución o tomas una decisión lógica.
Así que desearía poder ayudarte a descubrirlo.

Cuando estaba en mis primeros años en Programación y cursos relacionados, también tenía la misma pregunta. Luego me topé con un tema llamado Matemáticas discretas. Una vez que aprenda este tema y pase un tiempo en el desarrollo, comenzará a relacionar la programación con las matemáticas. Obviamente, no enteramente las matemáticas que aprendimos, pero sí, sin embargo, se basa en las matemáticas.

Aprendí otra asignatura de programación gráfica. Está relacionado con la programación para GUI. Durante este tema, usé mucho la trigonometría. Sí, nuestra vieja trigonometría que aprendí hace varios años y que no había usado desde entonces. Me sorprendió que algo que nunca quise aprender se utilizará de esta manera.

Según las matemáticas, las matemáticas son el estudio de temas como la cantidad (números), la estructura, el espacio y el cambio. Bueno, en la programación, usamos al menos tres conceptos de los cuatro mencionados anteriormente, es decir, cantidad (números), estructura y cambio.

Espero poder aclarar algunas de sus dudas. ¿Por qué algunas? porque hasta que pases un tiempo averiguando la respuesta tú mismo, no puedes creerlo. 🙂

No siempre Básicamente, las computadoras solo hacen matemáticas. Cada programa se reduce al almacenar números, moverlos o hacer operaciones aritméticas con ellos. Eso es.

Para un programador, aunque no necesita saber esas cosas. A menudo tienes que analizar los tiempos de ejecución. Eso necesita matemática. Muchos problemas específicos necesitan matemática: como gráficos e IA.

También las matemáticas son sobre lógica. Las computadoras son lógicas. A menudo aprendemos matemáticas para agudizar nuestros fundamentos lógicos.

La programación no necesariamente tiene que involucrar cálculos matemáticos pesados ​​… a menos que esté agrupando la lógica básica en eso. Si comprende la lógica booleana básica y tal vez alguna teoría de conjuntos, entonces debería estar bien para la mayoría de la programación. Sin embargo, si desea escribir un motor gráfico o hacer algún tipo de simulación física, entonces obviamente el dominio requiere algunas matemáticas más avanzadas. Sin embargo, no diría que se requiere un alto nivel de matemáticas para la programación.

Básicamente esto:

  • Matemáticas discretas, absolutamente.
  • Álgebra básica y aritmética, absolutamente.
  • Más allá de eso (cosas más avanzadas) muy poco a menos que lo desee.

Indirectamente:

Un problema en matemáticas generalmente tiene algún tipo de parámetros y axiomas. Para mí, abordar un problema de matemáticas a menudo requiere habilidades analíticas y pensamiento crítico que implica pasos lógicos.

Estas habilidades también se transfieren a la programación. Se nos da una base para trabajar y queremos lograr alguna tarea que puede requerir varios pasos. O para entender un problema, necesitamos analizarlo.

Directamente:

Como otros han dicho, la lógica booleana y la teoría de conjuntos son bastante importantes para la teoría, aunque tal vez puedas evitarlo sin entenderlo en la práctica. Para cosas más avanzadas, sería útil saber algo de cálculo, álgebra lineal y probabilidad.

La lógica, la teoría de conjuntos y las matemáticas discretas son los bloques básicos de la programación.

Fuera de eso, las matemáticas juegan un papel menos importante de lo que parece, aunque algunos campos especializados (como los gráficos) pueden depender en gran medida de ellas.

More Interesting

Si tuviera la oportunidad de rediseñar el programa de cuatro años de Ciencias de la Computación de su universidad, entonces, ¿qué programa diseñaría?

¿Las funciones del tipo x ^ 2, x ^ 3, x ^ n se consideran de naturaleza recursiva?

¿Cuáles son algunos buenos libros sobre el desarrollo matemático de la informática?

¿Por qué escribimos A = IA para operaciones de fila y A = AI para operación de columna para encontrar el inverso de una matriz?

Soy un desarrollador, pero me falta mi habilidad matemática. Con un BSc en CS y un MSc en IS, ¿qué debo saber y cómo puedo identificar dónde necesito ayuda?

¿Existe un número distinto de cero para el cual su representación doble y larga es equivalente en bits?

Cómo aumentar la velocidad de cálculo de la función trigonométrica en una computadora

¿Qué motiva el problema de k-satisfacción en la informática teórica?

¿Qué hace que la oración 'Lucas no pueda afirmar esta oración constantemente', vulnerable o incluso incompleta?

¿Cuáles son los cursos de pregrado más importantes para alguien que planea obtener un doctorado en aprendizaje automático?

¿Cuánto conocimiento matemático profundo deberías tener como diseñador de juegos?

¿De qué manera aprender matemáticas avanzadas me haría un mejor programador?

¿Por qué es importante la condición i + j <n en el siguiente código?

Cómo lidiar con la codificación cuando no me gustan las matemáticas

¿Cuál es la longitud esperada de la subsecuencia creciente más larga?