Jestem absolwentem matematyki i ukończyłem studia informatyczne. Prowadzę blog o nazwie Matematyka ming Programowanie, w którym badam zastosowania matematyki w programowaniu (i odwrotnie) i muszę przyznać, że większość mniej matematycznych aspektów informatyki jest raczej sucha i niezainspirowana (w zasadzie mój sprzeciw wobec wszystkie absurdalne włamania do programowania systemów z mojego doświadczenia w branży).
Z drugiej strony na moim blogu przyglądam się takim problemom, jak rozpoznawanie twarzy (sporo algebry liniowej), metody szyfrowania, maszyny Turinga i automaty komórkowe, modele przewidywania aktywności seryjnego zabójcy, wyszukiwarki i kilka innych matematycznych pojęć . Najlepsze jest to, że mogę wdrożyć pomysły i wszystkie moje!
Aby twój przyjaciel pokochał programowanie, tak jak my wszyscy, znajdź go naprawdę interesującegoprojekt. Aspekt programowania nie pozostanie bez jego pracy nad produktem, który uzna za piękny. Jeśli chodzi o języki, polecam Mathematica, Racket (bardzo przyjazna, ale nadal potężna pochodna schematu), Python i Haskell. Mathematica jest prawdopodobnie najlepsza, ponieważ może selektywnie implementować własne funkcje matematyczne i używać wbudowanych bibliotek Mathematica do ukończenia projektu (np. Napisać funkcję, która oblicza współczynniki Fouriera, a następnie użyć Mathematica do wykonania pozostałej analizy, takiej jak jak filtrowanie, generowanie obrazu itp.). Nawet podstawowe tematy, takie jak integracja, dają fascynujące projekty (różne reguły kwadratury, integracja Monte Carlo, łagodne przejście do uczenia maszynowego z dużymi zestawami danych).
Wydaje się również, że wiele odpowiedzi pochodzi od osób, które nie zajmują się matematyką lub które nie korzystały z języków, które sugerują do tworzenia oprogramowania matematycznego. Powodem, dla którego ludzie polecają Haskell, jest to, że jest on możliwie najbliższy dosłownej realizacji teorii kategorii i dobrze pasuje do niektórych matematycznych definicji niektórych podstawowych pojęć. Ale jeśli twój przyjaciel jest bliski twojemu wieku, to nie jest gotowy na teorię kategorii matematycznie (ta dojrzałość jest mniej lub bardziej bezużyteczna aż do ukończenia szkoły i niegodziwy trudno się uczyć), a jako pierwszy język Haskell jest najbardziej stromykrzywa uczenia się sugerowanych języków (być może Prolog jest bardziej stromy). Użyłem Haskella do implementacji kompilatora JavaScript i skończyłem z bardzo pięknym eleganckim kawałkiem kodu, ale dla intuicyjnych rzeczy, takich jak zmienna mutacja, już musisz zagłębiać się w nietrywialne monady.
Python i Mathematica będą o wiele bardziej przyjazne, a Mathematica ma najbardziej płytką krzywą uczenia się po prostu dlatego, że wszystkie biblioteki są spakowane w ładny interfejs użytkownika z niesamowitą dokumentacją (wystarczy nacisnąć F1!). Z drugiej strony jest jedna książka, o której słyszałem (ale jej nie przeczytałem), która zapewnia zarówno przejście do zaawansowanej matematyki, jak i wprowadzenie do Haskell jednocześnie . Wygląda na to, że ma pozytywne recenzje Amazon, więc możesz to sprawdzić. Może przejść do języków takich jak C # i Java, jeśli kiedykolwiek będzie chciał robić rzeczy branżowe, ale bardziej prawdopodobne, że nigdy nie będzie musiał wchodzić do tej dżungli (a wiele matematyki przemysłowej to zresztą czysty Matlab).
Ale tak jak powiedziałem, przy odpowiednim projekcie nauka języka staje się radością, niezależnie od projektu.