私は数学の大学院生で、コンピューターサイエンスの学部を卒業しました。Math∩Programmingと呼ばれるブログを開いて、数学のプログラミングへの応用(およびその逆)を探ります。私の業界での経験でシステムプログラミングを行うとんでもないハックのすべて)。
一方、私のブログでは、顔認識(かなり線形代数)、暗号化方法、チューリングマシン、セルオートマトン、シリアルキラーアクティビティを予測するためのモデル、検索エンジン、その他の数学的概念のような問題に注目しています。 。最良の部分は、私がアイデアを実装できるようになることです。
他の人と同じようにあなたの友人にプログラミングを愛させるには、彼が本当に面白いと思うプロジェクト。プログラミングの側面は、彼が美しいと感じる製品に向けて努力することなしには固執しません。言語に関しては、Mathematica、Racket(非常に友好的だが強力なScheme派生物)、Python、およびHaskellをお勧めします。Mathematicaはおそらく最高です。彼は独自の数学関数を選択的に実装し、Mathematicaの組み込みライブラリを使用してプロジェクトを完了することができるためです(たとえば、フーリエ係数を計算する関数を作成し、Mathematicaを使用して残りの分析を行うなど)フィルタリング、画像生成など)。統合のような基本的なトピックでさえ、いくつかの魅力的なプロジェクトを提供します(異なる求積規則、モンテカルロ統合、大きなデータセットを使用した機械学習への穏やかな移行)。
また、ここでの回答の多くは、数学をしない人、または数学ソフトウェアを行うために提案している言語を使用していない人からのものであるようです。人々がHaskellを推奨する理由は、それが可能な限りカテゴリー理論の文字通りの実装に近く、いくつかの基本的な概念のいくつかの数学的な定義によく適合するためです。あなたの友人が近くにあなたの年齢にある場合でも、その後、彼は数学的に圏論のための準備ができていない(成熟度は、多かれ少なかれ役に立たない大学院まで、そして邪悪なハード自分自身を教えることであること)、そして第一言語としてHaskellはあり最も急提案された言語の学習曲線(おそらくPrologはより急です)。Haskellを使用してJavascriptコンパイラを実装しましたが、非常に美しいエレガントなコードになりましたが、変数の突然変異などの直観的なもののためには、重要なモナドに手を出さなければなりません。
PythonとMathematicaははるかに使いやすく、すべてのライブラリが素晴らしいドキュメントを備えた素晴らしいユーザーインターフェイスにパッケージ化されているため、Mathematicaは最も浅い学習曲線を持っています(F1を押すだけです!)。一方、私が聞いた(しかし読んでいない)本には、高度な数学への移行とHaskellの紹介の両方を同時に提供しているものがあります。アマゾンで好評を博しているようですので、ぜひチェックしてみてください。業界のものをやりたいと思ったら、C#やJavaなどの言語に移行できますが、そのジャングルに入る必要はないでしょう(そして、とにかく多くの業界の数学のものは純粋なMatlabです)。
しかし、私が言ったように、正しいプロジェクトで言語を学ぶことは、プロジェクトが何であれ、喜びになります。