Apakah Anda harus pandai matematika untuk menjadi programmer yang baik? [Tutup]


78

Tampaknya kebijaksanaan konvensional menunjukkan bahwa programmer yang baik juga pandai matematika. Atau keduanya terkait secara intrinsik. Banyak buku pemrograman yang saya baca memberikan banyak contoh yang merupakan solusi untuk masalah matematika, atau entah bagaimana terkait dengan matematika seolah-olah contoh-contoh ini adalah apa yang masuk akal bagi kebanyakan orang.

Jadi pertanyaan yang ingin saya sampaikan adalah: apakah Anda harus pandai matematika untuk menjadi programmer yang baik ?


1
@ Markus Tidak harus. Mempelajari subjek dan menyukainya adalah dua hal yang sangat berbeda.
Maks.

3
Apakah kamu seorang raja? Atau kembar siam? Jika tidak, saya sarankan Anda tetap berpegang pada "Saya" ketika merujuk pada diri Anda sendiri.
drxzcl

1
@ jk - kemungkinan besar Anda benar physics.about.com/od/alberteinstein/p/einsteinpro.htm masih berpikir ada sejumlah seni yang bagus untuk pemrograman; p
Garet Claborn

3
Saya pikir saya tidak pernah menyukai matematika. Di kemudian hari, saya menyadari bahwa saya tidak senang dengan sintaksisnya.
MrFox

1
Semua programmer menggunakan matematika sepanjang waktu, mereka hanya tidak menyadarinya karena sangat berbeda dari matematika yang diajarkan di sekolah. Matematika diam-diam, kalkulus lambda, aljabar Boolean, logika (!) Adalah konsep matematika yang benar-benar canggih yang kita gunakan setiap hari.
rotman

Jawaban:


83

Saya pikir itu tergantung pada jenis pemrograman yang ingin Anda lakukan. Sejauh menjadi programmer di dunia bisnis, saya akan mengatakan bahwa jawabannya adalah tidak. Anda bisa menjadi programmer hebat tanpa mengetahui matematika tingkat lanjut. Ketika Anda akhirnya harus berhadapan dengan matematika, rumus biasanya didefinisikan dalam persyaratan bisnis sehingga hanya menjadi masalah menerapkannya dalam kode.

Di sisi lain, Jika Anda ingin menjadi programmer tingkat rendah atau mengatakan buat mesin grafis 3D, matematika akan memainkan peran besar.


6
Saya ingin menambahkan bahwa saya telah melihat beberapa PhD dalam matematika dan fisika menulis kode yang mengerikan. Keterampilan ini tumpang tindih sampai batas tertentu tetapi mereka disiplin yang terpisah.
MrFox

133

Saya menentang arus dan mengatakan ya, Anda perlu pola pikir matematika . Kebanyakan orang berpikir matematika sebagai melakukan rumus aritmatika atau menghafal. Ini seperti menanyakan apakah Anda membutuhkan ejaan yang sempurna atau kosa kata yang luar biasa untuk menjadi penulis yang baik.

Menulis adalah tentang komunikasi, dan matematika / pemrograman adalah tentang proses berpikir yang jernih dan logis (dengan cara yang Anda tidak dapat membuat kesalahan; persamaan tidak seimbang, atau program tidak mengkompilasi). Secara khusus, pemikiran logis itu bermanifestasi dalam:

  • Kemampuan untuk memperkirakan / memahami perbedaan antara angka: O (n ^ 2) vs O (lg (n)), rasa intuitif KB vs MB vs GB, seberapa lambat disk dibandingkan dengan RAM. Jika Anda tidak menyadari betapa kecilnya KB dibandingkan dengan GB, Anda akan membuang waktu untuk mengoptimalkan hal-hal yang tidak penting.
  • Fungsi / pemrograman fungsional (adakah kebetulan bahwa persamaan f (x) = x ^ 2 sangat mirip dengan bagaimana Anda akan menulis metode itu? Kata-kata "algoritma" dan "fungsi" ada di dunia matematika jauh sebelum komputer pertama lahir :-))
  • Aljabar dasar untuk membuat & menyusun ulang persamaan Anda sendiri, ambil rata-rata, statistik dasar

Jadi, saya akan mengatakan Anda memerlukan pola pikir matematika , mampu membangun & memanipulasi model mental dari apa yang program Anda lakukan, daripada kumpulan fakta & teorema. Bidang-bidang tertentu seperti grafik atau database akan memiliki fakta-fakta tertentu yang Anda butuhkan juga, tetapi bagi saya itu bukan esensi dari menjadi "pandai matematika".


1
Matematika utama vs pola pikir matematika: ini seperti perbedaan antara mengetahui semua rumus fisika, dan mampu memantulkan bola karet secara akurat dari papan sejauh 20 yard!
TehShrike

