Apakah matematika diperlukan untuk pemrograman? [Tutup]

117

Saya kebetulan berdebat dengan seorang teman selama masa kuliah apakah matematika tingkat lanjut diperlukan untuk setiap programmer veteran. Dia biasa membantah keras hal itu. Dia mengatakan bahwa programmer hanya membutuhkan pengetahuan matematika dasar dari matematika SMA atau tahun baru kuliah, tidak lebih tidak kurang, dan hampir semua tugas pemrograman dapat dicapai bahkan tanpa perlu matematika tingkat lanjut. Dia berpendapat, bagaimanapun, bahwa algoritma adalah aset fundamental & harus dimiliki oleh programmer.

Pendirian saya adalah bahwa semua kemajuan ilmu komputer bergantung hampir sepenuhnya pada kemajuan matematika, dan oleh karena itu pengetahuan yang menyeluruh dalam matematika akan sangat membantu pemrogram ketika mereka bekerja dengan masalah yang menantang di dunia nyata.

Saya masih tidak bisa menentukan sisi mana dari argumen yang benar. Bisakah Anda memberi tahu kami pendirian Anda, dari pengalaman Anda sendiri?

simsim
sumber
7
Saya menelepon guru matematika hs saya sepuluh tahun kemudian hanya untuk memberi tahu dia bahwa saya tidak pernah menggunakan matematika tingkat lanjut sepanjang karier saya. Gerakan ***, aku tahu, tapi pertanyaan yang bagus! Tambah satu.
Chris McCall
2
stackoverflow.com/questions/157354/… dan banyak lainnya dari stackoverflow.com/search?q=should+I+study+math
dmckee --- mantan moderator anak kucing
Silakan lihat jawaban pilihan tertinggi untuk pertanyaan ini .
Boris Stitnicky
Daripada. Tutup, ini harus dipindahkan ke programmer.
Chris Cudmore

Jawaban:

111

Untuk menjawab pertanyaan Anda seperti yang diajukan, saya harus mengatakan, "Tidak, matematika tidak diperlukan untuk pemrograman". Namun, seperti yang disarankan orang lain di utas ini, saya yakin ada korelasi antara memahami matematika dan kemampuan "berpikir secara algoritme". Artinya, mampu berpikir secara abstrak tentang kuantitas, proses, hubungan dan pembuktian.

Saya mulai pemrograman ketika saya berusia sekitar 9 tahun dan akan sangat berlebihan untuk mengatakan saya telah belajar banyak matematika pada tahap itu. Namun, dengan sedikit usaha saya dapat memahami variabel, untuk loop, pernyataan goto (maafkan saya, saya adalah Vic 20 BASIC dan saya belum membaca Dijkstra) dan geometri koordinat dasar untuk meletakkan grafik di layar .

Saya akhirnya melanjutkan untuk menyelesaikan gelar kehormatan di Matematika Murni dengan minor di Ilmu Komputer. Meskipun saya berfokus terutama pada analisis, saya juga mempelajari cukup banyak matematika diskrit, teori bilangan, logika, dan teori komputabilitas. Selain dapat menerapkan beberapa ide dari statistik, teori probabilitas, analisis vektor, dan aljabar linier ke pemrograman, ada sedikit matematika yang saya pelajari yang secara langsung dapat diterapkan ke pemrograman saya selama gelar sarjana saya dan pemrograman komersial dan penelitian yang saya lakukan setelah itu.

Namun, saya sangat percaya metode berpikir formal yang dituntut matematika - penalaran yang cermat, mencari contoh yang berlawanan, membangun fondasi aksiomatik, menemukan hubungan antar konsep - telah menjadi bantuan yang luar biasa ketika saya menangani proyek pemrograman yang besar dan kompleks.

Pertimbangkan cara para atlet berlatih untuk olahraga mereka. Misalnya, para pesepakbola pasti menghabiskan banyak waktu pelatihan mereka untuk keterampilan dasar sepak bola. Namun, untuk meningkatkan kebugaran umum, mereka mungkin juga menghabiskan waktu di gym dengan sepeda atau mesin dayung, angkat beban, dll.

Mempelajari matematika dapat diibaratkan sebagai latihan beban atau pelatihan silang untuk meningkatkan kekuatan mental dan stamina Anda untuk pemrograman. Sangat penting bagi Anda untuk melatih keterampilan pemrograman dasar Anda, tetapi mempelajari matematika adalah latihan mental yang luar biasa yang meningkatkan kemampuan analitik inti Anda.

Mark Reid
sumber
6
Saya ingin menambahkan bahwa matematika bukan hanya latihan beban untuk kekuatan mental Anda, tetapi juga membuka pintu ke masalah dan solusi baru. Misalnya, selama magang pemrosesan gambar saya, tidak mungkin saya dapat menerapkan algoritme penghilang noise kami tanpa pemahaman menyeluruh tentang PDE. Kode yang dihasilkan sederhana, tetapi sangat tepat. Dan matematika itulah yang membawa kita ke sana. Yang lebih menakjubkan adalah keindahan formula ini. Satu ekspresi PDE kecil dapat diterjemahkan menjadi beberapa halaman kode. Tanpa rumus awal, sulit untuk melihat bagaimana Anda akan mengakhirinya.
Joe
Matematika tidak diperlukan untuk pemrograman, karena pemrograman adalah matematika. Ini bisa berupa matematika yang bagus, atau matematika yang buruk (seperti ketika panggilan lama orangutan ditransliterasikan ke dalam bahasa Ook ), tetapi setiap kali seorang programmer mendesain model objek dari sesuatu, ze (biasanya tanpa disadari) melakukan tindakan matematika. Jadi, sekali lagi, seseorang tidak perlu membaca buku matematika untuk memprogram, tetapi itu tidak mengubah apa pun pada fakta bahwa pemrograman adalah matematika, dan bahwa (seperti yang dikatakan Euclid), tidak ada jalan kerajaan untuk itu.
Boris Stitnicky
56

