Je suis un étudiant diplômé en mathématiques et j'ai fait mon premier cycle en informatique. Je tiens un blog intitulé Math ∩ Programming dans lequel j'explore les applications des mathématiques à la programmation (et vice versa), et je dois admettre que je trouve la plupart des aspects moins mathématiques de l'informatique plutôt secs et sans inspiration (en gros, mon opposition à tous les hacks ridicules qui entrent dans la programmation de systèmes dans mon expérience dans l'industrie).
D'un autre côté, sur mon blog, je regarde des problèmes comme la reconnaissance faciale (un peu d'algèbre linéaire), les méthodes de chiffrement, les machines de Turing et les automates cellulaires, les modèles de prédiction de l'activité des tueurs en série, les moteurs de recherche et un tas d'autres concepts mathématiques . La meilleure partie est que j'arrive à mettre en œuvre les idées et les miennes!
Pour amener votre ami à aimer la programmation comme le reste d'entre nous, trouvez-le vraiment intéressantprojet. L'aspect programmation ne restera pas sans son travail vers un produit qu'il trouve beau. En ce qui concerne les langues, je recommande Mathematica, Racket (un dérivé de Scheme très convivial mais toujours puissant), Python et Haskell. Mathematica est probablement le meilleur, car il peut implémenter sélectivement ses propres fonctions mathématiques et utiliser les bibliothèques intégrées de Mathematica pour terminer le projet (par exemple, écrire une fonction qui calcule les coefficients de Fourier, puis utiliser Mathematica pour effectuer le reste de l'analyse, par exemple filtrage, génération d'images, etc.). Même les sujets de base comme l'intégration donnent des projets fascinants (différentes règles de quadrature, l'intégration de Monte Carlo, une transition en douceur vers l'apprentissage automatique avec de grands ensembles de données).
En outre, il semble que beaucoup de réponses ici proviennent de personnes qui ne font pas de mathématiques ou qui n'ont pas utilisé les langues qu'elles suggèrent pour faire des logiciels mathématiques. La raison pour laquelle les gens recommandent Haskell est parce qu'elle se rapproche le plus possible d'une implémentation littérale de la théorie des catégories et correspond bien à certaines définitions mathématiques de certains concepts de base. Mais si votre ami est proche de votre âge, alors il n'est pas prêt pour la théorie des catégories mathématiquement (cette maturité est plus ou moins inutile jusqu'à la fin des études, et méchante à enseigner), et en tant que première langue, Haskell a le plus raidecourbe d'apprentissage des langues proposées (peut-être que Prolog est plus raide). J'ai utilisé Haskell pour implémenter un compilateur Javascript, et je me suis retrouvé avec un très beau morceau de code élégant, mais pour des choses intuitives comme la mutation variable, vous devez déjà vous plonger dans des monades non triviales.
Python et Mathematica seront beaucoup plus conviviaux et Mathematica a la courbe d'apprentissage la plus superficielle simplement parce que toutes les bibliothèques sont regroupées dans une interface utilisateur agréable avec une documentation impressionnante (appuyez simplement sur F1!). D'un autre côté, il y a un livre dont j'ai entendu parler (mais pas lu) qui fournit à la fois une transition vers les mathématiques avancées et une introduction à Haskell simultanément . Il semble avoir des critiques positives sur Amazon, alors vous voudrez peut-être le vérifier. Il peut passer à des langages comme C # et Java s'il veut faire des trucs de l'industrie, mais plus probablement il n'aura jamais besoin d'entrer dans cette jungle (et beaucoup de trucs de mathématiques de l'industrie sont de la pure Matlab de toute façon).
Mais comme je l'ai dit, avec le bon projet, l'apprentissage de la langue devient une joie, quel que soit le projet.