9
Saya akan menambahkan bahwa banyak programmer yang baik tahu cara bermain catur atau pergi :-)
xanatos

1
Banyak sekali kode komputer pada dasarnya adalah aljabar meskipun Anda sedang mengaturnya untuk komputer daripada menyelesaikannya sendiri. Jika Anda tidak benar-benar di rumah dengan aljabar bagaimana Anda bisa berharap untuk melakukan pekerjaan yang layak ini?
Loren Pechtel

18
Pemikiran matematika adalah kunci pemrograman. Saya menambahkan suara saya untuk menekankan hal itu.
Gus

4
+1 Matematika sangat penting dalam memahami bahasa pemrograman karena merupakan dasar dari keahlian kami. Sebagian besar konstruksi bahasa pemrograman yang kami gunakan sehari-hari diangkat dari disiplin matematika seperti kalkulus lambda.
MattDavey

53

Ada banyak bidang pemrograman yang berbeda dan banyak dari mereka tidak memerlukan standar pengetahuan matematika yang sangat tinggi. Anda tidak akan pernah bisa menulis mesin 3D, tetapi Anda pasti akan dapat mengembangkan aplikasi bisnis dan web. Mari kita hadapi itu - operasi matematika yang paling umum di sebagian besar program komputer adalah menambah angka satu per satu.

Saya akan dengan senang hati mengakui bahwa saya tidak pernah menyukai matematika atau pandai dalam bidang matematika (saya benar-benar lulus dengan gelar Sastra Inggris!) Dan telah bekerja sebagai pengembang profesional selama lebih dari 12 tahun sekarang. Saya mengembangkan sebagian besar aplikasi web, yang jarang membutuhkan banyak matematika. Yang lebih penting adalah kemampuan berpikir secara logis, mampu memecah masalah menjadi beberapa bagian dan memiliki pemahaman yang luas tentang berbagai teknologi dan kerangka kerja yang terlibat.

Sebagai seorang programmer Anda lebih mungkin harus mengimplementasikan algoritma yang sudah ada daripada merancang yang sama sekali baru . Perlu berolahraga, katakanlah, bunga majemuk? Anda tidak perlu mencari tahu sendiri, cukup cari formula dan terapkan. Sebagian besar masalah telah diselesaikan, Anda hanya perlu tahu bagaimana menerapkan solusi dalam bahasa pilihan Anda. Itu tidak berarti bahwa menjadi ahli matematika tidak akan menguntungkan ; hanya saja itu tidak sepenuhnya penting .

Ketika saya masih di sekolah di pertengahan 80-an ketika komputer rumah di mana tidak terlalu umum saya sering menulis program untuk menyelesaikan pekerjaan rumah matematika saya. Saya sering tidak bisa melakukannya di kepala saya, tetapi saya bisa menerapkan formula apa pun yang diperlukan sebagai rutin perangkat lunak. Anda tidak perlu menjadi Pythagoras lain untuk mengerjakan sisi terpanjang dari segitiga siku-siku, Anda hanya perlu bisa membuat kode a² + b² = h²dalam bahasa pilihan Anda.


3
Keuangan dan akuntansi tidak yang buruk, kecuali Anda melakukan pilihan harga atau sesuatu seperti itu.

5
Anda ada benarnya, Chris, tetapi bahkan dengan aplikasi keuangan Anda lebih cenderung menerapkan formula daripada menyusunnya.
Dan Diplo

2
@ Mark - Benar, tapi saya akan mengatakan memahami masalah pembulatan lebih merupakan pertanyaan untuk mengetahui jenis yang tepat untuk digunakan. Anda tidak perlu pandai matematika untuk mengetahui bahwa (misalnya) desimal lebih baik daripada mengapung untuk nilai moneter. Dan saya tidak berpikir seorang ahli matematika secara otomatis akan menyadari tipe data yang tepat untuk digunakan - ini adalah masalah belajar.
Dan Diplo

3
@ SK-logic: Lebih tepatnya, semua yang dilakukan komputer adalah logis . Beberapa operasi logika itu ditafsirkan sebagai matematika (dan beberapa orang mengklaim logika adalah cabang matematika, banyak yang membuat marah beberapa filsuf).
Donal Fellows

3
@Donal Fellows, logika formal adalah matematika. Dan para filsuf tetap diakui karena kontribusi historis mereka terhadap matematika, serta ahli matematika yang membalas dendam (misalnya, dengan menciptakan beberapa hal aneh seperti 'monadologi').
SK-logic

30

Anda tidak harus pandai matematika. Namun, Anda harus pandai logika, dan pemecahan masalah. Namun orang-orang yang pandai logika dan pemecahan masalah biasanya juga pandai matematika. Saya akan mengatakan bahwa itu sangat tergantung pada jenis matematika. Anda bisa menjadi mengerikan di kalkulus (seperti saya), dan masih menjadi programmer yang baik (seperti saya). Tetapi jika Anda memiliki masalah dengan Matematika Diskrit dan Teori Set, Anda mungkin akan menemukan banyak aspek pemrograman yang cukup sulit.