Sementara matematika tingkat lanjut mungkin tidak diperlukan untuk pemrograman (kecuali Anda memprogram kemampuan matematika tingkat lanjut), proses berpikir pemrograman dan matematika sangat mirip. Anda mulai dengan dasar hal-hal yang diketahui (aksioma, teori yang telah terbukti sebelumnya) dan mencoba pergi ke tempat baru. Anda tidak dapat melewati langkah-langkah. Jika Anda melewatkan langkah-langkah, maka Anda akan diminta untuk mengisi bagian yang kosong. Ini adalah proses berpikir kritis yang membuat keduanya sangat mirip.

Juga, matematikawan dan pemrogram sama-sama berpikir kritis dalam abstrak. Hal-hal dunia nyata diwakili oleh objek dan variabel. Kemampuan menerjemahkan dari konkret ke abstrak juga menghubungkan kedua bidang tersebut.

Ada kemungkinan besar bahwa jika Anda ahli dalam satu hal, Anda mungkin juga ahli dalam hal yang lain.

Jarrett Meyer
sumber
Jadi, Anda dapat mengatakan bahwa seseorang yang melakukan banyak teka-teki silang atau bermain Scrabble lebih cenderung pandai pemrograman daripada seseorang yang tidak. Hubungan tersebut tampaknya lebih mengarah pada kemungkinan daripada ketergantungan yang ketat.
Liam
Ketelitian dan disiplin dalam memecahkan masalah dalam matematika diterjemahkan ke dalam pemrograman. Anda harus memiliki kemampuan untuk mendekonstruksi masalah dan mendekatinya dari pertama arah yang jelas, dan kemudian dari arah yang lebih kreatif di kedua disiplin ilmu.
Bramha Ghosh
4
Dua pemrogram hebat yang sangat saya kagumi tidak belajar Ilmu Komputer, tetapi dilatih sebagai ahli matematika dan hanya mengubah jalur karier: Miguel de Icaza dan Alexander Stepanov. Omong-omong, Stepanov pernah menyatakan bahwa saat mengerjakan matematika "Anda tidak memulai dengan aksioma: Anda berakhir dengan aksioma". : D
Joe Pineda
@ Liam - Ini tentang pencocokan pola dan menyulap hal-hal dalam memori dalam jangka pendek. Kedua aktivitas tersebut membutuhkan keterampilan tersebut.
jcolebrand
+1 untuk "Ada kemungkinan besar bahwa jika Anda ahli dalam satu hal, Anda mungkin juga ahli dalam hal lain."
Thorbjørn Ravn Andersen
39

ilmu komputer! = pemrograman

Ok serius, saya kenal programmer baik dan buruk yang jurusan Bahasa Inggris dan Psikologi dan ada juga yang jurusan Ilmu Komputer. Beberapa orang yang sangat terkenal yang saya kagumi sebagai developer tidak memiliki latar belakang CS. Larry Wall (Perl), misalnya, adalah seorang ahli bahasa. Di sisi lain, mengetahui sesuatu tentang domain yang sedang Anda kerjakan itu membantu karena dengan demikian Anda setidaknya dapat melihat apakah data Anda masuk akal dan membantu pelanggan / pengguna menelusuri apa yang sebenarnya mereka inginkan. Dan ya, ada masalah kompleksitas komputasi dan struktur data yang efisien serta ketepatan program. Itu adalah hal-hal yang Anda pelajari dalam Ilmu Komputer dan itu berguna untuk diketahui di hampir semua domain, tetapi itu tidak perlu atau cukup.

David Nehme
sumber
12
Saya pikir kutipan terbaik yang pernah saya dengar adalah "Ilmu komputer tidak lebih tentang komputer daripada astronomi adalah tentang teleskop." (Dijkstra)
tloach
5
Saya pikir stackoverflow.com pada dasarnya dibuat untuk mengatasi jenis jawaban satu baris ini, namun ada 15 orang yang berpikiran sama yang mengangkat jawaban tidak berguna ini ke atas. Saya tidak punya masalah pribadi dengan Anda, namun saya telah menandai jawaban Anda sebagai "menyinggung". Setidaknya bagi saya.
simsim
2
@simsim: Saya merasa menyinggung bahwa orang berpikir gelar CS adalah tentang pemrograman.
tloach
3
@simsim: Tidak peduli apa yang Joel dan Jeff pikirkan ketika mereka membuat situs web ini. Ini semua tentang menciptakan komunitas di mana programmer saling membantu. Saya pikir jawaban singkat David tepat sasaran. +1
Scottie T
@ Scottie: jika itu adalah "semua tentang menciptakan komunitas di mana pemrogram saling membantu", maka forum & milis sudah cukup. Mungkin tanggapan saya agak kasar, tetapi mengejutkan melihat 15 pengguna memberikan suara untuk "jawaban" yang sama sekali tidak mengerti, sebelum mengedit tentunya. :-)
simsim
29

Saya rasa saya akan menjadi orang pertama yang mengatakan bahwa Anda memang membutuhkan matematika. Seperti yang dikatakan orang lain, matematika tidak terlalu penting untuk aspek perkembangan tertentu, tetapi dasar-dasar pemikiran kritis dan analisis terstruktur sangat penting.

