Matematik yüksek lisans öğrencisiyim ve lisans eğitimimi bilgisayar bilimleri dalında yaptım. Matematiğin programlamaya yönelik uygulamalarını keşfettiğim (ve bunun tersi) Math blog Programming adlı bir blog tutuyorum ve bilgisayar biliminin daha az matematiksel yönlerinin çoğunu oldukça kuru ve ilhamsız bulduğumu itiraf etmeliyim (temelde, karşıtlığım) Sektördeki tecrübelerime göre sistem programlamaya giren tüm saçma kesmeler.
Öte yandan, blogumda yüz tanıma (bir miktar doğrusal cebir), şifreleme yöntemleri, Turing makineleri ve hücresel otomatlar, seri katil aktivitesini öngörme modelleri, arama motorları ve bir sürü diğer matematiksel kavramlar gibi problemlere bakıyorum. . En iyi kısmı, fikirleri ve kendime ait olanları hayata geçirmem!
Arkadaşınızın geri kalanını yaptığımız gibi programlamayı sevmesini sağlamak için, onu gerçekten ilginç buluyorumprojesi. Programlama yönü, güzel bulduğu bir ürüne çalışmadan yapışmaz. Dillere gelince, Mathematica, Racket (çok arkadaşça, ama yine de güçlü bir Scheme türevi), Python ve Haskell'i öneririm. Mathematica muhtemelen en iyisidir, çünkü kendi matematiksel işlevlerini seçmeli olarak uygulayabilir ve projeyi bitirmek için Mathematica'nın yerleşik kütüphanelerini kullanabilir (örneğin, Fourier katsayılarını hesaplayan bir işlev yazabilir ve ardından analizin geri kalanını yapmak için Mathematica'yı kullanabilir. filtreleme, görüntü üretimi vb. Entegrasyon gibi temel konular bile bazı etkileyici projeler verir (farklı kuadratür kuralları, monte edilmiş carlo entegrasyonu, büyük veri setleriyle makine öğrenmesine yumuşak bir geçiş).
Ayrıca, buradaki yanıtların çoğu, matematik yapmayan veya matematiksel yazılım yapmayı önerdikleri dilleri kullanmayan insanlardan geliyor gibi görünüyor. İnsanların Haskell'i tavsiye etmelerinin nedeni, kategori teorisinin mümkün olduğu kadar gerçek anlamda uygulanmasına ve bazı temel kavramların bazı matematiksel tanımlarına iyi uymasıdır. Fakat eğer arkadaşınız yaşınıza yakınsa, matematiksel olarak kategori teorisine hazır değildir (bu vade, lisansüstü okula kadar az ya da çok işe yaramaz ve kendinize öğretmek zor olur) ve ilk dil olarak Haskell'in en dik olanıdır.önerilen dillerin öğrenme eğrisi (belki de Prolog daha diktir). Bir Javascript derleyicisini uygulamak için Haskell kullandım ve çok güzel ve zarif bir kod parçası ile bitirdim, ancak değişken mutasyon gibi sezgisel şeyler için, zaten önemsiz olmayan monadlerle uğraşmak zorundasınız.
Python ve Mathematica çok daha dostça davranacak ve Mathematica en sığ öğrenme eğrisine sahip olacak çünkü basitçe tüm kütüphaneler harika bir dokümantasyon ile güzel bir kullanıcı arayüzü içinde paketleniyor (sadece F1'e basın!). Öte yandan, hem gelişmiş matematiğe geçiş hem de aynı anda Haskell'e giriş sağlayan, duyduğum (ama okumamışım) bir kitap var . Olumlu Amazon yorumları var gibi görünüyor, bu yüzden kontrol etmek isteyebilirsiniz. Endüstri işleri yapmak istiyorsa, C # ve Java gibi dillere geçebilir, ancak o ormana asla girmesi gerekmeyecektir (ve bir çok endüstri matematiği yine de saf Matlab'dır).
Ama dediğim gibi, doğru proje öğrenme dili ne olursa olsun, proje ne olursa olsun bir sevinç olur.