Anda tidak harus pandai logika untuk menjadi pandai "pemecahan masalah". Banyak, jika tidak sebagian besar, masalah dapat diselesaikan dengan menggunakan heuristik yang sama sekali tidak terkait dengan logika.
ElGringoGrande

1
Apakah Anda yakin Anda seorang programmer yang baik? :)
Russell

17

Saya pikir penting untuk melihat secara dekat mengapa Anda tidak menyukai matematika.

Ketidaksukaan terhadap disiplin akademis biasanya adalah sesuatu yang terjadi di sekolah, dan mungkin disebabkan oleh konflik dengan guru, kurangnya kepercayaan pada kemampuan Anda sendiri dalam suatu mata pelajaran, atau tekanan kelompok sebaya.

Pemrograman! = Matematika. Bahkan tidak "terasa" seperti matematika, bagi saya (dan saya menikmati matematika, meskipun tidak melakukannya dengan baik menjelang akhir studi formal saya di dalamnya). Banyak keterampilan yang mungkin Anda gunakan dalam matematika berguna, perlu bahkan dalam pemrograman, tetapi banyak programmer yang belajar sendiri untuk sebagian besar. Tidak menyukai matematika di sekolah sama sekali tidak berpengaruh pada kemampuan atau kenikmatan pemrograman Anda.


Saya melihat banyak pengajaran buruk seputar matematika. Inti dari itu adalah untuk mengubah masalah menjadi yang diketahui, lalu mengatakan "diselesaikan" tanpa kata tambahan. Tetapi dalam pengajaran itu mungkin mengharuskan Anda untuk terus maju dan menerapkan kembali bukti ke tingkat yang lebih rendah.
Balog Pal

16

Matematika dan pemrograman sangat erat hubungannya karena matematika adalah bahasa universal antara manusia dan komputer. Anda tidak perlu tahu banyak matematika untuk pemrograman tingkat tinggi karena banyak yang ada di belakang layar, tetapi itu akan membantu dalam pemahaman untuk banyak konsep pemrograman yang lebih maju. Jika Anda berencana untuk melakukan lebih banyak pemrograman tingkat rendah (sistem atau perangkat pemrograman), maka Anda perlu mengetahui lebih banyak matematika.


11
+1. Anda juga akan memerlukan matematika jika Anda ingin melakukan hal-hal "tingkat tinggi" seperti pemrosesan sinyal, pembelajaran mesin, penglihatan komputer, rendering 3D, simulasi fisika, animasi, geometri komputasi, kriptografi, dan mungkin banyak bidang lain yang tidak dapat saya pikirkan dengan benar sekarang.
nikie

2
@nikie: Ya, tapi itu matematika terapan . Perbedaan besar ^^
gablin

Ugh. Sebenarnya matematika bukanlah bahasa universal. Logikanya. Dan Logika adalah domain para filsuf. Bagaimanapun, seperti bagaimana komputer benar-benar bekerja, Anda lebih baik mengetahui teknik elektro / elektronik dan filosofi formal daripada matematika. Anda hanya perlu matematika jika Anda melakukan ilmu komputer, yang sebenarnya bukan pemrograman dalam konteks karier.
RibaldEddie

14

Yang bagus ? Sangat tidak mungkin. Sebagian besar pola desain setidaknya memiliki dasar dalam konsep matematika. Hal-hal yang penting untuk pemrograman, seperti variabel, loop, prosedur, dan objek, adalah analog dengan konsep-konsep dalam bidang matematika seperti aljabar, kalkulus, dan teori himpunan.

Pertimbangkan juga bahwa ilmu komputer adalah bagian dari matematika: algoritma dan logika formal, yang menjadi dasar semua pemrograman, pada dasarnya adalah matematika .

Jika Anda membenci matematika, Anda akan membenci pemrograman.


13

Hampir setiap orang menjawab: "apakah Anda perlu tahu matematika untuk menjadi programmer yang baik?" Jawaban yang benar untuk ini adalah: "Tidak, tidak juga, tetapi itu membantu," seperti yang telah dikatakan banyak orang.

Tetapi interpretasi saya atas pertanyaannya adalah "adakah korelasi kuat antara kemampuan matematika dan kemampuan pemrograman?" Jawaban yang benar untuk ini adalah: "Ya, ada." Jika Anda berjuang melalui aljabar, geometri, dan kalkulus, maka Anda mungkin tidak pandai menangani abstraksi dan / atau berpikir secara logis. Jika Anda buruk dalam matematika, Anda mungkin tidak akan pernah menjadi programmer yang hebat. (Bukannya kamu tidak boleh mencoba.)


11