Lebih dari itu, matematika penting dalam memahami banyak hal mendasar yang berhubungan dengan hal-hal seperti penjadwal, pengoptimalan, pengurutan, manajemen protokol, dan sejumlah aspek lain dari komputer. Meskipun matematika yang terlibat dari tingkat kalkulasi tidaklah rumit (sebagian besar adalah aljabar sekolah menengah atas), teori dan aplikasinya bisa sangat kompleks karena pemahaman yang kuat tentang matematika melalui kalkulus akan sangat bermanfaat.

Bisakah Anda bertahan tanpanya, tentu saja, dan Anda tidak boleh membiarkan pengetahuan matematika yang kurang menyeluruh menahan Anda, tetapi jika Anda memiliki kesempatan, atau kecenderungan saya akan belajar matematika sebanyak yang Anda bisa, kalkulus, teori numerik, linier aljabar, kombinatorika, aplikasi praktis, semuanya memiliki aplikasi praktis dan teoritis dalam berbagai ilmu komputer.

Saya mengenal orang-orang yang sangat sukses di kedua sisi pagar (mereka yang tidak terlalu fokus pada matematika, dan mereka yang bersekolah untuk fisika atau matematika), tetapi di kedua kelompok mereka menikmati masalah numerik dan belajar tentang algoritma dan teori matematika. .

GrayWizardx
sumber
Saya setuju itu. Meskipun seseorang bisa bertahan tanpanya - apakah dia akan menyesali keputusannya? Jika Anda berharap memiliki pekerjaan yang cukup menarik / menantang, keterampilan matematika yang Anda peroleh pasti akan membantu Anda.
Andras Vass
Cukup adil! GrayWizardx dan lainnya: Sebagai pembelajar mandiri, apa yang Anda rekomendasikan dalam hal bahan bacaan? Saya sangat dimatikan oleh cara yang sangat buruk di mana matematika diajarkan kepada saya ketika saya masih muda. Saya tidak ingin disalahkan di tempat lain, tetapi matematika disajikan dengan kejam. Sekarang saatnya menebus. Seberapa MUDAH mempelajari matematika yang dijelaskan di sini (kalkulus, aljabar linier, Matematika Diskrit, dll.) Sendiri? Apakah ada sekumpulan buku teks yang direkomendasikan untuk pendekatan ini? Gelar perguruan tinggi bukanlah pilihan lagi!
Emmel
1
@ Emmmel, saya benar-benar melihat "Panduan Manga untuk Matematika" dan "Panduan Manga untuk Kalkulus" di Barnes dan Noble di luar sana, dan saya tahu saya telah melihat "Panduan Idiots Lengkap untuk Aljabar Linear" beberapa hari yang lalu. Adapun sumber daya yang sebenarnya, ada beberapa situs matematika yang bagus (untuk siswa, dll) tetapi saya tidak yakin berapa banyak dari mereka yang masih ada. Satu hal yang saya lakukan sesekali adalah pergi ke community college dan "mengaudit" kelas matematika (anggap saja lulus / gagal) dan hanya mendapatkan penyegaran. Havent melakukannya dalam 5-6 tahun, tapi itu cukup membantu terakhir kali.
GrayWizardx
26

Saya memiliki gelar matematika, tetapi saya tidak ingat pernah mewajibkan matematika itu satu kali dalam karier saya. Itu berguna dalam hal melatih pikiran saya untuk berpikir logis, tetapi saya belum menulis kode apa pun menggunakan dinamika fluida, teori kuantum atau Rantai Markov. (Saya menduga yang terakhir adalah yang paling mungkin muncul.)

Sebagian besar pengembang lini bisnis tidak membutuhkan matematika tingkat lanjut hampir sepanjang waktu. Terkadang mengetahui trigonometri dapat membantu, dan tentu saja mampu memahami matematika yang cukup untuk mengimplementasikan algoritma yang dijelaskan secara matematis bisa menjadi penting - tetapi lebih dari itu? Nah.

Jangan lupa bahwa sebagian besar programmer tidak mengembangkan ilmu komputer - mereka sedang membangun aplikasi. Saya tidak perlu tahu teknik tingkat lanjut untuk mengemudikan mobil modern, meskipun mobil itu hampir pasti telah ditingkatkan melalui rekayasa lanjutan.

Jon Skeet
sumber
Saya setuju dengan sebagian besar dari apa yang Anda katakan, namun, tidak bisakah dikatakan bahwa banyak aspek pemrograman dapat jauh lebih mudah dengan memahami prinsip-prinsip matematika umum? Kadang-kadang rumus untuk sesuatu jauh lebih mudah untuk diprogram daripada algoritma untuk mencapai nilai yang sama ... selama Anda tahu rumus itu
BenAlabaster
@balabaster: Kadang-kadang - tapi menurut saya itu tidak sering terjadi. Selain itu, Anda tidak perlu mengetahui rumus terlebih dahulu untuk menggunakannya. Menjadi kompeten dalam matematika itu bagus, sehingga Anda dapat memahami rumus ketika Anda melihatnya, tetapi Anda jarang membutuhkan matematika tingkat gelar itu sendiri.
Jon Skeet
11
Gelar matematika? Maka Anda tahu itu bukan hanya angka. Saya memiliki dua gelar matematika, dan sering menggunakan konten: aljabar boolean untuk menganalisis / menyederhanakan logika, automata / teori bahasa untuk konstruksi DSL, aljabar untuk analisis kinerja O besar, dll.
joel.neely
14

