Sono uno studente laureato in matematica e ho conseguito la laurea 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 asciutti e senza ispirazione (in sostanza, la mia opposizione a tutti gli hack ridicoli che vanno nella programmazione di sistemi nella mia esperienza nel settore).
D'altra parte, sul mio blog guardo a problemi come il riconoscimento facciale (un po 'di algebra lineare), metodi di crittografia, macchine di Turing e automi cellulari, modelli per prevedere l'attività di serial killer, motori di ricerca e un sacco di altri concetti matematici . La parte migliore è che riesco ad attuare le idee, e tutte le mie!
Per convincere il tuo amico ad amare la programmazione come tutti noi, trovalo davvero interessanteprogetto. L'aspetto della programmazione non si attaccherà senza il suo lavoro verso un prodotto che trova bello. Per quanto riguarda le lingue, consiglio Mathematica, Racket (un derivato di Scheme molto amichevole, ma comunque potente), Python e Haskell. Mathematica è probabilmente il migliore, perché può implementare selettivamente le proprie funzioni matematiche e utilizzare le librerie integrate di Mathematica per completare il progetto (ad esempio, scrivere una funzione che calcola i coefficienti di Fourier e quindi utilizzare Mathematica per fare 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 all'apprendimento automatico con grandi set di dati).
Inoltre, sembra che molte delle risposte qui provengano da persone che non fanno matematica o che non hanno usato le lingue che stanno suggerendo di fare software matematico. Il motivo per cui le persone raccomandano Haskell è perché è il più vicino possibile all'implementazione 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 è pronto per la teoria delle categorie matematicamente (quella maturità è più o meno inutile fino alla scuola di specializzazione e malvagia difficile da insegnare a te stesso), e come prima lingua Haskell ha il più ripidocurva di apprendimento delle lingue suggerite (forse Prolog è più ripido). Ho usato Haskell per implementare un compilatore Javascript e ho finito con un bellissimo ed elegante pezzo di codice, ma per cose intuitive come la mutazione variabile, devi già dilettarti in monadi non banali.
Python e Mathematica saranno molto più amichevoli e Mathematica ha la curva di apprendimento più superficiale semplicemente perché tutte le librerie sono impacchettate in una bella interfaccia utente con una fantastica documentazione (basta premere F1!). D'altra parte, c'è un libro di cui ho sentito parlare (ma che non ho letto) che fornisce contemporaneamente una transizione alla matematica avanzata e un'introduzione a Haskell . Sembra avere recensioni Amazon positive, quindi potresti voler dare un'occhiata. Può passare a linguaggi come C # e Java se mai vuole fare cose del settore, ma molto probabilmente non avrà mai bisogno di entrare in quella giungla (e molte cose di matematica del settore sono comunque pure Matlab).
Ma come ho detto, con l'apprendimento del progetto giusto la lingua diventa una gioia, qualunque sia il progetto.