Soy un estudiante graduado en matemáticas, e hice mi licenciatura en ciencias de la computación. Mantengo un blog llamado Math ∩ Programming en el que exploro las aplicaciones de las matemáticas a la programación (y viceversa), y debo admitir que encuentro que la mayoría de los aspectos menos matemáticos de la informática son bastante secos y poco inspirados (básicamente, mi oposición a todos los trucos ridículos que entran en la programación de sistemas en mi experiencia en la industria).
Por otro lado, en mi blog miro problemas como el reconocimiento facial (bastante álgebra lineal), métodos de encriptación, máquinas Turing y autómatas celulares, modelos para predecir la actividad de los asesinos en serie, motores de búsqueda y muchos otros conceptos matemáticos. . ¡La mejor parte es que puedo implementar las ideas, y cualquiera de las mías!
Para obtener su amigo para la programación amor al igual que el resto de nosotros, a encontrar una verdaderamente interesanteproyecto. El aspecto de la programación no se mantendrá sin su trabajo hacia un producto que encuentre hermoso. En cuanto a los idiomas, recomiendo Mathematica, Racket (un derivado de Scheme muy amigable, pero aún poderoso), Python y Haskell. Mathematica es probablemente el mejor, porque puede implementar selectivamente sus propias funciones matemáticas y usar las bibliotecas integradas de Mathematica para finalizar el proyecto (por ejemplo, escribir una función que calcule los coeficientes de Fourier y luego usar Mathematica para hacer el resto del análisis, como como filtrado, generación de imágenes, etc.). Incluso los temas básicos como la integración ofrecen algunos proyectos fascinantes (diferentes reglas de cuadratura, integración de Monte Carlo, una transición suave al aprendizaje automático con grandes conjuntos de datos).
Además, parece que muchas de las respuestas aquí provienen de personas que no hacen matemáticas o que no han usado los lenguajes que sugieren que usen software matemático. La razón por la que la gente recomienda a Haskell es porque es lo más parecido posible a una implementación literal de la teoría de categorías y encaja bien con algunas definiciones matemáticas de algunos conceptos básicos. Pero si su amigo es cercano a su edad, entonces no está preparado para la teoría de categorías matemáticamente (esa madurez es más o menos inútil hasta la escuela de posgrado, y es muy difícil de aprender), y como primer idioma Haskell tiene la mayor inclinacióncurva de aprendizaje de los idiomas sugeridos (tal vez Prolog es más pronunciado). Utilicé Haskell para implementar un compilador de Javascript, y terminé con un código elegante muy hermoso, pero para cosas intuitivas como la mutación variable, ya tienes que incursionar en mónadas no triviales.
Python y Mathematica serán mucho más amigables, y Mathematica tiene la curva de aprendizaje más superficial simplemente porque todas las bibliotecas están empaquetadas en una interfaz de usuario agradable con una documentación impresionante (¡simplemente presione F1!). Por otro lado, hay un libro del que he oído hablar (pero que no he leído) que proporciona tanto una transición a las matemáticas avanzadas como una introducción a Haskell simultáneamente . Parece que tiene críticas positivas de Amazon, por lo que es posible que desee verlo. Puede pasar a lenguajes como C # y Java si alguna vez quiere hacer cosas de la industria, pero es más probable que nunca necesite ingresar a esa jungla (y muchas cosas de matemáticas de la industria son Matlab puro de todos modos).
Pero como dije, con el proyecto correcto aprender el idioma se convierte en una alegría, sea cual sea el proyecto.