Ich habe einen Abschluss in Mathematik und einen Abschluss in Informatik. Ich führe ein Blog namens Math Math Programming, in dem ich mich mit Anwendungen der Mathematik zur Programmierung befasse (und umgekehrt), und ich muss zugeben, dass ich die meisten weniger mathematischen Aspekte der Informatik eher trocken und einfallslos finde (im Grunde meine Ablehnung von all die lächerlichen Hacks, die meiner Erfahrung in der Industrie nach in die Systemprogrammierung einfließen).
Auf der anderen Seite beschäftige ich mich in meinem Blog mit Problemen wie Gesichtserkennung (einiges an linearer Algebra), Verschlüsselungsmethoden, Turing-Maschinen und zellularen Automaten, Modellen zur Vorhersage der Aktivität von Serienmördern, Suchmaschinen und einer Reihe anderer mathematischer Konzepte . Das Beste daran ist, dass ich die Ideen umsetzen kann - und jede meiner eigenen!
Um Ihren Freund dazu zu bringen, das Programmieren zu lieben, wie es der Rest von uns tut, finden Sie ihn wirklich interessantProjekt. Der Programmieraspekt bleibt nicht bestehen, ohne auf ein Produkt hinzuarbeiten, das er schön findet. Als Sprachen empfehle ich Mathematica, Racket (ein sehr freundliches, aber immer noch mächtiges Schema-Derivat), Python und Haskell. Mathematica ist wahrscheinlich das Beste, weil er selektiv seine eigenen mathematischen Funktionen implementieren und die in Mathematica integrierten Bibliotheken verwenden kann, um das Projekt abzuschließen (z. B. eine Funktion schreiben, die Fourier-Koeffizienten berechnet, und dann Mathematica verwenden, um den Rest der Analyse durchzuführen, z B. Filterung, Bilderzeugung usw.). Selbst die Grundthemen wie Integration geben einige faszinierende Projekte (verschiedene Quadraturregeln, Monte Carlo Integration, ein sanfter Übergang in maschinelles Lernen mit großen Datenmengen).
Es scheint auch, dass viele Antworten von Leuten stammen, die keine Mathematik betreiben oder die Sprachen, die sie für mathematische Software vorschlagen, nicht verwendet haben. Der Grund, warum die Leute Haskell empfehlen, ist, dass es einer wörtlichen Implementierung der Kategorietheorie so nahe wie möglich kommt und gut zu einigen mathematischen Definitionen einiger grundlegender Konzepte passt. Aber wenn Ihr Freund Ihrem Alter nahe ist, ist er mathematisch nicht bereit für die Kategorietheorie (diese Reife ist bis zum Abschluss des Studiums mehr oder weniger nutzlos und schlecht, um sich selbst beizubringen), und als Muttersprache hat Haskell die steilsteLernkurve der vorgeschlagenen Sprachen (vielleicht ist Prolog steiler). Ich habe Haskell verwendet, um einen Javascript-Compiler zu implementieren, und ich habe ein sehr schönes, elegantes Stück Code erhalten, aber für intuitive Dinge wie variable Mutation muss man sich bereits in nichttrivialen Monaden versuchen.
Python und Mathematica werden viel freundlicher sein, und Mathematica hat die flachste Lernkurve, einfach weil alle Bibliotheken in einer netten Benutzeroberfläche mit einer großartigen Dokumentation zusammengefasst sind (drücken Sie einfach F1!). Andererseits gibt es ein Buch, von dem ich gehört habe (das ich aber nicht gelesen habe), das gleichzeitig einen Übergang zur fortgeschrittenen Mathematik und eine Einführung in Haskell bietet . Es scheint positive Amazon-Bewertungen zu haben, also solltest du es dir ansehen. Er kann auf Sprachen wie C # und Java aufsteigen, wenn er jemals Branchen-Sachen machen möchte, aber wahrscheinlicher ist, dass er nie in diesen Dschungel eintreten muss (und viele Branchen-Mathematik-Sachen sind sowieso Matlab-reine Sachen).
Aber wie gesagt, mit dem richtigen Projekt wird das Erlernen der Sprache zum Vergnügen, egal welches Projekt es ist.