Saya berpendapat bahwa memiliki logika lanjutan (diskrit) matematika sangat membantu. Itu bersama dengan teori himpunan. Saat berurusan dengan program komputer umum, disiplin ilmu ini dapat banyak membantu. Namun, banyak matematika lain yang saya ambil di universitas adalah kalkulus, yang sejauh yang saya bisa lihat, memiliki penggunaan yang sangat terbatas. Karena 90% (atau sesuatu seperti itu) pemrograman melakukan aplikasi bisnis dengan matematika yang sangat sederhana, saya akan mengatakan bahwa sebagian besar, Anda dapat bertahan dengan sedikit pengetahuan matematika. Namun, pemahaman yang baik tentang aljabar boolean, logika, matematika diskrit, dan teori himpunan benar-benar dapat membawa Anda ke level berikutnya.

Kibbee
sumber
14

Saya akan melawan arus di sini dan berkata "Ya"

Saya beralih dari Teknik Sipil ke pemrograman (Beton Sucks!). Latar belakang matematika saya terdiri dari hal-hal tahun pertama yang biasa, Kalkulus tahun kedua dan ketiga (Diff EQ, integrasi volume, Seri, Transformasi Fourier dan Laplace) dan kursus Analisis Numerik.

Saya menemukan bahwa matematika saya sangat kurang untuk pemrograman komputer. Ada seluruh bidang matematika dan logika Diskrit yang saya lewatkan, dan saya hanya bertahan karena perpustakaan buku teks yang luas, Wikipedia dan Wolfram. Algoritme yang paling canggih didasarkan pada matematika tingkat lanjut, dan saya tidak dapat mengembangkan algoritme lanjutan tanpa melakukan penelitian ekstensif (Pada dasarnya setara dengan pekerjaan setengah kursus.) Saya pasti tidak dapat menghasilkan algoritme BARU, karena saya tidak tidak memiliki dasar matematika sebagai pundak raksasa untuk berdiri.

Chris Cudmore
sumber
Berapa banyak algoritma dasar yang benar-benar ditulis oleh seorang programmer rata-rata? Saya kira 80% pekerjaan pemrograman tidak melibatkan matematika di luar aljabar dasar.
dbkk
@dbkk: Tugas paling umum programmer rata-rata adalah merancang model objek, "logika bisnis" dari beberapa domain. Dan proses semacam itu tidak lain adalah matematika, meskipun biasanya tidak tercermin oleh mereka yang melakukan tugas.
Boris Stitnicky
14

Itu tergantung pada apa yang Anda lakukan. Jika kamu banyak melakukan pemrograman 3D tentunya pengetahuan tentang geometri 3D sangat diperlukan, setuju kan? ;-) Jika Anda ingin membuat format gambar baru seperti JPG atau format audio baru seperti MP3, Anda juga akan tersesat jika Anda tidak dapat memahami transformasi cosinus atau fourier, karena ini adalah dasar dari kompresi lossy. . Banyak masalah lain yang bisa diselesaikan dengan lebih baik jika Anda menguasai matematika dengan baik.

Ada juga banyak tugas pemrograman lain yang menurut Anda tidak membutuhkan banyak matematika.

Mecki
sumber
13

Jika Anda merasa subjeknya cukup menarik untuk memposting ini, langsung saja dan mulailah belajar. Sisanya akan datang secara alami.

Daniel Situnayake
sumber
9

Ya, tidak perlu matematika tingkat lanjut - jika Anda membuat program komersial - perangkat lunak dari rak.

Namun ketika berhadapan dengan hal-hal hardcore seperti:

  • Menghitung lintasan untuk mengontrol robot
  • Membuat aplikasi mirip AI untuk mendukung ketidakpastian dan penalaran otomatis
  • Bermain dengan gerakan dan grafik 3-D

Beberapa pengetahuan matematika tingkat lanjut mungkin berguna. Dan bukan berarti mereka adalah masalah "di luar dunia ini".

Saya harus membuat perangkat lunak untuk mencoba "memprediksi" jumlah kertas yang diperlukan untuk sebuah kantor (dan sungguh sulit untuk menemukan cara terbaik untuk memperkirakan nilai).

Anda harus berhati-hati, karena mudah tersesat saat menggunakan hal-hal canggih - ada teman saya yang terpaksa menggunakan Turing untuk menyimpan status menu dinamis hanya untuk menampilkannya dengan benar - humm ... mungkin dia terlalu jauh dalam imajinasinya.

rshimoda.dll
sumber
Anda dapat menambahkan hal-hal seperti mengompresi file atau mengedit file MP3 atau apa pun yang benar-benar memerlukan pemahaman tentang apa yang dilakukan komputer, daripada hanya membuat situs web bersama-sama.
tloach
4
Bagaimana dia menggunakan Turing untuk melakukan ini? Papan ouija atau pemanggilan arwah?
Jared Updike
8

Jenis pemrograman apa?

Dalam pengalaman komersial saya, saya tidak memerlukan matematika tingkat lanjut, tetapi ini sangat bergantung pada bidang tempat Anda berada.

Grafik komputer membutuhkan banyak matematika tingkat lanjut. Banyak pemrograman komputer akademis membutuhkan matematika tingkat lanjut.

Jadi perkataan cenderung ada korelasi antara orang-orang yang pandai matematika dan orang-orang yang pandai pemrograman.

Saya harap jawaban plin-plan ini membantu.

David Waters
sumber
6

Matematika dibutuhkan untuk pengembang di beberapa bidang tetapi hampir tidak berguna di bidang lain.

Jika Anda seorang pengembang game dan harus banyak bekerja dengan fisika - pemahaman tentang matematika sangat penting. Jika Anda bekerja dengan kontrol visual lanjutan - Anda tidak dapat berbuat banyak tanpa geometri. Jika Anda berencana untuk melakukan perhitungan keuangan - akan SANGAT membantu untuk memiliki pengetahuan yang kuat tentang statistik.

Di sisi lain selama 5 tahun terakhir saya hanya memiliki 2 atau 3 proyek di mana jumlah matematika diperlukan sama sekali. Dari jumlah tersebut hanya ada 1 kejadian ketika pencarian Google tidak membantu.

