En general, los programadores de computadoras que son matemáticos o tienen conocimientos de matemáticas son muy buenos en términos de algoritmos y programación de computadoras en general.
Lo que no estoy diciendo:
Se necesitan las matemáticas para ser un buen programador de computadoras. Las matemáticas son necesarias para la programación. Los buenos matemáticos son buenos programadores y viceversa.
Que estoy diciendo
Me gustaría aprender algunas matemáticas porque creo que me hará un mejor programador. ¿Qué áreas / temas de matemáticas me ayudarán a ser un mejor programador? math topic - corresponding cs area
Se agradecerán las respuestas del formulario .
NB: pregunté esto en StackOverflow donde se declaró fuera de tema. Quiero aprenderlo durante mi tiempo libre tal como lo he estado haciendo con la programación de computadoras. Gracias por adelantado.
fuente
Respuestas:
Entonces, hay muchos campos de las matemáticas que son relevantes para la Ciencia de la CS, pero para la programación específicamente:
Teoría de grafos : este es el más grande. Gráficos y árboles están en todas partes. Redes, mapas, caminos en videojuegos. Incluso cosas como resolver un cubo de Rubik pueden modelarse como un algoritmo gráfico y resolverse con A *.
Matemáticas discretas : aparte de la teoría de grafos, es útil conocer esta área en general. Está lleno de pruebas por inducción, que son muy útiles para comprender la recursividad, lo cual es muy útil en la programación, particularmente con estructuras de datos. Saber sobre conjuntos, conteo, inclusión-exclusión, lógica booleana, etc. puede ser útil de vez en cuando.
Teoría de tipos: como era de esperar, conocer la teoría de tipos ayuda a comprender la programación en lenguajes mecanografiados y, en términos más generales, a utilizar los tipos como una forma de garantizar ciertas propiedades de corrección. Conocer la teoría de los subtipos le ayuda a comprender la covarianza y la contravarianza en lenguajes similares a Java. Obviamente, conocer cosas como el polimorfismo paramétrico es útil al aprender un lenguaje de tipo pesado como Haskell o Purescript, pero los idiomas como Scala, TypeScript y Rust son cada vez más frecuentes en la industria, y los tipos están en sus núcleos.
Si lleva esto al extremo, obtendrá cosas como Coq y Agda e Idris, que se pueden usar para probar propiedades de corrección extremadamente precisas sobre los programas.
Teoría de la computabilidad y la complejidad : es útil saber cuándo un problema es insoluble o NP-difícil, porque no perderá horas atormentando su cerebro por una forma rápida de hacerlo. Del mismo modo, conocer algo de la teoría detrás de los algoritmos de aproximación, la trazabilidad de parámetros fijos o los algoritmos exponenciales de base baja, puede ayudar cuando realmente necesite resolver un problema NP-difícil.
Teoría de autómatas: muchos problemas se pueden modelar con varias máquinas de estado, por lo que es útil comprender sus propiedades.
También hay algunas áreas específicas de campo:
Estadísticas: si estás haciendo aprendizaje automático o big data, esto es imprescindible.
Álgebra lineal / cálculo de vectores : ambos son importantes para el aprendizaje automático, los gráficos, las simulaciones o el procesamiento de imágenes / audio.
Teoría del enrejado : si está haciendo algún trabajo con compiladores u optimización de programas, este aparece todo el tiempo. ¡Puntos fijos en todas partes!
Teoría de categorías: no es necesario codificar, pero es útil para cualquier cosa profundamente empapada en la teoría de tipos.
Editar: no puedo creer que lo olvidé:
fuente