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:
- ¿La operación Bitwise es importante en Python? Estoy aprendiendo esta parte en Codecademy y no entendí totalmente. ¿Qué es Base 2 y Base 10?
- ¿Qué son las matemáticas básicas y fundamentales para la visión por computadora, el aprendizaje automático, la inteligencia artificial, la estructura de datos y algoritmos, sistemas de control, sistemas en tiempo real y procesamiento de señales digitales?
- Criptografía: ¿Cómo describirías la diferencia entre la longitud de la contraseña y la longitud de la clave de una criptografía como AES?
- ¿Cómo puede la informática teórica informar a la neurociencia?
- Cómo resolver la Competencia de Computación Canadiense de 1996, Etapa 1, Problema C (vea el enlace del problema a continuación)
* 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.