¿Cuáles son las habilidades matemáticas esenciales necesarias para ser un buen programador?

Su pregunta es muy específica para los concursos de codificación. En ese caso, le recomiendo que comience leyendo el libro “Programación competitiva”, tercera edición de Steven Halim (fuente: Programación competitiva).

Por lo que he visto, es un excelente libro que está dirigido exactamente a lo que necesita saber para mejorar su clasificación en los concursos de codificación. En particular, está dirigido al tipo de problemas que ve en el juez en línea de UVa.

Una vez que lea el libro, continúe practicando esos problemas una y otra vez hasta que su nivel de habilidad alcance su satisfacción.

Pero tenga en cuenta que puede ser un buen programador sin ganar ninguno de esos concursos. Al final, deberá centrar su capacidad en alguna empresa o proyecto y ser experto en lo que se necesita para esa área.

Por lo tanto, no tiene que saberlo todo antes de comenzar a ser un programador real.

Quizás esta podría ser una buena referencia para formar una conciencia inicial de las matemáticas fundamentales utilizadas en la programación:
El arte de la programación de computadoras: introducción a los algoritmos

Citar:

“En este capítulo de Art of Computer Programming, Volume 1: Fundamental Algorithms, 3rd Edition , Donald E. Knuth analiza la historia y la definición del algoritmo, las convenciones de notación utilizadas en el libro y las características de un algoritmo. Cierra la sección con una breve indicación de un método por el cual el concepto de algoritmo puede estar firmemente basado en términos de teoría matemática de conjuntos “.

Algunas conversaciones sobre el libro y su tema:

¿Vale la pena leer “El arte de la programación de computadoras” de Donald Knuth?
“¿Cuántas matemáticas necesito saber para programar?” No tanto, en realidad.

Bueno, nada en general. Cualesquiera que sean los problemas que te dan esas competencias de codificación, eres un pequeño subconjunto de todo lo que se requiere en un software del mundo real. El único consejo que puedo darte es construir más cosas, leer más código y mejorarás. Después de un tiempo, cuando tu cabeza está lo suficientemente afilada por “recoger cosas en el trabajo” constantemente, también puedes retomar las matemáticas sin mucha dificultad cuando lo necesitas.

Este cómic xkcd describe acertadamente la situación:

Hay matemáticas para banqueros, ingenieros, pilotos, físicos teóricos y programadores. Hay programadores que programan bases de datos, sitios web, algoritmos de búsqueda web, firmwares de navegación de misiles, DSP en decodificadores de video, etc. Todos requieren diferentes habilidades y ramas de las matemáticas. ¡Pero el denominador menos común sería Álgebra! … solo entonces sugeriría trigonometría básica, cálculo básico, … luego, si estás en una buena racha, ve a álgebra lineal, establece teorías, matemática discreta, teoría de números, … si crees que eso fue fácil, pase a estudiar geometría diferencial y topología.

Sin embargo, los algoritmos son tan importantes, si no más, que las matemáticas: estructuras de datos, transformaciones, algoritmos de búsqueda … etc.

Cuando escribes cualquier tipo de programa, la computadora hace la mayoría de las matemáticas por ti. No tiene que escribir el algoritmo que hace posible la selección aleatoria, todo lo que necesita saber es cómo escribir la matriz. En todo caso, diría que las estadísticas serían las más necesarias de cualquier habilidad matemática cuando se trata de programación de “big data”. A veces hay que tener en cuenta cosas como las probabilidades, pero no tan a menudo como piensan algunas personas.

En general casi nada. Pero en disciplinas específicas puede tener necesidades especiales. Los gráficos por computadora, por ejemplo, usan mucho álgebra matricial. Pero, en general, la programación del mundo real no se parece en nada a los concursos.

Por supuesto, saber más matemáticas nunca es una responsabilidad. Pero gran parte de lo que hace es simple aritmética, por ejemplo, validar un diseño haciendo cálculos aproximados de “parte posterior del sobre” para estimar los requisitos de almacenamiento o memoria.

Por otro lado, si le gustan las matemáticas, ciertamente puede dirigir su carrera en una dirección que la utilice. Por ejemplo, con el enfoque en Big Data, un conocimiento de las estadísticas en un nivel intermedio a avanzado podría ser útil, y lo distinguiría de aquellos que acaban de tomar la ruta de compilación de la matemática discreta tradicional.

Elige algunos libros sobre matemáticas discretas. Matemática discreta es un curso que se imparte en las escuelas que contiene un montón de cosas de diferentes campos (teoría de grupo básica, teoría de conjuntos, teoría de grafos, etc.), y le dará una buena idea de cómo son. Presta mucha atención a cómo se hacen las pruebas. Las matemáticas son sobre pruebas. Existe una profunda correspondencia entre los programas de computadora y las pruebas que comprenderá más adelante a medida que profundice.

Manipulación de bits
Representación de grafos
Ecuaciones lineales
buscando
Clasificación

Estos son algunos de los temas matemáticos que se presentan la mayoría de las veces durante la programación. Además, si alguien le pide que codifique un algoritmo grande, depende de usted cómo puede aplicar los conceptos aprendidos y facilitarlo al codificar ese algoritmo. Para mejorar con los temas anteriores, le sugiero que siga practicando, resuelva problemas y aprenda nuevos enfoques.

Yo diría que las habilidades matemáticas básicas que un programador debería tener son:
– Lógica matemática
– Notación Big-O y teoría de la complejidad.
– Familiaridad con binario y hexadecimal
– Ser lo suficientemente bueno en matemáticas y geometría básicas de la escuela secundaria para resolver preguntas de pizarra en entrevistas bajo estrés.
– Conozca los poderes de 2 hasta 2 ^ 10. (Esto es ridículamente útil, y poder calcular 2 ^ 24 es “un poco más de 16 millones” en tu cabeza te hace ver brillante).

aptitud avanzada

álgebra básica

trigonometría básica

geometría de coordenadas básica

cálculo básico

diagramas de flujo

gráficos

Todo esto le ayudará a convertirse en un buen analista para cualquier programa.

Es muy cierto que se requieren conceptos básicos de matemáticas para agudizar sus habilidades de programación de computadoras. Sugeriría centrarse en temas como álgebra, trignometría y también en temas calculadores como distancia, velocidad, etc.
La integración y la derivación son los temas más apropiados para mejorar la lógica en el lenguaje de programación.

Piensa “algorítmicamente”