Pada akhirnya, bahkan kalkulasi finansial seringkali menjadi sesuatu yang dilakukan klien Anda untuk Anda dan memberi Anda rumus untuk diterapkan.

Jadi jika Anda berada dalam bisnis 'perangkat lunak terapan', kemungkinan besar Anda tidak akan pernah menggunakan gelar matematika Anda. Jika Anda berada di perangkat lunak akademik, matematika sangat penting.

Ilya Kochetov
sumber
Untuk "pengembang game", saya akan menambahkan "pengembang simulasi". Saya ingat kembali pada '93 mengemudi ke seluruh kota mencoba menemukan buku matematika yang cukup canggih untuk menjelaskan bagaimana Quaternions bekerja kepada saya, sehingga saya dapat dengan benar mengkodekan algoritma recokining yang mati. Terima kasih Tuhan untuk Internet hari ini!
TED
6

Saya setuju dengan Chris. Saya juga akan mengatakan "Ya". Tetapi ini tergantung pada pasar Anda seperti yang dinyatakan di atas. Jika Anda hanya membuat beberapa aplikasi dasar "siap pakai" atau alat tulis untuk membantu pekerjaan Anda sehari-hari ... maka matematika tidak terlalu penting.

Solusi rekayasa perangkat lunak khusus membutuhkan banyak pemecahan masalah dan pemikiran kritis. Keterampilan yang paling pasti ditingkatkan saat latar belakang matematika hadir. Saya mempelajari Matematika dengan gelar Teknik Komputer dan saya menghargai semua latar belakang saya yang berorientasi pada matematika tentang mengapa saya berada di tempat saya saat ini.

Itu adalah 2 sen saya, saya tahu dari membaca di atas bahwa banyak yang tidak setuju. Saya mendorong semua untuk mempertimbangkan bahwa saya tidak mengatakan Anda tidak dapat memiliki keterampilan itu tanpa latar belakang matematika, saya hanya menyatakan bahwa keterampilan tersebut adalah efek samping dari memiliki latar belakang seperti itu dan dapat memengaruhi perangkat lunak secara positif.

MaTT
sumber
6

Dalam pengalaman saya, matematika diperlukan dalam pemrograman, Anda tidak bisa lepas darinya. Seluruh pemrograman didasarkan pada matematika.

Masalahnya bukan hitam dan putih, tapi lebih berwarna. Pertanyaannya bukanlah apakah Anda membutuhkan matematika atau tidak, tetapi seberapa banyak. Tingkat matematika yang lebih tinggi akan memberi Anda lebih banyak alat dan membuka pikiran Anda ke jalur yang berbeda.

Misalnya, Anda dapat memprogram jika Anda hanya mengetahui penjumlahan dan pengurangan. Saat perkalian diperlukan, Anda harus melakukan banyak penambahan. Perkalian menyederhanakan penambahan berulang. Aljabar memungkinkan seseorang untuk menyederhanakan matematika sebelum menerapkannya ke dalam program. Aljabar Linear menyediakan alat untuk mengubah gambar. Aljabar Boolean menyediakan mekanisme untuk mereduksi semua ifpernyataan tersebut.

Dan jangan lupakan saudara kandung dari Matematika, Logika dan Filsafat. Logika akan membantu Anda membuat penggunaan caseatau switchpernyataan secara efisien . Filsafat akan membantu Anda memahami pemikiran orang yang menulis kode yang sedang Anda modifikasi.

Ya, Anda tidak perlu banyak matematika untuk menulis program. Beberapa program mungkin membutuhkan lebih banyak matematika daripada yang lain. Lebih banyak pengetahuan matematika akan memberi Anda keuntungan dibandingkan mereka yang memiliki pemahaman lebih rendah. Saat ini, orang membutuhkan setiap keuntungan yang bisa mereka peroleh untuk mendapatkan pekerjaan itu.

Thomas Matthews
sumber
6

Saya telah memprogram selama 8 tahun secara profesional, dan sejak saya berusia 12 tahun sebagai hobi.

Matematika tidak diperlukan, logika diperlukan. Meskipun demikian, matematika sangat membantu, mengatakan bahwa itu tidak perlu sama dengan mengatakan bahwa untuk membunuh seseorang, senjata tidak diperlukan, Anda dapat menggunakan pisau. Memang benar, tapi senjata itu membuatnya jauh lebih mudah.

Ada beberapa minimal, yang harus Anda penuhi. Anda perlu mengetahui ekspresi dan notasi aljabar dasar, dan persamaan komputer yang umum. Misalnya, Anda perlu mengetahui apa itu eksponensial (3 ke 3 adalah 27), dan ekspresi komputer yang umum adalah 3 ^ 3. Notasi umum untuk aljabar memang berubah antarbahasa, tetapi banyak dari mereka menggunakan metodologi yang agak seragam. Orang lain (melihat Anda LISP) tidak. Anda juga perlu mengetahui urutan operasi.

Anda perlu memahami pemikiran algoritmik. Pertama ini, lalu ini, menghasilkan ini yang digunakan dalam perhitungan ini. Kemungkinan Anda memahami ini atau tidak, dan ini adalah rintangan yang cukup sulit untuk dilewati jika Anda tidak memahaminya; Saya telah menemukan bahwa ini adalah sesuatu yang Anda 'dapatkan', dan sebenarnya bukan sesuatu yang dapat Anda pelajari. Sebaliknya, sebagian orang tidak 'mengerti' seni. Mereka seharusnya tidak menjadi pelukis. Juga, ada siswa dalam kurikulum Ilmu Komputer yang tidak mengerti mengapa ini tidak berhasil: x = z + w; z = 3; y = 5; Bukan karena mereka tidak memahami penjumlahan, itu karena mereka tidak memahami persyaratan ekspresi yang tidak ambigu. Jika mereka memahaminya, komputer juga harus, bukan? Jika Anda tidak dapat melihat apa yang salah dengan ketiga baris di atas, maka jangan menjadi programmer.