Tergantung pada apa yang Anda pemrograman. Mesin permainan 3D, misalnya, akan sangat sulit (jika bukan tidak mungkin) dilakukan dengan tingkat koherensi apa pun tanpa pengetahuan tentang konsep matematika yang sesuai.


11

"Suka" dan "kompeten" adalah hal yang sama sekali berbeda - jadi selama Anda menghitung dengan benar maka saya tidak dapat melihat alasan mengapa Anda harus menyukai matematika.

Tetapi mari kita perjelas dengan jelas di sini - pemrograman memiliki dasar yang kuat dalam matematika dan cepat atau lambat hampir semua perkembangan non-sepele akan melibatkan perhitungan - Anda tidak dapat bersembunyi dari ini.

Pemrograman apa pun melibatkan logika (dasar dalam matematika), sebagian besar pemrograman modern mungkin melibatkan hal-hal (seperti SQL) yang melibatkan teori himpunan (bahkan jika itu tidak jelas) dan jika tidak maka mungkin itu kasus Anda ranah (seperti pemrograman game) yang bahkan secara eksplisit berbasis matematika (rendering - matematika, AI -> probabilitas dan keacakan - matematika ...) dan seterusnya.

Hasilnya di atas adalah bahwa Anda harus merasa nyaman dengan angka - Anda tentu harus mengerti mengapa "Ada 10 jenis orang di dunia, mereka yang mengerti biner dan mereka yang tidak" lucu. Tapi Anda mungkin dimaafkan "2 + 2 = 5 ... untuk nilai yang sangat besar dari 2".


+1, ini benar-benar menyedihkan; Saya benar-benar menertawakan lelucon itu.
Ben

10

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 akan memerlukan aljabar vektor dan kalkulus kecuali jika Anda melakukan tugas-tugas seperti grafik 3D atau simulasi fisika, misalnya), tetapi skill dasar yang mendasari identik, dan kurangnya kemampuan di satu domain akan dicocokkan dengan kurangnya kemampuan yang sesuai di domain lain.


9

Sejujurnya, saya adalah seorang siswa matematika yang mengerikan di sekolah. Aljabar benar-benar di luar saya pada saat itu, dan saya pikir saya tidak pernah mendapat yang lebih tinggi daripada D di dalamnya.

Namun, beberapa tahun kemudian, setelah bekerja sebagai pengembang perangkat lunak profesional, saya kembali ke perguruan tinggi dan mengambil kursus aljabar. Yang mengejutkan saya, itu adalah kelas termudah yang saya miliki, dan saya mendapat nilai A di dalamnya.

Sebenarnya, pemrograman mengajarkan saya aljabar, karena hampir semuanya hanyalah ekspresi aljabar.

Jadi tidak, Anda tidak perlu memulainya. Ini membantu, tetapi tidak diperlukan. Hal yang indah tentang pengembangan perangkat lunak sebagai sarana untuk mengajarkan matematika adalah bahwa kompiler, debugger, dan program pelaksana adalah cara yang bagus untuk memverifikasi bahwa Anda sudah mendapatkan jawaban yang benar. Dalam hal ini, debugging khususnya adalah keuntungan besar untuk belajar, karena Anda dapat menelusuri kode dan menonton setiap langkah evaluasi algoritma Anda.


Saya kembali ke sekolah setelah 10 tahun mengembangkan perangkat lunak dan saya mengalami hal yang sama. Saya menemukan Kalkulus dan Statistik jauh lebih mudah karena saya dapat menghubungkan sebagian besar konsep dengan beberapa fungsi yang telah saya tulis selama ini. Saya marah ketika saya berpikir tentang diagram Venn tidak dikenal ketika saya belajar sendiri SQL bergabung. Ini seperti selingkuh.
Heath Lilley

7

Ini agak tergantung pada apa yang sebenarnya Anda lakukan, meskipun pasti tidak ada salahnya.

Misalnya, seseorang yang mengambil jurusan Ilmu Komputer harus melalui banyak matematika untuk mendapatkan gelar mereka. CS umumnya banyak berfokus pada algoritma dan kebenarannya, dibuktikan melalui bukti gaya matematika tingkat tinggi. Banyak program CS Universitie yang begitu dekat dengan program matematika mereka sehingga jurusan ganda hanya berjarak beberapa mata kuliah saja. Bahkan sebagai jurusan Rekayasa Perangkat Lunak, saya sendiri, hanya 2 mata kuliah dari jurusan Matematika.

Namun, yang dikatakan, banyak bukti, struktur data, metode pencarian, dan hal-hal kebenaran algoritma yang saya pelajari belum benar-benar digunakan secara langsung sejak saya selesai sekolah. Tetapi akan sulit bagi saya untuk mengatakan bahwa itu setidaknya tidak memberi saya fondasi yang baik dan pemahaman yang lebih baik tentang apa yang saya lakukan pada level rendah.

