Saya seorang mahasiswa pascasarjana di bidang matematika, dan meraih gelar sarjana saya di bidang ilmu komputer. Saya membuat blog yang disebut Pemrograman Matematika ∩ di mana saya mengeksplorasi aplikasi matematika untuk pemrograman (dan sebaliknya), dan saya harus mengakui bahwa saya menemukan sebagian besar aspek matematika yang kurang dari ilmu komputer agak kering dan tidak terinspirasi (pada dasarnya, penolakan saya terhadap semua peretasan konyol yang masuk ke pemrograman sistem dalam pengalaman saya di industri).
Di sisi lain, di blog saya, saya melihat masalah seperti pengenalan wajah (sedikit aljabar linier), metode enkripsi, mesin Turing dan automata seluler, model untuk memprediksi aktivitas pembunuh berantai, mesin pencari, dan banyak konsep matematika lainnya . Bagian terbaiknya adalah saya bisa mengimplementasikan ide-ide itu, dan ide saya sendiri!
Untuk membuat teman Anda menyukai pemrograman seperti yang kita lakukan, temukan dia yang benar-benar menarikproyek. Aspek pemrograman tidak akan bertahan tanpa bekerja menuju produk yang menurutnya cantik. Adapun bahasa, saya merekomendasikan Mathematica, Racket (turunan Skema yang sangat ramah, tetapi masih kuat), Python, dan Haskell. Mathematica mungkin adalah yang terbaik, karena ia dapat secara selektif mengimplementasikan fungsi matematikanya sendiri, dan menggunakan perpustakaan yang dibangun di Mathematica untuk menyelesaikan proyek (misalnya, menulis fungsi yang menghitung koefisien Fourier, dan kemudian menggunakan Mathematica untuk melakukan sisa analisis, seperti sebagai penyaringan, pembuatan gambar, dll.). Bahkan topik dasar seperti integrasi memberikan beberapa proyek yang menarik (aturan quadrature yang berbeda, integrasi monte carlo, transisi yang lembut ke pembelajaran mesin dengan set data besar).
Juga, sepertinya banyak tanggapan di sini berasal dari orang-orang yang tidak melakukan matematika, atau yang belum menggunakan bahasa yang mereka sarankan untuk melakukan perangkat lunak matematika. Alasan orang merekomendasikan Haskell adalah karena ia sedekat mungkin dengan implementasi teori kategori secara harfiah, dan sangat cocok dengan beberapa definisi matematis dari beberapa konsep dasar. Tetapi jika teman Anda dekat dengan usia Anda, maka dia tidak siap untuk teori kategori secara matematis (kedewasaan itu kurang lebih tidak berguna hingga lulus sekolah, dan jahat untuk mengajar diri sendiri), dan sebagai bahasa pertama Haskell memiliki curamkurva belajar bahasa yang disarankan (mungkin Prolog lebih curam). Saya menggunakan Haskell untuk mengimplementasikan kompiler Javascript, dan saya berakhir dengan sepotong kode yang sangat indah dan elegan, tetapi untuk hal-hal intuitif seperti mutasi variabel, Anda sudah harus mencoba-coba dalam monad nontrivial.
Python dan Mathematica akan jauh lebih ramah, dan Mathematica memiliki kurva belajar paling dangkal hanya karena semua perpustakaan dikemas ke dalam antarmuka pengguna yang bagus dengan dokumentasi yang mengagumkan (tekan saja F1!). Di sisi lain, ada satu buku yang pernah saya dengar (tetapi tidak dibaca) yang menyediakan transisi ke matematika tingkat lanjut dan pengantar Haskell secara bersamaan . Tampaknya memiliki ulasan Amazon positif, jadi Anda mungkin ingin memeriksanya. Dia bisa naik ke bahasa seperti C # dan Java jika dia ingin melakukan hal-hal industri, tetapi lebih mungkin dia tidak akan pernah perlu memasuki hutan itu (dan banyak hal industri matematika adalah Matlab murni pula).
Tapi seperti yang saya katakan, dengan proyek yang tepat belajar bahasa menjadi suatu kesenangan, apa pun proyeknya.