Topik atau bidang matematika yang meningkatkan kemahiran pemrograman komputer? [Tutup]

14

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 areaakan 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.

Charitoo
sumber
1
Saya terkejut StackOverflow menyatakan pertanyaan ini di luar topik. Dari sudut pandang saya (seorang pensiunan programmer), pertanyaan ini harus menjadi salah satu pertanyaan paling penting untuk SO.
scaaahu
1
StackOverflow sebenarnya lebih banyak tentang masalah pemrograman tertentu. Ini akan menjadi yang terbaik di CSEducators, dan mungkin sudah bekerja di SoftwareEngineering.
Nat
1
Kami memiliki pertanyaan seperti ini sebelumnya, dan mereka semua memiliki masalah yang sama: mereka terlalu luas, dan terlalu subyektif. Satu-satunya jawaban konsensus adalah: semuanya .
Raphael
@ Raphael Pertama, saya menghormati keputusan Mod. Namun, saya ingin mengajukan pertanyaan atas nama OP. Apakah ada cara untuk memperbaiki pertanyaan sehingga dapat dibuka kembali? Jika tidak ada cara untuk memperbaikinya, adakah SE lain yang bisa ditanyakan oleh OP untuk mengajukan pertanyaan ini? (Jelas, OP sudah mencoba SO dan saya tahu itu mungkin tidak cocok di Academia SE karena tidak terkait erat dengan Academia.)
scaaahu
Pertanyaan yang meminta solusi formal untuk masalah tertentu akan baik-baik saja. Pertanyaan saran studi umumnya tidak cocok untuk format SE; alasan penutupan "berbasis-opini" berlaku untuk semua situs!
Raphael

Jawaban:

19

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:

  • Kriptografi : jika Anda tertarik pada keamanan, hashing, tanda tangan digital dan semacamnya, maka pastikan untuk mempelajari beberapa teori bilangan, Teori Grup, Teori lapangan, Teori kurva elips, dll.
Ya ampun
sumber