Terakhir, Anda perlu mengetahui matematika apa pun yang ada di bawah domain pemrograman Anda. Software akuntansi dapat berhenti pada aljabar dasar. Jika Anda memprogram fisika, Anda perlu mengetahui fisika (secara longgar) dan matematika dalam geometri 3 dimensi (Euclidean). Jika Anda memprogram perangkat lunak arsitektur, Anda perlu mengetahui trigonometri.

Ini berjalan lebih jauh dari matematika; untuk domain apa pun Anda memprogram, Anda harus benar-benar memahami dasar-dasarnya. Jika Anda adalah perangkat lunak analisis bahasa pemrograman, Anda harus mengetahui probabilitas, statistik, teori tata bahasa (berbagai bahasa), dll.

Sering kali, domain tertentu membutuhkan, atau bisa mendapatkan keuntungan dari, pengetahuan yang menurut Anda tidak terkait. Misalnya, jika Anda memprogram perangkat lunak audio, Anda sebenarnya perlu mengetahui trigonometri untuk menangani bentuk gelombang.

Besaran mengubah banyak hal juga. Jika Anda menyortir kumpulan data keuangan yang terdiri dari 1000 item, itu bukan masalah besar. Namun, jika itu adalah 10 juta record, Anda akan mendapat banyak manfaat dari mengetahui matematika vektor sebenarnya, dan memiliki pemahaman yang mendalam tentang pengurutan pada tingkat biner (bagaimana sistem mengurutkan menurut abjad? Bagaimana ia mengetahui 'a' kurang dari 'b '?)

Anda akan menemukan bahwa sebagai seorang programmer, basis pengetahuan umum Anda akan meledak, karena setiap proyek akan membutuhkan lebih banyak pembelajaran di luar lingkup langsung pemrograman. Jika Anda mual atau malas belajar mandiri, dan tidak suka menghabiskan 10+ jam seminggu untuk melakukan 'pekerjaan rumah', jangan menjadi programmer.

Jika Anda suka latihan pikiran, jika Anda suka belajar, jika Anda dapat memikirkan hal-hal abstrak seperti matematika tanpa kalkulator atau desain tanpa sketsa, jika Anda memiliki selera yang luas dalam hidup dan hobi, jika Anda kritis terhadap diri sendiri dan dapat membuang ' ide favorit, jika Anda suka menyempurnakan sesuatu, maka jadilah seorang programmer. Jangan mendasarkan keputusan ini pada matematika, tetapi lebih pada kemampuan untuk berpikir logis dan belajar. Itulah yang penting; matematika hanyalah hasil sampingan.

pengguna634669
sumber
5

Tentu saja itu tergantung pada jenis programmer yang Anda inginkan, atau lebih baik programmer seperti apa yang diinginkan oleh perusahaan Anda. Saya pikir kalkulus dan aljabar itu penting, statistik dan pemrograman linier memang alat yang bagus untuk dimiliki di tas Anda, mungkin analisis (turunan, integral, fungsi ...) dapat dilakukan tanpa. Tetapi jika Anda ingin mengetahui bagaimana segala sesuatunya bekerja sedalam-dalamnya (elektronik, misalnya, atau beberapa algoritme non-sepele) matematika "tingkat lanjut" adalah sesuatu yang sebaiknya Anda tidak pergi tanpa kemana-mana.

Manrico Corazzi
sumber
5

Sebagian besar pemrograman yang saya lakukan melibatkan simulasi fisika untuk penelitian termasuk hal-hal seperti elektromagnetisme, mekanika kuantum, dan mekanika struktural. Karena domain masalah memiliki matematika tingkat lanjut yang terkait dengan mereka, saya akan kesulitan menyelesaikannya tanpa menggunakan matematika tingkat lanjut.

Jadi jawaban atas pertanyaan Anda adalah - tergantung pada apa yang Anda coba lakukan.

Berjalan secara acak
sumber
5

Pengetahuan matematika tingkat lanjut sangat penting jika Anda akan menulis bahasa pemrograman baru. Atau Anda perlu menulis algoritme Anda sendiri.

Namun, untuk sebagian besar pemrograman sehari-hari - dari situs web hingga aplikasi pemrosesan asuransi - hanya matematika dasar yang diperlukan .

ek
sumber
5

Seseorang dengan matematika yang solid (yang bukan hanya aritmatika) atau latar belakang logika akan mengatasi dengan baik algoritma, penggunaan variabel, penalaran bersyarat dan struktur data.

  • Tidak semua orang bisa mendesain UI.
  • Tidak semua orang dapat membuat kode yang efisien.
  • Tidak semua orang bisa berkomentar dan mendokumentasikan dengan jelas.
  • Tidak semua orang bisa melakukan algoritma yang baik

Matematika akan membantu Anda pada suatu titik, tetapi hanya pada suatu titik.

Tidak dicantumkan
sumber
5

Saya tidak berpikir bahwa pengetahuan matematika tingkat lanjut adalah persyaratan untuk pemrogram yang baik, tetapi berdasarkan pengalaman pribadi saya berpikir bahwa pemrogram yang memiliki pemahaman yang lebih baik dalam matematika tingkat lanjut juga akan menjadi pemrogram yang lebih baik. Ini mungkin hanya karena pikiran yang lebih logis, atau pandangan yang lebih logis karena pengalaman mereka dalam memecahkan masalah matematika.

