Umumnya pemrogram komputer yang ahli matematika atau memiliki latar belakang matematika sangat baik dalam hal algoritma dan pemrograman komputer pada umumnya.
Apa yang tidak saya katakan:
Matematika dibutuhkan untuk menjadi pemrogram komputer yang baik. Matematika diperlukan untuk pemrograman. Matematikawan yang baik adalah programmer yang baik dan sebaliknya
Apa yang saya katakan
Saya ingin belajar matematika karena saya yakin itu akan membuat saya menjadi programmer yang lebih baik. Apa bidang / topik matematika yang akan membantu saya menjadi programmer yang lebih baik? Jawaban formulir math topic - corresponding cs area
akan dihargai.
NB: Saya menanyakan ini di StackOverflow di mana itu dinyatakan di luar topik. Saya ingin mempelajarinya di waktu senggang seperti yang telah saya lakukan dengan pemrograman komputer. Terima kasih sebelumnya.
sumber
Jawaban:
Jadi, ada banyak bidang matematika yang relevan dengan Ilmu CS, tetapi untuk pemrograman khusus:
Teori grafik : ini yang besar. Grafik dan pohon ada di mana-mana. Jaringan, peta, jalur dalam gim video. Bahkan hal-hal seperti memecahkan kubus Rubiks dapat dimodelkan sebagai algoritma grafik dan diselesaikan dengan A *.
Matematika diskrit : selain dari teori grafik, mengetahui area ini secara umum sangat membantu. Penuh dengan bukti oleh induksi, yang sangat berguna untuk memahami rekursi, yang sangat berguna dalam pemrograman, terutama dengan struktur data. Mengetahui tentang set, penghitungan, inklusi-eksklusi, logika boolean, dll dapat berguna sesekali.
Tipe teori: tidak mengherankan, mengetahui teori tipe membantu dengan memahami pemrograman dalam bahasa yang diketik, dan lebih luas, dengan menggunakan tipe sebagai cara untuk memastikan sifat kebenaran tertentu. Mengetahui tentang teori subtyping membantu Anda memahami kovarians dan contravariance dalam bahasa mirip Java. Mengetahui tentang hal-hal seperti polimorfisme parametrik jelas membantu ketika mempelajari bahasa tipe-berat seperti Haskell atau Purescript, tetapi bahasa seperti Scala, TypeScript, dan Rust menjadi lebih lazim di industri, dan tipe berada pada intinya.
Jika Anda mengambil yang paling ekstrem, Anda mendapatkan hal-hal seperti Coq dan Agda dan Idris, yang dapat digunakan untuk membuktikan sifat ketepatan yang sangat tepat tentang program.
Teori Komputasi dan Kompleksitas : mengetahui kapan suatu masalah dapat diselesaikan, atau NP-hard, berguna, karena Anda tidak akan menghabiskan waktu berjam-jam memeras otak Anda untuk cara yang cepat untuk melakukannya. Demikian juga, mengetahui beberapa teori di balik algoritma aproksimasi, traktabilitas parameter tetap, atau algoritma eksponensial basis rendah, dapat membantu ketika Anda benar-benar perlu menyelesaikan masalah NP-hard.
Teori Automata: banyak masalah dapat dimodelkan dengan berbagai mesin negara, jadi memahami sifat-sifatnya berguna.
Ada juga beberapa bidang khusus bidang:
Statistik: Jika Anda melakukan pembelajaran mesin atau data besar, ini adalah suatu keharusan.
Aljabar linear / vektor kalk : keduanya penting untuk pembelajaran mesin, grafik, simulasi, atau pemrosesan gambar / audio.
Teori kisi : jika Anda melakukan pekerjaan apa pun dengan kompiler atau optimasi program, yang ini muncul setiap saat. Poin tetap di mana-mana!
Kategori teori: tidak diperlukan untuk kode, tetapi berguna untuk apa pun yang sangat basah dalam teori jenis.
Sunting: tidak percaya saya lupa:
sumber