¿Por qué no todas las personas que son buenas en matemáticas también son buenas en programación de computadoras?

Supongo que por “bueno en matemáticas” te refieres a un matemático profesional. Las matemáticas de la escuela secundaria (especialmente en los EE. UU.) No se trata de matemáticas (lamentablemente, no aprendes sobre la teoría de conjuntos ZF, o el problema de detención, o el álgebra topológica en la escuela secundaria; y en la mayoría de los países ni siquiera entiendes lo que es matemática prueba realmente está en la escuela secundaria).

Los matemáticos generalmente se centran en un nivel de abstracción y no les importan en absoluto los recursos. Están o pueden estar contentos con la prueba existencial (no constructiva), o pueden producir una prueba constructiva con alguna construcción que (conceptualmente) necesita una gran cantidad de pasos.

Los informáticos necesitan saltar fácilmente de un nivel de abstracción a otro. La informática se preocupa por los recursos (no codificará un programa con una complejidad de tiempo bi-exponencial) y un software es equivalente a alguna prueba constructiva. D.Knuth incluso reconoció que la capacidad de saltar fácilmente los niveles de abstracción es la cualidad clave requerida para escribir un programa …

Por último, y lo más importante, tanto las matemáticas como la informática o la programación son difíciles de aprender. En ambos casos, necesita al menos diez años para aprenderlo (para aprender a programar, consulte aquí), y debe estar muy motivado. La mayoría de las personas no tienen tiempo ni motivación para ambos.

Ciertamente, tampoco soy un experto, pero como alguien que actualmente estudia matemáticas e informática en la universidad, estos son mis pensamientos: escribir una prueba y escribir un programa son de alguna manera muy similares. En una prueba, tiene una serie de declaraciones, cada una respaldada por otra o asumida (ya sea para encontrar una contradicción o porque se le permite definir una variable como quiera si aún no lo ha hecho). En un programa, tiene una serie de pasos individuales que producen un resultado debido a la forma lógica en que están conectados. La diferencia clave, creo, es que cuando escribes una prueba, entiendes que los humanos la leerán. Todavía tiene que justificar todo lo que dice, por supuesto, pero cuando se trata de una redacción real, hay margen de maniobra que no tiene al programar una computadora. Por otro lado, escribir un algoritmo requiere establecer lógicamente que lo que ha escrito le dará el resultado que desea. A veces las personas escriben pruebas que establecen esto, pero no es necesario si está seguro de que el algoritmo funciona, por lo que hay personas que son buenas en programación y no en matemáticas.

En matemáticas, es totalmente aceptable dar pruebas altamente creativas y simples a problemas difíciles. Hay mucha intuición, algunas partes de visualización a veces y bastante pensamiento fuera de la caja. Realmente necesitas poder romper el paradigma una y otra vez. Para mí, cada prueba es como escribir las reglas sobre cómo escribir la prueba que está escribiendo. No puede leer un manual sobre cómo hacer una prueba. Necesitas experiencia y práctica.

Por otro lado, la programación de computadoras es increíblemente difícil de una manera diferente. Se te ocurre un algoritmo que es totalmente simple de una manera intuitiva, pero hacer que la computadora lo haga por ti y hacerlo de manera eficiente es mucho más difícil de lo que imaginas. La gran cantidad de comandos por sí sola es desalentadora para un matemático, que solo necesita conocer un número relativamente pequeño de símbolos lógicos para hacer su trabajo.

Las habilidades matemáticas son útiles si no son necesarias para algunos aspectos de la programación de computadoras, pero la programación requiere más que las matemáticas. En el curso de programación que tomé, aprendí que es una combinación de lógica y creatividad. Las computadoras, como dijo mi profesor, son estúpidas. No pueden hacer nada sin que se les diga exactamente qué hacer. Por lo tanto, debe pensar en todo lo necesario para ingresar además de las ecuaciones o algoritmos, y puede ingresar estas cosas de muchas maneras. Es literal y figurativamente como escribir un idioma extranjero que no es necesariamente las mismas partes del cerebro que se usan para las matemáticas.

Hay varios factores que debe considerar aquí. Cuando dices, bueno en matemáticas, ¿te refieres a bueno en matemáticas de secundaria? Ese tipo de habilidad puede o no tener una fuerte correlación con tus habilidades de programación. Las matemáticas hasta la escuela secundaria dependen más del pensamiento rápido que del pensamiento profundo. Escribir / depurar un programa grande a menudo requiere mucha concentración y paciencia y el mero pensamiento lógico no es lo suficientemente bueno.

Si te refieres a alguien con una educación matemática por encima del nivel de pregrado, entonces uno puede establecer bastantes paralelos de programación y matemáticas. Entonces, alguien bueno en matemáticas universitarias debería poseer las facultades necesarias que le permitirían ser un buen programador. Pero, la realidad es que debido a que las matemáticas son un trabajo de tiempo completo en sí mismo, muchos matemáticos no serían alentados a seguir la programación en serio (excepto los scripts de python / haskell / matlab que emplearían en su ork día a día) . La mayoría estaría muy contenta de diseñar el algoritmo y dejar que los programadores se hagan cargo del bit de implementación.

Porque no son lo mismo. Hay cierta superposición en los conjuntos de habilidades, pero tienen diferencias.