Sono uno studente laureato in matematica e ho fatto il mio laureando in informatica. Tengo un blog chiamato Math ∩ Programming in cui esploro le applicazioni della matematica alla programmazione (e viceversa), e devo ammettere che trovo la maggior parte degli aspetti meno matematici dell'informatica è piuttosto secca e priva di ispirazione (in fondo, la mia opposizione a tutti i ridicoli hack che entrano nella programmazione dei sistemi nella mia esperienza nell'industria).
D'altra parte, sul mio blog guardo a problemi come riconoscimento facciale (un po 'di algebra lineare), metodi di crittografia, macchine di Turing e automi cellulari, modelli per predire attività serial killer, motori di ricerca e un mucchio di altri concetti matematici. La parte migliore è che riesco a implementare le idee e le mie!
Per far sì che il tuo amico ami programmare come tutti noi, trovalo un progetto interessante davvero interessante. L'aspetto della programmazione non si attaccherà senza il suo lavoro verso un prodotto che trova bello. Per quanto riguarda le lingue, raccomando Mathematica, Racket (una derivata Scheme molto amichevole, ma comunque potente), Python e Haskell. Mathematica è probabilmente il migliore, perché può implementare in modo selettivo le proprie funzioni matematiche e utilizzare le librerie incorporate di Mathematica per completare il progetto (ad esempio, scrivere una funzione che calcoli i coefficienti di Fourier, quindi utilizzare Mathematica per eseguire il resto dell'analisi, ad esempio come filtro, generazione di immagini, ecc.). Anche gli argomenti di base come l'integrazione offrono alcuni progetti affascinanti (regole di quadratura diverse, integrazione di monte carlo, una transizione delicata nell'apprendimento automatico con grandi set di dati).
Inoltre, sembra che molte delle risposte provengano da persone che non fanno matematica, o che non hanno usato le lingue che suggeriscono di fare software matematico. La ragione per cui le persone raccomandano Haskell è perché è il più vicino possibile a un'attuazione letterale della teoria delle categorie e si adatta bene con alcune definizioni matematiche di alcuni concetti di base. Ma se il tuo amico è vicino alla tua età, allora non è matematicamente pronto per la teoria delle categorie (che la maturità è più o meno inutile fino alla scuola di specializzazione, e malvagiamente difficile da insegnare), e come prima lingua Haskell ha il la più ripida curva di apprendimento delle lingue suggerite (forse il Prolog è più ripido). Ho usato Haskell per implementare un compilatore Javascript, e ho finito con un pezzo di codice elegante molto bello, ma per cose intuitive come la mutazione variabile, devi già dilettarti in monade non banali.
Python e Mathematica saranno molto più amichevoli, e Mathematica ha la curva di apprendimento più superficiale semplicemente perché tutte le librerie sono confezionate in una bella interfaccia utente con una documentazione fantastica (basta premere F1!). D'altra parte, c'è un libro di cui ho sentito parlare (ma non letto) che fornisce sia una transizione alla matematica avanzata e un introduzione a Haskell contemporaneamente . Sembra avere recensioni positive su Amazon, quindi potresti voler controllare. Può passare a linguaggi come C # e Java se mai vuole fare cose del settore, ma più probabilmente non avrà mai bisogno di entrare in quella giungla (e un sacco di materiale matematico industriale è puro Matlab comunque).
Ma come ho detto, con il giusto progetto di apprendimento la lingua diventa una gioia, qualunque sia il progetto.