Karena tidak peduli bagaimana Anda melihatnya, pada level terendah, semua yang Anda lakukan bermuara pada matematika.


7

Bisakah Anda menjadi pengembang perangkat lunak yang baik tanpa matematika? Ya saya pikir begitu. Bisakah Anda menjadi semacam programmer heroik yang sering dibicarakan orang? Saya pikir tidak.

Masalahnya adalah, sebagian besar, jika tidak semua, programmer heroik (pikirkan Dennis Ritchie), memiliki latar belakang ilmu komputer atau matematika. Untuk menjadi programmer yang benar-benar hebat, Anda perlu memahami algoritma pada tingkat yang lebih dari sekadar dangkal, yang berarti Anda terpaksa mempelajari ilmu komputer formal. Dan ilmu komputer hanyalah matematika terapan.

Demikian pula, pemahaman tentang kalkulus lambda akan sangat berharga bagi arsitek OS atau perancang bahasa.


7

Saya telah melihat topik ini diperdebatkan berulang-ulang. Saya telah bekerja dengan orang-orang yang memiliki gelar dalam matematika yang mengira mereka bisa progam dan dalam satu atau dua tahun berganti karier. Salah satu programmer terbaik yang pernah saya senangi bekerja adalah memiliki gelar Ph.D di bidang Biokimia dan tidak pernah mengambil kelas pemrograman / CS formal di sekolah tetapi belajar sendiri dan memulai perusahaan perangkat lunak yang sukses!

Pada akhirnya, apa yang membuat programmer yang baik dan hebat adalah seseorang yang mampu memahami logika, alur kerja, dapat belajar dengan contoh dan mau meneliti untuk solusi. Juga, Anda HARUS BELAJAR BISNIS untuk aplikasi Anda. Saya benci programmer yang pround mereka tidak mengerti akuntansi, belum menulis aplikasi akun. Mereka selalu membuat asumsi yang salah dan benar-benar memperlambat perkembangan.

Anda akan menemukan, tidak peduli sekolah apa yang Anda tuju, Anda akan belajar lebih banyak dalam satu tahun di luar sekolah daripada yang Anda lakukan dalam 4 tahun sekolah. Sekolah mengajarkan Anda cara belajar dengan keterampilan dasar - tetapi pengalaman dunia nyata jauh lebih berharga dari waktu ke waktu.

Pengalaman adalah guru terbaik dan ketika Anda harus menerapkan matematika dalam pengembangan perangkat lunak, selama Anda belajar bisnis - Anda akan baik-baik saja. Juga, ingat, seperti yang dikatakan oleh posting sebelumnya, kecuali jika Anda mencoba untuk bekerja pada mesin grafis 3D atau sistem koordinat grafis seperti aplikasi GIS, matematika yang Anda pelajari hingga sekolah menengah adalah semua yang benar-benar Anda butuhkan.

Saya telah bekerja pada sistem Akuntansi dan Penagihan - dan saya tidak pernah harus mencari Log (x), SIN, COS, dll untuk menangani buku besar atau mengizinkan entri data. Aging Journal bukan "matematika tinggi" tetapi penting untuk mengevaluasi masalah AP.

Kalau dipikir-pikir, saya belum pernah bertemu akuntan dengan kalkulator ilmiah di meja mereka!


5

Jawaban singkatnya adalah tidak. Saya pikir ini sedikit mitos tetapi dipropagasi karena masalah matematika biasanya cocok untuk diselesaikan oleh komputer.

Jadi di universitas, orang akan mendapatkan masalah matematika yang perlu mereka selesaikan dalam mata pelajaran compsci tetapi yang biasanya Anda temukan adalah bahwa matematika sebenarnya lebih sulit untuk dipecahkan daripada kode yang diperlukan untuk mengimplementasikan solusi.

Setelah Anda masuk ke dunia nyata, Anda akan semakin menemukan bahwa masalahnya sebagian besar diselesaikan untuk Anda, tugas Anda hanyalah mengimplementasikannya dalam kode.


5

Anda harus belajar matematika, atau membuat matematika sendiri. Bagaimanapun, penting untuk menjadi baik dalam beberapa bentuk atau lainnya.

Selama Anda dapat bekerja dengan nilai-nilai dan memahami apa yang mereka lakukan, mengapa dan apa yang dapat Anda membuat mereka lakukan, maka matematika tradisional tidak selalu diperlukan. Kadang-kadang bahkan menghalangi.

Ada cara-cara alternatif untuk memvisualisasikan nilai byte selain angka, tetapi mereka pasti yang paling dipikirkan setelah metode. Itu akan layak untuk menulis sebuah program yang berpikir semua nilai sebagai warna misalnya.