Jimoc
sumber
5

Konsep dasar matematika adalah sebagai berikut, merancang, memahami, mengimplementasikan, dan menggunakan algoritma. Jika Anda tidak dapat mengerjakan matematika maka itu karena Anda tidak dapat melakukan hal-hal ini, dan jika Anda tidak dapat melakukan hal-hal ini maka Anda tidak dapat menjadi programmer yang efektif.

Tugas pemrograman umum mungkin tidak memerlukan pengetahuan matematika khusus (misalnya Anda mungkin tidak memerlukan aljabar vektor dan kalkulus kecuali Anda melakukan tugas-tugas seperti grafik 3D atau simulasi fisika, misalnya), tetapi kumpulan keterampilan yang mendasarinya identik, dan kurangnya kemampuan dalam satu domain akan diimbangi dengan kurangnya kemampuan yang sesuai di domain lain.

DrPizza
sumber
5

Matematika adalah kotak peralatan untuk membuat program. Saya merekomendasikan Pengantar Algoritma Cormen. Ini menyentuh hal-hal yang lebih "matematika".

- Greatest lowest limit (managing resources) 
- Random variables (game programming)
- Topological sort (adjusting spreadsheets)
- Matrix operations (3d graphics)
- Number theory (encryption)
- Fast fourier transforms (networks)
pengguna559910
sumber
4

Saya tidak berpikir bahwa matematika yang lebih tinggi adalah persyaratan untuk menjadi programmer yang baik - karena selalu tergantung pada apa yang Anda kodekan.

Tentu saja jika Anda berada dalam pemrograman grafis 3D, Anda memerlukan matriks dan lainnya. Sebagai penulis perangkat lunak bisnis, Anda mungkin memerlukan matematika statistik.

Tapi menjadi programmer profesional selama hampir 10 tahun (dan 10 tahun amatir lagi) "matematika yang lebih tinggi" bukanlah sesuatu yang saya butuhkan secara teratur. Dalam sekitar 99,8% dari semua kasus, itu hanya plus, minus, pembagian, dan perkalian dalam beberapa kombinasi cerdas - dalam banyak kasus ini tentang algoritma, bukan matematika.

BlaM
sumber
4

Mempelajari matematika tingkat tinggi, bagi sebagian besar pemrogram, adalah penting karena hal itu membuat otak Anda tertekuk untuk berpikir secara logis, dengan cara langkah demi langkah untuk berpindah dari satu hal ke hal lain.

Namun, sangat sedikit pekerjaan pemrograman yang membutuhkan apa pun di atas matematika sekolah menengah. Saya pernah menggunakan aljabar linier sekali. Saya tidak pernah menggunakan kalkulus. Saya menggunakan aljabar setiap hari.

Lucas Oman
sumber
4

Pengetahuan matematika sering berguna bagi seorang programmer, seperti juga keterampilan desain grafis, kemampuan memecahkan teka-teki, etos kerja, dan sejumlah keterampilan dan sifat lainnya. Sangat sedikit programmer yang pandai dalam segala hal yang mungkin bisa dilakukan oleh seorang programmer. Saya tidak akan setuju dengan pernyataan apa pun dalam bentuk "Anda bukan pemrogram sungguhan kecuali Anda dapat { masukkan kemampuan pemrograman favorit di sini }".

Tapi saya akan waspada terhadap seorang programmer yang tidak bisa mengerjakan Matematika. Lebih dari orang yang tidak bisa menggambar.

MusiGenesis
sumber
4

Saya pikir itu sangat tergantung pada apa yang Anda coba lakukan, tetapi IMHO, teori CS dan OS lebih penting daripada matematika di sini, dan Anda benar-benar hanya membutuhkan matematika yang mereka libatkan.

Misalnya, ada banyak latar belakang CS teori penjadwalan dan pengoptimalan yang berdiri di belakang banyak penjadwal di OS modern. Itu adalah contoh dari sesuatu yang membutuhkan matematika, meskipun bukan sesuatu yang sangat rumit.

Tapi sejujurnya, untuk banyak hal, Anda tidak membutuhkan matematika. Yang Anda butuhkan adalah mempelajari kemampuan berpikir di basis 2 dan 16, seperti kemampuan mental OR / AND. Misalnya, jika Anda memiliki satu byte dan di dalam byte itu ada dua bidang 3-bit dan 2 bit yang terbuang, mengetahui bit mana yang berada di bidang mana yang aktif ketika nilai byte adalah seperti 11 akan membuat segalanya sedikit lebih cepat daripada harus menggunakan pena dan kertas.

Uri
sumber
Apakah Anda pernah mempelajari teori antrian? Pernahkah Anda mempelajari manajer memori dan model statistik yang membuat pengembang memilih salah satu dari yang lain? Saya tidak selalu tidak setuju dengan beban jawaban Anda, tetapi Anda terlalu menyederhanakan.
San Jacinto
@San: Saya yakin bahwa saya terlalu menyederhanakan, tetapi saya pikir sebagian besar pengembang sistem tidak perlu mengetahui hal-hal ini pada level ini. Saya mempelajarinya di tingkat dasar dalam dua gelar pertama saya, dan agak lebih dalam selama gelar Ph.D., tetapi itu bukan keahlian saya, saya lebih suka menyerahkannya kepada para ahli. Orang-orang OS yang saya kenal memiliki keterampilan matematika yang mengejutkan saya.
Uri
yang menurut saya sangat valid. saya pikir ada kebutuhan untuk membedakan pemrograman sistem dari pemrograman OS. Konsep tenunnya rapat, tapi tetap berbeda.
San Jacinto
4