Pemrograman saat ini mendapatkan banyak nilainya dari kemampuan untuk mewakili 1 dan 0 sebagai jenis data yang berbeda. Meskipun sebenarnya angka 1 dan 0 itu sama sekali bukan angka, tetapi perubahan panjang gelombang listrik, matematika tidak banyak berperan sebagai fisika, ... namun , ... sangat penting dalam memahami banyak hal tentang apa programmer lain katakan dan kode.

Masih mungkin untuk menjadi programmer yang baik tanpa matematika, namun sulit.


1
Memikirkan semua nilai sebagai warna hampir masuk akal. Ketika Anda pergi terlalu jauh dari satu ujung spektrum, Anda berakhir di ujung yang berlawanan ...
Maks.

Derajat (seperti pada 0 - 360, kecuali 0 - 256) terkadang juga membantu =) Anda tidak benar-benar perlu berpikir dalam arti numerik untuk warna atau derajat sebanyak seberapa 'penuh' nilainya.
Garet Claborn

5

Saya baru saja menyelesaikan kursus intro untuk matematika diskrit, dan saya menemukan bahwa saya sudah tahu hampir semua hal tentang logika predikat berkat pemrograman; semua yang baru adalah sintaksis - itu pada dasarnya hanya bekerja dengan boolean.

Singkatnya: mungkin Anda tidak harus belajar matematika secara eksplisit , tetapi hanya dengan menjadi seorang programmer Anda mungkin telah belajar matematika tanpa disadari. Artinya, dengan menjadi "programmer yang baik", Anda juga benar-benar menjadi ahli matematika (sampai batas tertentu).

The Curry-Howard Correspondence menggambarkan apa yang saya maksud: pada dasarnya, ia menyatakan bahwa bukti matematika dan program komputer tertentu "isomorfik", yaitu, mereka adalah cara yang berbeda dari menulis hal yang sama. Tentu saja, ini sebenarnya lebih kompleks dari ini, tapi saya bukan ahli matematika, jadi ini adalah penjelasan terbaik yang bisa saya berikan. Semoga itu tidak terlalu jauh dari sasaran.

Singkatnya, tidak hanya banyak bidang dalam CS dan pemrograman yang melibatkan banyak matematika, tetapi bahkan gagasan pemrograman dasar (misalnya boolean) pada dasarnya adalah matematika yang menyamar.


4

Ini adalah pertanyaan yang sangat sulit dijawab dan kemungkinan akan menimbulkan banyak perdebatan.

Salah satu alasan mengapa pertanyaan ini begitu sulit adalah karena sebagian tergantung pada jenis pekerjaan yang Anda lakukan. Tidak ada banyak matematika yang terlibat dengan sebagian besar aplikasi bisnis, sehingga Anda dapat bertahan dengan pemahaman yang kuat tentang aljabar dan matematika bisnis. Namun, aplikasi yang lebih maju membutuhkan matematika yang lebih maju dan Anda mulai membutuhkan pemahaman yang kuat tentang kalkulus, aljabar linier, dan sejenisnya.

Namun, itu hanya salah satu bagian dari persamaan dalam bahwa Anda masih memerlukan gelar matematika untuk praktik pemrograman itu sendiri. Tak perlu dikatakan bahwa Anda harus merasa nyaman dengan logika untuk hanya dapat menulis program dasar dan juga aljabar dasar. Melihat sedikit lebih dari sekedar mendapatkan program dasar bekerja meskipun Anda harus memiliki pemahaman tentang aspek-aspek tertentu dari matematika diskrit untuk dapat menentukan apa yang membuat algoritma yang baik untuk digunakan untuk masalah yang diberikan.

Untuk kembali ke inti pertanyaan. Saya pribadi tidak berpikir Anda harus menjadi ahli matematika untuk menjadi programmer yang baik; Namun, saya pikir Anda perlu nyaman dengan matematika untuk bisa menjadi programmer generalis yang baik.


4

Iya tentu saja.

Bahkan menjalankan program bisnis pabrik memerlukan beberapa keterampilan dalam matematika.

Menjalankan program bisnis pabrik memerlukan keterampilan basis data. Menjadi pemrogram basis data yang baik membutuhkan pemahaman tentang cara kerja basis data, dan algoritma apa yang digunakan oleh prosesor kueri saat menerjemahkan permintaan Anda. Tanpa pemahaman tentang batas dan turunannya (atau bahkan pemahaman dasar bahwa garis y = x memotong garis y = x ^ 2 dua kali), tidak layak untuk secara akurat membandingkan rencana kueri gabungan hash-match batin dengan gabungan loop bersarang rencana permintaan.

Juga, seorang programmer yang baik dapat bekerja di hampir semua domain, asalkan mereka belajar sedikit: game, simulasi, pengembangan tertanam, kompiler, sistem operasi, barang-barang web, database, dll. Mampu melakukan semua hal (atau lebih akurat untuk dapat dengan cepat belajar bagaimana melakukan semua hal itu) membutuhkan jumlah latar belakang matematika yang layak.

Saya akan mengatakan bahwa seseorang seharusnya memiliki pengalaman pada suatu saat dengan hal berikut:

  1. 3 Semester Calc
  2. Persamaan
  3. Aljabar linier
  4. Aljabar modern
  5. Probabilitas dasar, penghitungan, dan statistik

4

Matematika lebih dari sekadar rumus. Memahami beberapa prinsip matematika tentang teori himpunan sangat berguna untuk memahami konsep kompleks pada sistem tipe, seperti halnya memahami kompleksitas merupakan hal terpenting dalam penggunaan struktur data yang efisien.

Teori grafik juga sangat berguna, karena banyak masalah pemrograman dapat dimodelkan dengan grafik. Saya sangat heran, ketika saya sedang mengembangkan aplikasi bisnis, untuk mengetahui bahwa teorema jalur terpendek memberikan solusi yang elegan untuk masalah berduri yang saya miliki!


4

Saya selalu menganggap pemrograman untuk menjadi apa-apa tapi matematika.

Itu tidak terlihat seperti aljabar sekolah menengah.


4

Matematika adalah ruang pemrograman sebelumnya.

Mampu bekerja dengan lapisan demi lapisan abstraksi, model, "obyektifikasi" fungsi, transformasi dan konsep temporal, matematika adalah tempat pelatihan yang sempurna untuk semua itu.

Dimungkinkan untuk mengembangkan pola pikir yang tepat untuk pemrograman tanpa matematika tetapi itu jauh lebih sulit.

Namun, di samping bidang spesialis, hanya memahami matematika itu penting, mengetahui nama segalanya dan bagaimana teorema yang diberikan dapat dibuktikan tidak. Jadi, bahkan jika Anda memiliki nilai bagus dalam matematika karena Anda mempelajari semuanya tanpa benar-benar memahami, Anda masih akan berjuang dengan pemrograman.


4

Pengetahuan matematika baik untuk beberapa aplikasi (seperti game, kecerdasan buatan, grafik komputer, dll), tetapi matematika mengajarkan Anda sesuatu yang lebih dari sekadar rumus atau persamaan kompleks.

Belajar matematika sama seperti belajar bahasa pemrograman baru. Padahal, pemrograman matematika terapan. Ketika Anda belajar bahasa baru, Anda belajar banyak hal yang menjadikan Anda seorang programmer yang lebih baik. Ini tidak berbeda dengan matematika, tetapi jika Anda benar-benar menguasai matematika, Anda akan menjadi programmer yang lebih baik selamanya, bahkan Anda tidak menggunakan matematika lanjutan dalam pekerjaan Anda.

Alasannya sederhana: matematika mengajarkan Anda untuk melihat dunia dengan mata yang lain. Ini mengajarkan Anda untuk memecahkan masalah dengan berbagai pendekatan tanpa harus pemrograman. Cara berpikir yang baru ini tentu menuntun Anda ke cara yang lebih baik untuk melakukan pekerjaan Anda.

Pemrograman adalah seni. Matematika adalah seni. Jika Anda menggabungkan keduanya, Anda akan menjadi artis yang lebih baik.


Pemrograman pada dasarnya hanya logika yang diterapkan, dan pada kenyataannya matematika juga hanya logika yang diterapkan.
RibaldEddie

3

Tidak.

Sama seperti kebanyakan disiplin ilmu, memiliki pemahaman yang baik tentang konsep matematika akan sangat membantu, terutama ketika mengevaluasi hal-hal seperti efisiensi. Tetapi untuk sebagian besar tugas pemrograman, kemampuan matematika Anda hanya relevan jika masalah yang Anda selesaikan terkait dengan matematika.

Komputer sangat baik dalam melakukan matematika, sehingga masuk akal bahwa komputer awal digunakan secara luas untuk melakukan 'pekerjaan kasar' yang terkait dengan banyak pekerjaan matematika yang rumit. Banyak software masih tidak memecahkan masalah matematika yang kompleks, dalam hal bahwa menjadi pintar dalam bidang matematika akan membantu Anda menulis program yang lebih baik, tapi itu tidak apa yang membuat Anda seorang programmer yang baik.


3

Biasanya, tidak dalam arti bahwa Anda perlu tahu, katakanlah, kalkulus atau persamaan trigonometri untuk melakukan sebagian besar pekerjaan. Jika Anda melakukan pemrograman grafis / permainan berat, maka ya. Sebuah hack matematika yang terkenal untuk Quake adalah contoh yang baik dari ini. Namun, pemikiran bahwa Anda harus masuk ketika berhadapan dengan matematika tingkat tinggi tentu berlaku untuk pemrograman; dengan pemrograman, Anda mengembangkan struktur logika Anda sendiri, fungsi Anda sendiri, "bukti" Anda sendiri.