Saya memulai pemrograman pada waktu yang sama ketika saya memasuki kelas pra-aljabar .. Jadi saya tidak akan mengatakan matematika adalah yang terpenting, meskipun itu dapat membantu dalam jenis pemrograman tertentu, terutama fungsional.

Saya belum mengambil Matematika Diskrit, tapi saya melihat banyak teori dengan pemrograman yang ditulis dalam notasi matematika yang diajarkan di kelas ini.

Selain itu, pastikan Anda tahu cara menghitung apa pun di basis apa pun, terutama basis 2, 8, dan 16.

Juga, satu kelas yang benar-benar membawa pulang beberapa konsep bagi saya adalah kelas pra-pemrograman ini. Kami diajari tentang persatuan, persimpangan, dan semua hal menyenangkan itu dan itu hampir paralel dengan matematika. Dan kami membahas logika boolean dengan sangat berat. Apa yang saya anggap paling berguna adalah ketika kita belajar bagaimana mengurangi pernyataan boolean yang kompleks. Ini sangat berguna:

(x|y) & (x|z) & (x|foo)

dapat disederhanakan menjadi

x | (y & z & foo)

Yang sebelumnya tidak saya pahami.

Earlz
sumber
4

Nah, Anda menghasilkan sejumlah tanggapan, dan tidak, saya tidak membaca semuanya. Saya di tengah-tengah ini, tidak, Anda tentu tidak perlu matematika untuk menjadi seorang programmer. Assembler vs device driver di linux tidak lebih atau kurang rumit dari yang lain dan tidak membutuhkan matematika.

Anda sama sekali tidak perlu mengambil atau lulus kelas matematika untuk semua ini.

Saya setuju bahwa pola pikir pemecahan masalah untuk pemrograman sangat mirip dengan solusi matematika, dan sebagai hasilnya matematika mungkin datang dengan mudah. atau sebaliknya jika matematika itu sulit maka pemrograman mungkin sulit. Kelas atau gelar atau potongan kertas atau piala tidak diperlukan, pergi dan belajar sesuatu, tentu saja.

Sekarang jika Anda tidak dapat mengubah dari heksadesimal ke biner ke desimal dengan cepat baik di kepala Anda, di atas kertas, atau menggunakan kalkulator, Anda akan kesulitan. Jika Anda ingin masuk ke jaringan dan hal-hal lain yang melibatkan pengaturan waktu, driver kernel mana yang sering dilakukan tetapi tidak perlu. Anda akan berjuang. Saya mengetahui daftar yang sangat panjang dari orang-orang dengan gelar matematika dan / atau ilmu komputer, dan / atau gelar teknik yang kesulitan dengan penghitungan laju, bit per detik, byte per detik, berapa banyak memori yang Anda perlukan untuk melakukan sesuatu, dll. Untuk dalam beberapa hal hal itu dapat dianggap semacam bakat yang dimiliki beberapa orang dan yang lainnya harus diupayakan.

Intinya saya adalah saya percaya pada kekuatan kemauan, jika Anda ingin mempelajari hal-hal ini, Anda bisa dan mau, sesederhana itu. Anda tidak perlu mengambil kelas atau menghabiskan banyak uang, linux dan qemu misalnya dapat membuat Anda sibuk untuk beberapa waktu, bahasa asm yang berbeda, dll. Lingkungan yang dapat dihancurkan untuk pengembangan kernel, tertanam, dll. Anda tidak terbatas pada itu , tetapi saya tidak percaya bahwa Anda harus lari dan mengambil kelas apa pun jika Anda tidak mau. Jika Anda ingin mengambil beberapa kelas, beberapa kelas cs dan beberapa kelas matematika ..

old_timer
sumber
Ini bukan umpan api, tapi kenyataan. Semua yang perlu Anda ketahui tentang elektronik digital dan rekayasa perangkat lunak dari perspektif pemrograman dapat disimpulkan. 0, 1, dan, atau, tidak. lima hal itu adalah apa yang elektronik digital dan semua program beroperasi. Anda dapat membangun apa saja dengan sekotak besar gerbang nand cepat.
old_timer
4

Anda membutuhkan matematika. Pemrograman tidak lebih dari matematika. Setiap temuan fisika teoretis tidak menjadi implikasi praktis (dapat diterapkan), kecuali jika dijelaskan dalam istilah solusi matematika. Tak satu pun dari masalah tersebut dapat diselesaikan secara komputasi jika tidak dapat diinterpretasikan pada komputer, dan lebih khusus lagi pada bahasa pemrograman. Dengan demikian, bahasa yang berbeda dirancang untuk memecahkan masalah tertentu. Tetapi untuk tujuan umum dan bahasa pemrograman yang tersebar luas seperti java, c, c ++ banyak tugas pemrograman kami melibatkan solusi berulang (berkelanjutan) untuk masalah yang sama seperti mengekstrak nilai dari database, file teks, meletakkannya di windows (desktop, web), memanipulasi nilai yang sama, terkadang mengakses beberapa data dari perangkat serupa (tetapi diberi nama merek yang berbeda, port yang berbeda dan sakit kepala) dll yang tidak melibatkan lebih dari metode kesatuan,

Pramod
sumber
3

IMO, Anda mungkin membutuhkan bakat untuk matematika, tanpa harus memiliki banyak pengetahuan di bidangnya. Jadi, hal-hal yang Anda butuhkan untuk menjadi ahli dalam matematika sama dengan hal-hal yang Anda butuhkan untuk menguasai pemrograman.

Tetapi secara umum, saya tidak dapat mengingat kapan terakhir kali saya menggunakan matematika tingkat lanjut apa pun dalam pemrograman sehari-hari, jadi tidak.

Lehane
sumber