Satu-satunya waktu saya menjalankan matematika dalam pekerjaan saya (alur kerja perusahaan internal dan aplikasi) adalah ketika saya melakukan beberapa aplikasi pelaporan yang membutuhkan pengetahuan tentang statistik, tetapi itu hanya karena itu langsung berlaku untuk persyaratan.


3

Saya akan mengatakan belum tentu. Disiplin pemrograman tertentu (crypto, grafik, mesin fisika dll) pasti akan memiliki keuntungan yang jelas untuk kemiringan matematis, tapi saya tidak berpikir pemahaman yang baik tentang persamaan diferensial akan sangat berguna untuk pemrograman web misalnya.

Logika Boolean mungkin merupakan persyaratan untuk menjadi programmer yang baik, tetapi tidak akan mengejutkan saya jika banyak orang yang tidak mencapai nilai bagus dalam matematika sekolah menengah ternyata pandai pemrograman.


3

Saya akan mengatakan Anda pasti tidak perlu pandai matematika untuk menjadi programmer yang baik.

Pekerjaan pertama saya sebagai seorang programmer adalah melakukan grafik 3D untuk B-52 dan perencanaan misi Cruise Missile. Itu adalah aplikasi intensif matematika, tetapi saya benar-benar hanya membutuhkan akses ke orang-orang yang baik / hebat dalam matematika. Saya tidak perlu tahu rumus untuk menghitung jarak lingkaran besar antara dua titik. Saya memang perlu tahu cara mengonversi rumus agar berfungsi dalam bahasa pemrograman. Sama dengan simulasi penerbangan. Boeing melakukan semua perhitungan yang harus kami terapkan.

Pengalaman itu juga membantu saya memahami siapa yang akan menjadi programmer yang baik dan siapa yang tidak. Pekerjaan itu membuat pilot dan navigator mengambil tur tugas sebagai programmer dan untuk membantu programmer memahami kebutuhan misi. Anda biasanya bisa mengetahui dalam beberapa minggu apa pilot dan navigator akan bagus dalam hal itu. Jurusan Matematika biasanya langsung memprogram.

Jadi saya akan mengatakan menjadi pandai matematika membuat Anda cenderung pandai pemrograman, tapi saya tahu banyak programmer yang tidak begitu baik dalam matematika.


3

Saya tidak suka matematika dan saya selalu mendapat nilai matematika rendah. Saya tidak ingin mengatakan bahwa saya seorang programmer yang baik, tetapi saya berada di industri perangkat lunak selama 10 tahun dengan sukses besar.


1
Saya benar-benar berhubungan dengan nilai matematika Anda. Saya benar-benar merasa saya bukan Programmer yang buruk dan tidak terlalu buruk di Matematika, tetapi untuk beberapa alasan saya sepertinya tidak bisa menembus nilai "Rata-rata" dalam kursus Matematika Saya, tidak peduli seberapa keras saya berusaha.
Bryan Harrington

@Bryan, saya bisa mengaitkannya dengan
jasonco

3

Apakah mungkin bagi orang yang tidak suka matematika untuk menjadi programmer yang baik?

Tidak, tidak-tidak, tidak, ya dan tidak!

Tidak, karena sering kali Anda membutuhkannya.

(! (a | (! (b && c) || d) && (! e)))

Mengapa itu tidak berhasil?

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

dapatkah itu ditulis ulang dengan cara yang lebih abstrak?

Apakah 968 ms lebih atau kurang dari 0,7 detik? Berapa MB yang Anda butuhkan, berapa Ghz yang dimiliki mesin, akankah satu byte cukup - matematika adalah bagian dari pekerjaan sehari-hari. Terkadang matematika eksplisit dan lebih tinggi.

Secara implisit matematika selalu lebih rendah.

Matematika adalah bidang yang luas, dari menghitung, ke matriks, hingga geometri, logika, statistik, teori kategori, teori grafik. Jadi, jika Anda yakin Anda pemrograman tanpa menggunakan matematika - mungkin Anda salah.

Jika Anda melihat masalah pada halaman Project Euler , Anda akan menemukan teka-teki, di mana saya tidak punya ide, bagaimana matematika digunakan untuk menyelesaikannya. (Bukan berarti saya bisa menyelesaikannya tanpa matematika.) Perhatikan bahwa ukuran masalah biasanya sebesar itu, sehingga Anda tidak dapat menyelesaikannya dengan kekerasan.

Namun - karena saya tidak dapat menyelesaikan banyak masalah (sekitar 2/3 saat ini), apakah itu berarti saya tidak suka matematika?

Jika Anda tidak belajar matematika, Anda mungkin tidak akan tahu, di mana Anda dapat menemukan matematika kehidupan sehari-hari Anda, termasuk pemrograman.

Bahkan jika Anda hanya mengkhususkan diri dalam memindahkan komponen GUI di layar agar terlihat bagus, Anda melakukan matematika dengan cara tertentu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.