Apa hubungannya matematika dengan pemrograman? [Tutup]


89

Saya baru saja memulai diploma dalam pengembangan perangkat lunak. Saat ini kami sedang memulai dengan Java dasar dan semacamnya (jadi langsung dari bawah Anda mungkin berkata) - yang baik-baik saja, saya tidak memiliki pengalaman pemrograman selain mengetahui bagaimana melakukan "Hello World" di Jawa.

Saya terus mendengar bahwa matematika berkaitan dengan pengkodean, tetapi bagaimana bisa demikian? Contoh umum apa yang akan menunjukkan bagaimana matematika dan pemrograman berjalan bersama, atau saling bergantung?

Saya minta maaf atas pertanyaan saya tidak jelas, saya baru mulai mendapatkan gambaran kasar tentang dunia yang saya tuju sebagai siswa kode monyet ...


49
Pemrograman adalah matematika. en.wikipedia.org/wiki/Discrete_mathematics
SK-logic

25
@Dave, itu sebabnya saya memberi tautan dalam komentar, bukan sebagai jawaban.
SK-logic

7
@ Kegagalan, bahkan lebih dari itu - struktur bahasa dan logika juga merupakan sub-domain matematika. Pemrograman tidak lain adalah matematika terapan.
SK-logic

19
Pada catatan yang tidak terkait, dimulai dengan Java tidak "benar dari bawah".
Matt H

5
@ CharlesE.Grant, banyak siswa matematika melakukan hal yang sama (dan masih lulus tes mereka).
SK-logic

Jawaban:


137

Pertama: Saya seorang ahli matematika - seorang profesional (karena saya dibayar untuk mengerjakan matematika). Saya bukan seorang programmer. Saya memang melakukan beberapa pemrograman, tetapi sangat pasti dari varietas Cargo Cult (lihat komentar pertama untuk https://tex.stackexchange.com/q/451/86 dan tanggapan saya) dan tidak ada hal seperti itu yang biasanya membawa saya ke ini situs (memang, saya mendaftar di sini untuk mengirim jawaban ini setelah melihat tautannya di ruang obrolan TeX).

Ringkasan jawaban saya adalah: Matematika adalah Pemrograman .

Saya baru-baru ini harus mengajar kursus matematika untuk sekelompok siswa non-matematika. Mereka adalah bagian pemrograman. Saya pikir ini fantastis! Akhirnya, saya akan bisa mengajar matematika kepada orang-orang yang sudah memahami ide-ide dasar dan yang sudah memiliki perangkat dasar untuk melakukan matematika. Saya sangat kecewa ketika saya bertanya berapa banyak dari mereka yang benar-benar menulis sebuah program dan mendapat jawaban antara 0 dan 1.

Sebelum saya melanjutkan, saya harus mengklarifikasi beberapa hal. Ada bidang matematika yang berkaitan langsung dengan pemrograman dan berkaitan dengan mengevaluasi algoritma dan mengklasifikasikan bahasa dan sejenisnya. Saya tidak berbicara tentang itu. Ada juga program yang mencoba menerjemahkan semua matematika ke dalam bahasa formal yang dapat dievaluasi oleh komputer. Ini sedikit lebih dekat dengan apa yang saya bicarakan, tetapi meskipun demikian untuk fokus pada hal itu akan kehilangan bagian utama dari apa yang saya coba katakan. Matematika yang saya lakukan dan pemrograman yang saya lakukan hampir tidak ada hubungannya dengan topik. Koneksi di antara mereka ada pada level yang berbeda.

Di mana saya ingin memulai adalah dengan mengomentari pertanyaan utama:

Jika itu melakukan matematika, maka semua aktivitas manusia adalah bentuk matematika. Jika demikian, maka kata matematika tidak memiliki arti yang bermanfaat, karena kata itu tidak dapat digunakan untuk membedakan satu aktivitas dari aktivitas lainnya.

Ya, itu mengerjakan matematika. Tetapi "matematika" masih merupakan kata yang berguna karena, seperti lagu itu mengatakan, "Itu bukan apa yang Anda lakukan, itu adalah cara Anda melakukannya.". Saya akan mengatakan bahwa saya melakukan matematika ketika saya mendekati sesuatu secara matematis . Kadang-kadang, itu adalah "hard core" matematika: merumuskan definisi, membuktikan teorema. Terkadang tidak. Terkadang, ia menulis program kecil yang konyol sehingga anak-anak saya dapat mempelajari kata-kata ejaan mereka.

Inilah yang matematika bantu ketika saya memprogram:

  1. Abstraksi Ini mungkin yang keterampilan dipindahtangankan yang paling penting dari matematika. Maksud saya, ini adalah kemampuan untuk menghilangkan semua hal yang tidak perlu dan fokus pada properti penting.

  2. Perspektif Jika saya hanya dapat memilih satu hal yang harus dipelajari oleh semua siswa saya, ini adalah itu: Kemampuan untuk mengubah sudut pandang yang sesuai dengan masalah. Kami biasanya memperlakukan ini dalam aljabar linier dengan formula perubahan-basis (yang mengarah ke matriks yang mengerikan dan komplikasi yang mengerikan), tetapi jauh lebih berlaku dari itu. Pada intinya, itu adalah gagasan bahwa hanya karena sesuatu telah disajikan kepada Anda dalam satu cara, itu tidak harus menjadi cara Anda bekerja dengannya. Ini memisahkan pandangan orang tentang hal itu sendiri dari cara itu telah disajikan. Ini bisa sangat praktis: ini semua tentang membuat sesuatu yang bermanfaat atau efisien. Jika saya memiliki daftar vektor dan lebih efisien untuk menyimpannya sebagai daftar koordinat-x dan daftar koordinat-y, biarlah .

  3. Bentuk versus Fungsi Memimpin dari atas; jika hal dapat disajikan dalam berbagai cara yang berbeda maka tidak lagi adil untuk mengatakan bahwa satu presentasi tertentu yang hal. Untuk salah mengutip lagu itu lagi: "Bukan apa yang Anda lakukan , apa yang Anda lakukan " yang penting.

Saya bisa terus, tetapi mereka adalah orang-orang yang muncul dalam pikiran.

Sekarang, mungkin ada banyak reaksi (negatif) terhadap apa yang saya tulis sejauh ini. Satu akan menjadi "Itu bukan matematika, itu hanya akal sehat." (atau akal sehat) yang saya maksud dengan komentar saya di atas setuju dengan sentimen bahwa "semua aktivitas manusia adalah bentuk matematika". Yang lain adalah "Itu bukan jenis matematika yang dimaksud dalam pertanyaan.". Ini hampir pasti benar dan di sini saya sebenarnya memiliki simpati lebih banyak dengan orang yang mengatakan "Setidaknya saya belum menyentuh matematika selama 10 tahun,". Dia salah, tentu saja, mereka telah melakukan matematika selama 10 tahun karena setiap kali mereka menulis sebuah program mereka melakukan matematika . Mereka hanya tidak menyadarinya.

Saya benar-benar menggunakan beberapa "matematika nyata" dalam program saya. Baru-baru ini saya membuat kode penjelajah bentuk 3D yang menyenangkan yang melibatkan penggunaan beberapa matematika untuk mengetahui proyeksi dan transformasi lain yang harus saya terapkan pada data saya. Saya sedikit geli mendapati diri saya benar-benar mengkode angka empat! Tapi tentu saja, matematika yang terlibat itu sepele dibandingkan dengan matematika yang saya lakukan ketika saya sedang bekerja. Itu barang "belakang amplop". Jenis matematika seperti itu, maka saya setuju dengan sentimen yang Anda ambil ketika Anda membutuhkannya, dan jika Anda memerlukan sesuatu yang lebih rumit daripada yang dapat Anda temukan di Wikipedia maka Anda menemukan ahli matematika sungguhan untuk melakukannya untuk Anda. Namun, agar Anda dapat mengambilnya saat Anda membutuhkannya, maka Anda harus mempelajari sesuatu. Benda itu mungkin bukan apa pun yang pernah Anda gunakan, tetapi setelah mengetahui bahwa sesuatu membuatnya lebih mudah untuk mengambil apa yang sebenarnya Anda gunakan di kemudian hari. Jadi ini adalah di mana saya tidak setuju dengan Coder: Anda perlu belajar beberapa matematika jika Anda pernah akan menggunakan setiap matematika dan Anda perlu belajar itu dari sisi matematika (yang tidak berarti membuktikan teorema, by the way).

Dan akhirnya ke "Matematika Pemrograman". Anda dapat mempelajari semua hal ini dari menjadi programmer yang baik. Dan jika Anda telah mempelajari hal-hal ini, Anda akan menemukan matematika jauh lebih mudah karena Anda akan mengerti bahwa ketika kita berbicara tentang vektor dalam ruang vektor maka itu hanya sebuah instance dari kelas Vectoryang berarti bahwa kita dapat melakukan semua hal yang Vectordilakukan untuk contoh itu: tambahkan, kurangi, skala, dan sebagainya. Itu sebabnya saya ingin mengajar matematika kepada programmer. Tapi, berbicara sebagai ahli matematika, saya akan mengatakan itu duluini, "Abstraksi", lebih mudah dipelajari dalam matematika daripada dalam pemrograman karena matematika adalah pengejaran abstraksi. Setiap kali kita melihat beberapa perilaku, pelatihan kita selalu bertanya "Ada apa dengan hal itu yang membuatnya berperilaku seperti itu? Bagaimana jika saya mengambil hal lain yang serupa, akankah ia berperilaku dengan cara yang sama? Berapa banyak hal itu? Apakah aku harus kalah agar berhenti berperilaku seperti itu? " (Membawa ini ke ekstrem mengarah ke "matematika kelabang" - mencari istilah). Tetapi kita tidak melakukan ini dengan (hanya) objek "dunia nyata" (apa pun itu), kita melakukan ini dengan hal-hal yang telah diabstraksikan.

Ini sudah cukup lama, jadi izinkan saya menutup dengan salah satu lelucon matematika klasik:

Seorang ahli matematika dan fisikawan menghadiri seminar tentang beberapa model baru yang melibatkan ruang 24 dimensi. Setelah itu, mereka mendiskusikannya dan fisikawan itu berkata: "Itu sangat sulit. Maksud saya, bagaimana orang memvisualisasikan ruang 24 dimensi?" di mana ahli matematika menjawab: "Oh, itu mudah. ​​Hanya memvisualisasikan ruang n-dimensi dan kemudian mengatur n = 24.".


Ditambahkan 2012-03-2

Ada beberapa komentar tentang jawaban ini yang mengekspresikan berbagai pandangan. Ini sekarang telah dihapus oleh moderator dengan pengertian bahwa saya akan mencoba memasukkannya (atau meresponsnya) dalam jawaban saya.

Namun, saya tidak yakin bisa. Membaca komentar-komentar itu dan apa yang ada di halaman ini, saya hanya bisa sampai pada kesimpulan bahwa ada kesalahpahaman besar tentang apa sebenarnya matematika itu. Selain itu, saya tidak merasa cukup kompeten untuk menjelaskannya. Untungnya, seseorang telah terhubung dengan Ratapan Lockhart, jadi saya akan menunda penjelasannya. Sementara saya mungkin meletakkannya secara berbeda (ketika saya tumbuh di lingkungan ilmiah, saya akan lebih menekankan pada sifat eksperimental matematika), saya tidak berpikir saya bisa membuatnya lebih baik .

Saya masih berpikir saya bisa menambahkan sesuatu. Selain kesalahpahaman tentang apa matematika itu , ada juga kesalahpahaman tentang apa artinya "mengerjakan matematika". Saya melihat dua sikap yang hampir saling bertolak belakang:

  1. Matematika adalah tentang persamaan dan rumus. Jadi tidak perlu mempelajarinya karena Wikipedia ada (ini hampir merupakan kebalikan dari tantangan apokrif Euler untuk Diderot ).

  2. Matematika adalah tentang teorema dan definisi. Jadi tidak perlu mempelajarinya karena program tidak pernah membuktikan apa-apa (yaitu tentang kekeliruan selengkap ... masukkan kekeliruan favorit di sini).

Sementara dua sikap saling bertentangan, mereka berakhir di tempat yang sama: tidak ada gunanya seorang programmer belajar matematika - dan yang paling pasti bukan dari ahli matematika! Lagipula, apa yang mereka ketahui tentang sesuatu? Apa pun yang benar-benar perlu diketahui oleh seorang programmer dapat ditemukan di Wikipedia, atau dipangkas orang lain.

Di atas, saya menggambarkan diri saya sebagai Programer Cargo Cult. Saya yakin sebagian besar dari Anda memiliki tawa pribadi untuk diri sendiri dan berpikir, "Ah ya, saya yakin saya tahu seperti apa program Anda saat itu.". Anda mungkin merasa sedikit sombong dan superior (meskipun saya yakin Anda merasa buruk tentang merasa sombong dan superior).

Apa yang saya jelaskan di atas adalah Cargo Cult Mathematics.

Jadi ketika saya mengatakan bahwa Anda harus belajar sedikit matematika untuk memahami cara kerja matematika, saya mengatakannya untuk alasan yang persis sama seperti yang Anda mungkin jika Anda melihat sedikit kode yang saya tulis: "Betapa jauh lebih mudah hidup Anda akan terjadi jika Anda menghentikan kode cut-and-paste dari StackOverflow dan belajar sedikit tentang bagaimana melakukannya dengan benar. "

Namun, hal yang paling penting adalah Anda harus mempelajarinya dari ahli matematika. Kenapa begitu? Inilah analogi. Bahasa yang paling saya kuasai adalah TeX. (Mengatakan itu semua, sungguh!). Sekarang, misalkan saya ingin belajar lebih banyak tentang TeX dan kebetulan Don Knuth ada di kota dan telah menawarkan untuk memberikan beberapa tutorial tentang TeX. Atau saya bisa membacanya di Wikipedia. Atau mungkin itu Perl dan Larry Wall, atau C # (apakah itu yang benar?) Dan Jon Skeet. Mungkin saja orang-orang ini bukan guru terbaik , tetapi mereka yakin menebusnya dalam jumlah yang mereka tahu!

Dan itulah ahli matematika . Kami adalah orang-orang yang menulis bahasa sebenarnya, yang kemudian menulis perpustakaan yang Anda gunakan. Tentu saja, Anda tidak perlu tahu cara membuktikan teorema - Anda tidak akan menulis perpustakaan! Tetapi jika Anda tahu sedikit tentang bagaimana kami berpikir, maka itu mungkin membantu Anda memahami mengapa kami menulis perpustakaan seperti yang kami lakukan, dan jika Anda mengerti bahwa itu mungkin membantu Anda memanfaatkannya dengan lebih baik.

Ada jalan tengah antara mencari persamaan di Wikipedia dan membuktikan dugaan Poincaré, sama seperti - untuk merujuk pada ratapan Lockhart - ada jalan tengah antara "Saya tidak benar-benar tahu banyak tentang seni, tetapi saya tahu apa yang saya sukai" dan menjadi Monet, dan di antara "Di mana kunci 'APA SAJA'?" dan menjadi Don Knuth. Jika Anda masih di universitas maka Anda memiliki kesempatan luar biasa untuk belajar dari orang-orang yang ahli di bidang mereka dan yang - karena alasan tertentu - bersedia meluangkan waktu untuk menjelaskannya kepada Anda.


Poin lain yang ingin saya kembangkan sedikit adalah mengapa sebagai seorang programmer Anda tidak perlu takut belajar sedikit lebih banyak matematika. Ini bukan Koneksi mendalam, atau kegunaannya. Itu kemampuan Anda untuk memprogram komputer dapat secara langsung membantu Anda belajar matematika. Saya hanya ingin menyebutkan beberapa.

  1. Memahami variabel. Begitu banyak orang menjadi bingung oleh pernyataan sederhana seperti "Biarkan n menjadi bilangan alami ...". Atau "Biarkan epsilon> 0". Ada tempat-tempat dalam matematika di mana penting untuk mengingat ruang lingkup variabel. Ini semua adalah hal biasa dalam pemrograman. Belajarlah menerjemahkan pernyataan matematika ke dalam suatu program dan Anda akan lebih mudah melacak apa yang terjadi.

  2. Sifat pembuktian. Jika Anda pernah menulis ujian, atau menulis program untuk digunakan oleh orang lain, maka Anda memahami inti dari bukti. Ketika Anda melakukan itu, Anda harus tahu bahwa apa pun yang dimasukkan pengguna, Anda dapat mengatasinya (masukkan referensi xkcd wajib di sini). Itu semua buktinya! Sebuah demonstrasi bahwa apa pun yang dimasukkan "pengguna / alam semesta", pernyataan akan berlaku. Eksperimentalis akan bersandar pada "Jika itu bekerja dalam keadaan normal, itu benar" tetapi programmer tahu bahwa selalu ada anak itu yang akan mencoba Alt + G + Shift + ÅØÆ hanya untuk melihat apa yang terjadi.

  3. KERING. Maaf untuk memecahkan ini untuk Anda, tetapi kami menciptakannya, bukan Anda. Kita sudah "tidak mengulangi diri kita sendiri" selama ribuan tahun. Itu sebabnya saya memiliki salinan elemen Euclid di rak saya dan itu masih berguna .

Dan masih ada lagi. Jika saya tahu lebih banyak tentang pemrograman, saya akan menulis sebuah buku berjudul "Matematika untuk Pemrogram" di mana tujuannya bukan untuk mengajarkan "Matematika yang harus diketahui pemrogram" tetapi "matematika yang harus diketahui semua orang, tetapi dioptimalkan untuk pemrogram" . Tapi saya mungkin tidak akan pernah cukup tahu tentang pemrograman untuk menulisnya - kecuali seseorang menawarkan untuk berkolaborasi dengan saya!


Saya akan meninggalkannya di sana. Mungkin jika saya berpikir lebih, saya akan mengubah apa yang saya tulis; semoga saya akan menjelaskannya dengan lebih baik. Dalam waktu beberapa bulan saya bahkan mungkin tidak setuju dengan bagian-bagiannya. Jika ada yang ingin berdebat lebih lanjut, atau berkomentar sebaliknya, mungkin lebih baik tidak melakukannya di komentar di sini. Anda tahu di mana menemukan saya .


19
Ini adalah salah satu jawaban terbaik yang pernah saya baca di SE; BTW, ada adalah buku grand "Matematika untuk Programmer"; itu disebut Matematika Beton dan ditulis bersama oleh penulis TeX, Donald Knuth. Saya baru saja mendapat salinan, dan ini fantastis. Saya merasa seperti kebalikan Anda; Saya menjadi serius tentang pemrograman ketika saya menyadari bahwa cara terbaik (bagi saya) untuk memahami konsep-konsep di kelas matematika adalah dengan menulis sebuah program untuk melakukannya untuk saya. Tentu saja, kemudian saya ingin menggunakan program ini daripada melakukan perhitungan hafalan dengan tangan, dan guru matematika saya tidak suka.
Jason Lewis

Bung, 100 untuk itu.
Barry Brown

2
Terdaftar hanya untuk memperbaiki ini
leo

Persis. Anda tidak dapat memprogram dengan baik tanpa pemikiran analitis yang diajarkan matematika kepada Anda.
Fiasco Labs

1
Apakah ada buku yang bagus tentang matematika pemrograman (melihat pemrograman matematika)?
qed

27

Mereka tidak yang terkait erat. Untuk pemrograman, penting untuk mengetahui tentang matematika - terutama cabang-cabang yang berkaitan dengan, misalnya, kinerja algoritma, tetapi fakta sederhana adalah bahwa tidak ada cabang matematika yang akan memberi tahu Anda bahwa Singletons adalah ide yang sangat buruk, misalnya, atau kapan akan lebih memilih pewarisan daripada komposisi, atau apakah Anda benar-benar akan membutuhkan fleksibilitas itu, dan tidak mengulangi diri Anda sendiri, dan puluhan kebutuhan pemrograman inti lainnya.

Matematika mungkin dapat mengekspresikan apa yang program Anda lakukan, tetapi tentu saja tidak bisa memberi tahu Anda cara yang paling dapat dikelola, dapat dibaca manusia, dan layak untuk melakukannya.


6
1) Tidak ada yang salah dengan lajang per se, 2) teori informasi algoritmik, bahasa formal dan semantik denotasional secara langsung relevan dengan hal-hal sederhana yang sangat Anda khawatirkan untuk beberapa alasan (mereka tidak begitu penting untuk pemrograman secara umum).
SK-logic

19
pengalaman Anda harus agak terbatas saat itu. Lajang diperlukan dan tidak dapat dihindarkan, selama mereka merupakan bagian dari model domain. Dan bagaimana membangun model domain adalah masalah matematika, tidak lebih. Dan ya, mereka yang tidak mengerti teori bahasa formal memproduksi model yang mengerikan dan bahasa yang buruk.
SK-logic

10
@dave: bahayanya adalah bahwa siapa pun dapat membuat Anda menjauh dari posisi yang masuk akal dan beralasan dengan menyatakan yang sangat berbeda, tidak peduli seberapa bodohnya. Mengambil rata-rata bukanlah pengganti yang berguna untuk mengevaluasi argumen.
Michael Borgwardt

4
@ SK-logic: Mungkinkah kalian berdua hanya berbicara tentang pengertian yang berbeda tentang apa sebenarnya "Singleton"? Tampak bagi saya bahwa logika SK berbicara tentang ide abstrak untuk hanya memiliki satu instance dari entitas tertentu dalam suatu sistem, yang kadang-kadang tepat seperti yang diperlukan. Sayangnya konsep abstrak ini menjadi sangat dekat dengan detail implementasi yang sangat buruk karena memiliki metode pabrik statis publik karena buku GoF memberikannya sebagai contoh bagaimana Singleton dapat diakses.
Michael Borgwardt

5
Harap tidak lebih dari Topik diskusi ulang Singtons
mattnz

20

Matematika dan pemrograman terkait dalam dua cara.

Salah satunya adalah matematika dapat digunakan untuk alasan tentang program komputer. Ini dapat membantu menjawab pertanyaan seperti "Bagaimana waktu menjalankan program saya akan berubah ketika data input berubah?", "Apakah program saya dijamin untuk menemukan jawaban untuk masalah saya?", "Apakah program saya seefisien mungkin? "," Bagaimana saya harus mengatur ulang program saya untuk membuatnya lebih cepat atau menggunakan lebih sedikit memori? ". Anda biasanya membahas topik-topik seperti ini di kursus divisi atas tentang teori perhitungan, desain algoritma, dan desain bahasa komputer.

Cara kedua matematika dan program terkait adalah bahwa pemrograman digunakan untuk memecahkan masalah matematika. Ini penting karena banyak masalah "kehidupan biasa" sebenarnya dapat disusun kembali sebagai masalah matematika dan kemudian diselesaikan (mungkin kira-kira) pada komputer. Topik-topik semacam ini akan muncul sampai batas tertentu di hampir semua program studi Anda, tetapi khususnya dalam kursus matematika diskrit dan pemodelan matematika.


Matematika tidak dapat membantu Anda menjamin bahwa program Anda akan menemukan jawaban. Itu akan memecahkan Masalah Pemutusan, yang tidak mungkin.
DeadMG

6
@DeadMG Tidak mungkin untuk program sewenang-wenang. Suatu program tertentu dapat dibuktikan dengan baik untuk mengakhiri atau tidak mengakhiri, dalam beberapa kasus.
Luc Danton

6
@DeadMG, Itu kesalahpahaman umum tentang masalah yang terputus. Masalah Berhenti tidak mengatakan Anda tidak dapat membuktikan apakah suatu program berhenti atau tidak, itu mengatakan tidak ada algoritma atau bukti tunggal yang dapat diterapkan ke semua program untuk memutuskan apakah mereka berhenti atau tidak. Lihat misalnya en.wikipedia.org/wiki/Halting_problem dan programmers.stackexchange.com/questions/125882/… .
Charles E. Grant

Aaaah Kesalahan saya, kalau begitu. Penguncian suara yang bodoh ... jika Anda dapat mengedit posting Anda sehingga saya dapat membatalkannya?
DeadMG

4
@ DeadMG, apakah Anda menyadari fakta bahwa sebagian besar tugas pemrograman tipikal tidak memerlukan bahasa lengkap Turing sama sekali ? Dan untuk kasus-kasus lainnya, hampir selalu ada bukti penghentian khusus.
SK-logic

12

Dua contoh spesifik di mana pendidikan matematika penting bagi ilmu komputer adalah:

1) Database relasional tempat kalkulus relasional digunakan.

Kalkulus relasional terdiri dari dua kalkulus, kalkulus relasional tuple dan kalkulus relasional domain, yang merupakan bagian dari model relasional untuk basis data dan menyediakan cara deklaratif untuk menentukan kueri basis data. Ini berbeda dengan aljabar relasional yang juga merupakan bagian dari model relasional tetapi menyediakan cara yang lebih prosedural untuk menentukan kueri.

Aljabar relasional mungkin menyarankan langkah-langkah ini untuk mengambil nomor telepon dan nama toko buku yang memasok Beberapa Buku Contoh:

Join book stores and titles over the BookstoreID.
Restrict the result of that join to tuples for the book Some Sample Book.
Project the result of that restriction over StoreName and StorePhone.

Kalkulus relasional akan merumuskan cara deskriptif dan deklaratif:

Get StoreName and StorePhone for supplies such that there exists a title BK with the same BookstoreID value and with a BookTitle value of

Beberapa Buku Contoh.

Aljabar relasional dan kalkulus relasional pada dasarnya setara secara logis: untuk setiap ekspresi aljabar, ada persamaan ekuivalen dalam kalkulus, dan sebaliknya. Hasil ini dikenal sebagai teorema Codd.

Area berikutnya adalah kecerdasan buatan (AI) dan pembelajaran mesin .

Untuk contoh tentang bagaimana ini digunakan, lihatlah kelas udacity CS 373: MEMPROGRAMAN MOBIL ROBOTIK .

Deskripsi: Kelas ini, yang diajarkan oleh salah satu pakar AI terkemuka, akan mengajarkan Anda metode dasar dalam Kecerdasan Buatan, termasuk: inferensi probabilistik, visi komputer, pembelajaran mesin, dan perencanaan, semua dengan fokus pada robot. Contoh dan tugas pemrograman yang luas akan menerapkan metode ini dalam konteks membangun mobil yang dapat dikendarai sendiri. Anda akan mendapatkan kesempatan untuk mengunjungi, melalui video, laboratorium penelitian terkemuka di lapangan, dan bertemu dengan para ilmuwan dan insinyur yang sedang membangun mobil self-driving di Stanford dan Google.

Prasyarat: Instruktur akan mengasumsikan pengetahuan pemrograman yang solid, semua pemrograman akan menggunakan Python. Pengetahuan tentang probabilitas dan aljabar linier akan sangat membantu.

MINGGU 1:

Dasar-dasar probabilitas Pelokalan mobil dengan filter partikel

MINGGU 2:

Gaussians dan probabilitas berkesinambungan Melacak mobil lain dengan filter Kalman

MINGGU 3:

Pemrosesan Gambar dan Pembelajaran Mesin Menemukan objek dalam data sensor

MINGGU 4:

Merencanakan dan mencari Menentukan tempat mengemudi dengan pencarian A * Menemukan rute optimal dengan pemrograman dinamis

MINGGU 5:

Kontrol Mengontrol kemudi dan kecepatan dengan PID

MINGGU 6:

Menyatukan semuanya Memprogram mobil yang bisa menyetir sendiri

MINGGU 7:

Ujian Akhir Ujian menguji pengetahuan Anda


Saya kira ini jatuh di bawah ranah AI tetapi kebanyakan orang memiliki pie ini di langit dalam pikiran mereka ketika istilah itu digunakan. Bagaimanapun, hampir semua program yang mensimulasikan dunia nyata hampir selalu membutuhkan beberapa bentuk matematika yang lebih maju. Juga, setiap sistem dengan sensor hampir selalu membutuhkan beberapa bentuk matematika canggih.
Dunk

11

Untuk pengembangan aplikasi ilmiah, pemrograman Game, sistem waktu-nyata, sistem simulasi, dan aplikasi semacam itu, Matematika memang diperlukan. Lagipula, pemrograman menggunakan matematika dan sains untuk memecahkan masalah. Di sisi lain, untuk memprogram aplikasi yang menangkap informasi pengguna untuk mendaftarkan mereka di database Anda, tidak memerlukan matematika tingkat tinggi. Namun demikian, semua programmer akan mendapat manfaat dari Teori Angka Dasar, Aljabar, Teori Set Dasar dan Analisis Numerik Dasar.

Dari sisi praktisi matematika, berbagai topik dalam Matematika (serta banyak cabang sains lainnya) dapat mengambil manfaat secara signifikan dari pemrograman.


Saya setuju. Saya melakukan banyak pengembangan usaha dan belum menemukan diri saya perlu menggunakan banyak matematika tingkat lanjut, meskipun itu pasti baik untuk diketahui karena pasti dapat membantu. Saya akan mengatakan setiap programmer setidaknya harus mengambil Kalkulus 1. Jenis lain dari program dapat memanfaatkan hal-hal seperti Fourier Transforms, model statistik, dan pemrograman 3D sering menggunakan matriks.
Makotosan

@ Makotosan, terima kasih atas komentar Anda. Namun, matematika sangat menarik, mengingat waktu yang singkat yang dimiliki seorang programmer, upaya terbaik dihabiskan untuk apa yang benar-benar meningkatkan produktivitas seseorang. Informasi tambahan menjadi barang mewah bagi mereka yang mampu membelinya.
NoChance

Saya pikir matematika hanyalah pengetahuan domain yang diperlukan untuk program Anda, dengan cara yang sama memahami keuangan penting bagi pengembang Excel.
sixtyfootersdude

9

Saya pikir lebih dari apa pun, kesamaan proses berpikir yang digunakan membuat keduanya tampak sangat mirip.

Sebagai contoh, keduanya sangat logis. Jika Anda mengikuti serangkaian langkah atau rumus yang sama, Anda akan selalu menemukan hasil yang sama. Misalnya, 1+1akan selalu sama dengan 2, dan set a = 1berarti aakan selalu menjadi 1 (sampai Anda mengaturnya ke hal lain)

Contoh lain adalah kebutuhan untuk berpikir secara spasial. Dalam matematika, saya menemukan saya sering harus memegang angka di kepala saya dan memvisualisasikan apa yang saya lakukan. Sebagai contoh yang sangat sederhana, saya akan memecahkan masalah matematika sehingga sesuatu seperti 13x13menjadi 13x10 + 13x3, yang jauh lebih mudah bagi otak saya untuk bekerja dengannya, dan saya perlu melacaknya 13x10=130 + 13x3=39, jadi 130+39 = 169. Kemampuan yang sama untuk memvisualisasikan sesuatu yang tidak terlihat, atau memecah masalah menjadi masalah yang lebih kecil sering diterapkan pada pemrograman.

Jadi saya merasa bahwa meskipun Anda tidak perlu memiliki latar belakang matematika untuk program, di mana matematika didefinisikan sebagai melakukan perhitungan dengan angka, Anda perlu memiliki proses pemikiran dan pemahaman yang sama seperti apa yang akan Anda gunakan ketika menyelesaikan masalah matematika.


Dan beberapa matematika dasar adalah batu loncatan biasa untuk mendapatkan proses pemecahan masalah yang sistematis dan logis itu. Struktur bahasa, sesuatu yang tidak diajarkan lagi di sekolah juga merupakan batu loncatan. Ada alasan bahwa kompiler memiliki parser dan semakin baik Anda dalam menguraikan dan memperhatikan struktur kode Anda, semakin besar kemungkinan Anda akan dapat memprogram dengan baik.
Fiasco Labs

5

Saya kira, sampai saat ini, Anda telah diajarkan unsur-unsur kalkulus dan beberapa trigonometri . Dan Anda menyebut bahwa Matematika. Itu seperti menyebut sepasang kaki "manusia."

Kalkulus tidak ada hubungannya dengan pemrograman, dan lebih erat terkait dengan fisika dan teknik. Anda membutuhkan fisika untuk mesin game dan kalkulus untuk analisis statistik . (Analisis statistik mendorong lebih banyak pekerjaan yang nyaman untuk diakui)

Bagi kami, kalkulus lebih berkaitan dengan pemrograman yang berhubungan dengan dunia nyata. Kalkulus komputasi adalah cabang yang mempelajari seberapa buruk hubungan itu berlangsung sejauh ini. (spoiler: ini akan sangat buruk, tapi kita bisa tetap memeriksanya tanpa batas )

Trigonometri adalah jack gila di kotak yang keluar saat Anda tidak mengharapkannya dan kemudian analisis sinyal , generasi audio , dan banyak hal lain bergantung padanya.

Pergilah ke Aljabar 101 dan Logika 101 , pelajari sejarah Pascal, Leibniz, (ya dia hampir menemukan kalkulus, salah mengerti, berdebat dengan Newton sampai semuanya mulai masuk akal - dan masih memikirkan hal kode biner) dan Babbage dan banyak keraguan Anda akan berkurang. (Definisi Anda tentang Matematika akan selamanya berubah)


4

Pemrograman melewati banyak disiplin akademis tradisional.

Matematika, terutama matematika terapan , penting untuk pemrograman karena banyak dari apa yang kita minta komputer lakukan adalah angka-angka. Memahami metode numerik dan cara menerapkan komputasi secara efisien dan tepat adalah salah satu hal yang dilakukan oleh banyak programmer setiap hari.


4

Di sini saya akan memberi tahu Anda hal-hal praktis yang pernah saya temui Matematika dalam memecahkan beberapa Masalah Komputer (khususnya dalam domain Internet):

  1. Mesin Pencari menggunakan Kalkulus Vektor untuk mencari data.
  2. Matriks Factorization dapat digunakan untuk banyak hal seperti Sentiment Analysis.
  3. Anda perlu tahu Kalkulus, Penjumlahan untuk mengetahui kerumitan kode yang Anda tulis.
  4. Probabilitas banyak digunakan dalam Pencarian / Pencarian Informasi Probabilistik
  5. Teorema Naif Bayes digunakan dalam Analisis Prediktif.
  6. Anda perlu mengetahui hal-hal seperti hyper plane dll untuk konsep yang disebut SVM yang lagi-lagi digunakan dalam Pembelajaran Mesin untuk memecahkan masalah kategorisasi.
  7. Anda perlu memahami Entropi untuk melakukan hal-hal Memproses Bahasa Alam.
  8. Latent Semantic Indexing / Principal Component Analysis yang digunakan oleh Search Engine sangat bergantung pada aljabar matriks. & seterusnya ......

3

Masalah dengan pertanyaan Anda adalah bahwa "matematika" dan "pemrograman" adalah subjek yang sangat luas dan mendalam tentang yang ada lebih banyak tahu daripada yang bisa dikuasai siapa pun seumur hidup (tidak berlebihan). Saya pribadi memegang gelar MA dalam matematika. Selama berada di universitas, sepertinya semakin banyak yang saya pelajari, semakin sedikit yang saya ketahui dibandingkan dengan rekan-rekan saya; rasanya jika aku menjadi kurang pintar selama bertahun-tahun. Ketika saya mempresentasikan tesis master saya kepada sekelompok profesor, bahkan sebagian besar dari mereka tampaknya tidak terbiasa dengan apa yang saya pelajari.

Demikian juga, saya sekarang adalah pengembang aplikasi web berbasis database. Jika Anda membandingkan saya dengan seseorang yang melakukan pemrograman bahasa assembler, Anda mungkin menganggap kami sebagai dua profesional yang sangat berbakat, tetapi kami akan memiliki keahlian yang sangat berbeda walaupun kami berdua adalah "programmer".

Ketika Anda maju dalam studi Anda tentang matematika yang lebih tinggi (di luar kalkulus mahasiswa baru), Anda akan menemukan bahwa matematika menanamkan disiplin untuk penalaran abstrak yang akan membantu Anda dengan baik ketika Anda memprogram. Saya pikir disiplin ini sangat penting karena Anda akan berurusan dengan masalah abstrak saat Anda memprogram.

Tentu, dalam pemrograman mahasiswa baru, Anda mungkin akan belajar tentang aritmatika pointer. Anda akan menulis program singkat untuk mengilustrasikan konsep ini dan pemahaman Anda tentang bagaimana ia menggerakkan komputer Anda menuruti kehendak Anda. Namun, mempelajari tentang cara kerja aritmatika pointer dalam abstrak tidak akan membuat Anda pandai menggunakan pointer dalam program nyata. Ketika tiba saatnya untuk mengambil kekacauan 10K baris kode dan membuat beberapa perubahan pada aritmatika pointer, Anda harus dapat bernalar pada tingkat yang sangat abstrak, membuat keputusan strategis untuk menyeimbangkan berbagai kekhawatiran tentang bagaimana perubahan Anda akan mempengaruhi Kode.

Sebagai seorang programmer, Anda harus menyeimbangkan "keterbacaan" kode Anda, kinerja kode Anda, kemudahan penggunaan program yang dihasilkan, di antara banyak masalah lainnya. Anda harus dapat membuat perbandingan yang sangat abstrak untuk menyeimbangkan kekhawatiran ini satu sama lain. Anda akan membuat banyak perbandingan ini setiap hari. Saya bahkan belum memulai tentang manajemen waktu. Anda akan secara abstrak beralasan tentang kemungkinan bahwa sesuatu yang Anda lakukan akan memengaruhi kemampuan Anda untuk melakukan tugas tepat waktu, dan sekali lagi, Anda akan membuat banyak keputusan setiap hari yang akan memengaruhi pekerjaan Anda.

Akhirnya, Anda harus mempertahankan disiplin filosofis Anda untuk dapat mengasimilasi ide-ide dan konsep-konsep baru agar dapat terus berlanjut ketika metodologi dan praktik lama tidak digunakan lagi. Sekali lagi, Anda harus dapat mengevaluasi ide-ide yang datang dan membuat perbandingan abstrak dengan apa yang sudah Anda ketahui.

Singkatnya, pemrograman, seperti yang kita ketahui, tidak banyak berhubungan dengan matematika, seperti yang kita ketahui; tetapi ketika Anda melihatnya pada tingkat abstrak, mereka memiliki banyak kesamaan.


Saya terutama menyukai bagian "seperti yang kita ketahui". Itulah kesulitan yang saya lihat dalam membaca sebagian besar jawaban di sini: "tangan kiri" tidak tahu apa yang dilakukan "tangan kanan".
Loop Space

Saya kira "tangan kiri tidak tahu apa yang tangan kanan lakukan" merangkumnya. OP mengatakan bahwa ia "mulai dari bawah" dengan Java. Pemrograman di Jawa seperti membangun sesuatu dari baut dan kayu dari toko perangkat keras, berbeda dengan membuat mesin baut tersebut dan membuat pohon hidup menjadi kayu (yang akan lebih seperti pemrograman dalam Assembler)
Rice Flour Cookies

2

Matematika menggambarkan (katakanlah) persamaan kubik.

Algoritma menjelaskan bagaimana menyelesaikan persamaan kubik itu.

Membangun itu (atau apa saja) algoritma dengan cara yang dapat dieksekusi oleh mesin pemrograman .

Ilmu komputer adalah analisis algoritme - efisiensi waktu / ruang teoretis, batas kesalahan, dll. Ini banyak dapat dianggap sebagai cabang matematika. Namun perlu dicatat bahwa ilmu komputer dan pemrograman sebenarnya tidak sama. Sangat penting untuk memiliki dasar dalam ilmu komputer jika Anda ingin menjadi programmer yang baik, karena membantu Anda untuk merancang dan alasan yang lebih baik tentang algoritma yang Anda kembangkan. Tapi itu bukan keharusan.

Seorang programmer yang baik mungkin tidak (pada kenyataannya, seringkali tidak) seorang ahli matematika yang baik, dan sebaliknya. Mereka adalah keterampilan yang dapat diidentifikasi secara terpisah.


3
Itu tergantung pada domain Anda. Jika Anda hanya ingin menjadi programmer maka Anda tidak benar-benar perlu tahu matematika. Jika Anda ingin menjadi bagian penting dari bisnis (di banyak domain) maka dapat menemukan solusi untuk masalah domain sangat penting. Sangat sering solusi tersebut hanya dapat diturunkan dengan memiliki latar belakang matematika yang kuat. Anda mungkin tidak perlu menjadi ahli di bidang matematika tertentu tetapi Anda harus tahu cara menerapkan beragam matematika sehingga Anda bisa mencari tahu matematika apa yang mungkin memecahkan masalah khusus Anda saat ini.
Dunk

2

Saya telah melihat banyak pertanyaan pada jenis forum ini selama bertahun-tahun di mana masalah sebenarnya terletak pada pemahaman matematika poster yang buruk. Misalnya, siapa pun yang memiliki dasar yang bagus dalam aljabar memahami bahwa Anda tidak dapat membaginya dengan nol. Tetapi saya telah melihat banyak pertanyaan di mana poster itu tidak memahaminya dan kemudian tidak mengerti pesan kesalahan yang pada dasarnya mengatakan "Anda tidak dapat membagi dengan nol." Saya telah melihat banyak pertanyaan di mana jelas poster itu tidak mengerti logika dasar. Saya sudah melihat terlalu banyak pertanyaan di mana konsep aljabar boolean di mana jelas tidak dipahami.

Hanya karena Anda tidak menulis bukti matematika atau langsung menyelesaikan persamaan seperti di buku teks matematika tidak berarti Anda tidak perlu memahami konsep di baliknya. Kebetulan, dalam pengalaman kerja bertahun-tahun, saya tidak pernah bertemu dengan programmer yang buruk yang memiliki pemahaman yang kuat tentang matematika.

Di beberapa bidang Anda menggunakan banyak matematika secara langsung, seperti pemrograman game, pemrograman statistik, pemrograman keuangan, beberapa sistem tertanam. Dalam beberapa contoh ini Anda diberi persamaan yang Anda butuhkan dalam persyaratan dan kadang-kadang tidak. Namun, bahkan ketika Anda diberi persamaan, menerjemahkan persamaan-persamaan tersebut dengan benar ke dalam kode pemrograman mengharuskan Anda untuk memahami persamaan tersebut.

Meskipun Anda dapat bertahan dengan sedikit lebih dari sekedar aljabar dasar dalam aplikasi CRUD dasar Anda, sebagian besar masalah yang lebih menarik dan pekerjaan yang lebih maju melibatkan pemahaman matematika. Jadi mengapa Anda ingin membatasi diri Anda dari awal dengan tidak belajar matematika secara mendalam?


2

Dua contoh yang langsung muncul di pikiran adalah:

fungsi - Gagasan menerapkan transformasi ke variabel input untuk menghasilkan variabel output berakar kuat dalam matematika. Gagasan melewati fungsi sebagai parameter ke fungsi lain bahkan lebih. Secara umum, gagasan pemikiran abstrak yang terkait dengan pemrograman paralel dengan matematika cukup erat.

bitMasks - Pendekatan pemrograman umum ini untuk menyelesaikan masalah membutuhkan setidaknya pemahaman dasar aljabar boolean untuk memahami konsep tersebut.


1

Dari perspektif pemrogram: Matematika adalah bagian dari pemrograman.

Matematika diterapkan dalam pemrograman:

Ketika bekerja dengan koleksi (array, daftar, peta, dll) dalam pemrograman, maka Anda berurusan dengan implementasi dunia nyata dari abstraksi matematika.

Pemrograman tanpa matematika:

Jika Anda melakukannya println("Hello World"), maka fakta bahwa beberapa matematika digunakan untuk menghitung posisi di layar, panjang string, dll, sebagian besar benar-benar tidak relevan.

Menggunakan pemrograman untuk matematika:

Menerapkan matematika dan fisika dalam bahasa pemrograman memungkinkan hal-hal seperti desain berbantuan komputer menjadi mungkin.


Ada persimpangan hal-hal yang terkait matematika dan pemrograman terkait. Tidak ada bagian yang tepat dari yang lain. Jika Anda tahu lebih banyak MATEMATIKA, Anda akan tahu itu. Mari kita menggambar diagram venn, dan lihat apakah kita dapat menemukan item di setiap area. Aljabar terkait matematika dan pemrograman. Prinsip-prinsip Pemrograman Berorientasi Objek tidak sepenuhnya terkait matematika, tetapi abstraksi, karena matematika adalah abstraksi. Matematika diskrit sangat berguna bagi programmer, seperti halnya statistik. Kalkulus jarang muncul bagi sebagian besar programmer, belum pernah bagi saya dalam 30 tahun.
Warren P

0

Pemrograman biasanya didasarkan pada Model yang biasanya adalah model matematika.

Mari kita ambil contoh untuk membuat Kalkulator Hipotek. Untuk ini, Anda perlu tahu minat apa, interst majemuk, dan sebagainya. Jika Anda tidak memiliki pemahaman tentang matematika yang mendasarinya maka orang lain harus memberikan informasi itu kepada Anda. Biasanya itu adalah tugas programmer untuk melakukan segalanya. Anda selalu dapat mencari bantuan, jika diperlukan.

Ada konsep sederhana dalam matematika yang digunakan secara luas dalam pemrograman. Misalnya ekspresi, persamaan, variabel, mereka sangat digunakan dalam pemrograman. Jika Anda tidak mendapatkannya di Matematika, Anda mungkin bukan programmer terbaik.

Memiliki matematika yang kuat, memberi Anda lebih banyak barang untuk memodelkan pekerjaan Anda. Itu akhirnya membuat Anda seorang programmer yang lebih baik. Misalnya Anda mungkin ingin menggambar persamaan kuadrat di salah satu proyek Anda, dengan cara ini Anda belajar lebih banyak hal hanya karena Anda kuat dalam matematika. Atau Anda menulis program untuk menemukan area lingkaran, memberi Anda lebih banyak pengalaman.

Dalam karier mengajar singkat saya, saya menemukan bahwa jika siswa tidak memiliki latar belakang matematika, mereka hampir hilang ketika melakukan masalah keuangan. Jika mereka kehilangan model, belajar bahasa itu sendiri menjadi lebih sulit dan jujur ​​sangat membuat frustrasi.


3
Apakah seseorang dapat memecahkan masalah keuangan atau tidak, semuanya ada hubungannya dengan apakah mereka kompeten dalam domain itu atau tidak, hampir tidak ada hubungannya dengan kemampuan pemrograman. Saya bekerja dengan perangkat lunak pemrosesan sinyal yang mengandung banyak matematika yang jauh di atas kepala saya. Pekerjaan saya bukanlah mengerjakan matematika, melainkan mengubah apa yang dihasilkan oleh ahli matematika dan insinyur, yang bagi mereka pemrograman tidak berada dalam bidang keahlian mereka, menjadi perangkat lunak yang baik. Karena itu domain saya .
Blrfl

Dalam sebagian besar bidang praktis, keduanya terpisah: Seseorang memiliki model dan seseorang harus memprogramnya. Jadi ya Anda benar. Tetapi bagi seseorang untuk belajar pemrograman dari awal, mereka harus tahu matematika. Kalau tidak, akan sulit. Mereka harus tahu tentang variabel, ekspresi, dan sifat matematika yang berbeda. Saya telah bekerja dengan tim optimisasi. Mereka mengerjakan solver. Jika mereka tidak memiliki pengetahuan tentang matematika, mereka tidak akan pernah mengerjakannya. Saya menjawab berdasarkan dari sudut pandang pembelajaran dan mengetahui bahwa dia hanya pelajar baru yang melangkah ke pemrograman.
Noname

Dari sudut pandang belajar, sangat penting untuk memiliki latar belakang matematika jika tidak, yang lain tidak akan belajar.
Noname

Pemecah masalah matematika-domain sangat banyak, yang akan membuatnya masuk akal bahwa pemahaman tentang matematika yang terlibat akan diperlukan untuk bekerja pada mereka. Saya tidak mengatakan tidak ada konsep matematika yang terlibat dalam pemrograman, tetapi seperti yang ditunjukkan oleh @DeadMG dalam jawabannya, ada banyak aspek yang sangat praktis dari proses di mana matematika sama sekali tidak membantu.
Blrfl

1
@Birfl, DeadMG, yah, agak bodoh (dan hampir selalu salah). Matematika akan selalu membantu di semua area "lunak" itu. Psikologi banyak didasarkan pada matematika. Sosiologi bahkan lebih matematis. Dan dalam hal desain sistem, Anda sebaiknya tidak menyentuhnya tanpa latar belakang semantik yang sangat baik (yang berasal dari matematika diskrit). Tidak ada aspek dalam pemrograman yang tidak matematis. Desain GUI dan pengkodean CRUD disertakan.
SK-logic

0

Fondasi teoretis Ilmu Komputer (yang lebih dari sekadar pemrograman) bersifat matematika. Semuanya, mulai dari definisi komputabilitas hingga analisis dan ekspresi algoritme hingga spesifikasi bahasa pemrograman semuanya didasarkan pada berbagai macam matematika. Lihat halaman Wikipedia ini untuk mengetahui jenis matematika yang terlibat.

Sebagian besar yang tidak benar-benar perlu diketahui jika semua yang ingin Anda lakukan adalah sling code. Sejauh matematika terapan berjalan, kecuali Anda pergi ke bidang yang membutuhkan keterampilan angka-angka serius (simulasi fisik rinci, analisis sinyal, analisis keuangan dan prediksi, dll.) Anda mungkin tidak akan menggunakan apa pun yang lebih terlibat daripada aljabar dasar setiap hari.


0

Jujur tergantung pada jenis pemrograman yang Anda lakukan.

Jika Anda membuat aplikasi web ringan dengan beberapa logika, Anda mungkin tidak perlu kelas matematika lebih maju yang membutuhkan banyak derajat. Jika Anda bekerja dengan hal-hal yang sedikit lebih berat prosesor, daripada Anda akan membutuhkan lebih banyak matematika. Jika Anda melakukan pekerjaan dengan segala jenis bidang ilmiah, Anda benar-benar ingin menyimpan referensi calc Anda.

Tempat lain di mana Anda akan membutuhkan matematika adalah jika Anda ingin menulis permainan. Saat Anda ingin bergerak secara diagonal, Anda harus mulai melakukan perhitungan yang cermat agar Anda tidak berakhir dengan karakter yang dipercepat jika pindah ke blok ke NE.

Karena itu, Anda tidak perlu belajar matematika, lalu belajar pemrograman. Ini benar-benar valid untuk mempelajari pemrograman, lalu mengambil beberapa matematika tingkat lanjut. Saya mulai coding sebelum saya menginjakkan kaki di dalam kelas Calc atau Trig dan tidak apa-apa. Ketika saya mulai belajar matematika tingkat lanjut, saya menemukan bahwa pengkodean benar-benar membantu saya, karena saya dapat menjelajahi topik lebih banyak dengan mengubah variabel dalam skrip cepat daripada saya bisa dengan pena dan kertas.


Anda pasti harus tahu trigonometri dan matematika vektor untuk gim.
Alan B

Benar. Namun, saya juga menemukan bahwa menulis game bisa menjadi cara yang luar biasa untuk mempelajari kembali matematika yang mungkin Anda lupakan dari sekolah menengah, selama Anda tidak berada di tenggat waktu.
kcunning

0

Saya sama sekali tidak ahli dalam matematika! Saya melakukannya dengan baik di HS Geometry, yang semuanya masuk akal bagi saya. Saya menemukan pemrograman dan geometri sangat mirip. Logika Boolean sangat baik dalam benak saya pada bukti geometris.

Lalu ada hal-hal kecil seperti mengetahui bahwa Anda dapat mengontrol berapa banyak kolom dalam satu baris menggunakan operator modulus.

Saya sangat mendukung gagasan untuk menjadi programmer yang baik yang memiliki teman (atau kolega / konsultan) yang merupakan ahli matematika yang baik.

Tentunya jika Anda diberkati memiliki kedua skillset, jalankan dengan itu!


0

Jawaban sederhana; Matematika membuatmu cepat . Tentu, Anda dapat google / se / wikipedia masalah koding Anda pergi, tetapi cukup menyelesaikan matematika dan Anda tidak perlu melakukannya . Percaya atau tidak, otak manusia yang terlatih lebih cepat dari google . Selain itu, semakin banyak matematika yang Anda tahu, semakin cepat Anda dapat memahami hasil yang diberikan google / se / wiki kepada Anda, dan semakin sedikit Anda harus menelusuri untuk memahami apa yang orang katakan kepada Anda. Dalam proses menyelesaikan masalah pemrograman Anda, Anda tetap akan belajar matematika, tetapi jika Anda fokus pada matematika, itu akan menjadi proses yang jauh lebih efisien.

Pertanyaan Anda seperti musisi rock yang bertanya mengapa mereka membutuhkan pelatihan musik formal. Apakah mungkin untuk berhasil tanpanya? Tentu. Apakah itu membuat Anda lebih dari seorang badass jika Anda melakukannya? Benar.

Jawaban yang sedikit lebih rumit - Ketika matematikawan dan pemrogram menggunakan kata "solusi" (untuk masalah, yaitu, bukan persamaan - yaitu bukan "akar") - artinya sangat mirip. Belajar memecahkan masalah matematika membantu Anda belajar memecahkan masalah pemrograman.

BTW - dan tidak ada pelanggaran yang ditujukan kepada siapa pun - siapa pun yang mengatakan dia adalah programmer yang baik tetapi dia benci matematika adalah Pembohong Besar yang Gemuk. Apa yang terjadi adalah, mereka dimatikan oleh matematika formal oleh instruktur yang buruk atau perguruan tinggi dan sejak itu mereka merasa "tidak pandai matematika". Siapa pun yang tidak memiliki ketidakmampuan belajar (yaitu siapa pun yang mampu mempelajari bahasa OO) mampu melakukan semuanya hingga dan termasuk Sophomore Calculus.


0

Tindakan melakukan Matematika dan 99% Pemrograman memiliki sangat sedikit kesamaan. Matematika tidak harus menjadi programmer yang hebat. Saya telah mengambil beberapa mata kuliah tingkat perguruan tinggi dalam matematika, termasuk tetapi tidak terbatas pada elemen Kalkulus I, II, III aljabar linier, dan beberapa lainnya.

Saya telah menjadi insinyur perangkat lunak selama lebih dari 10 tahun dan jarang diperlukan untuk menggunakan apa pun selain matematika dasar. Ada beberapa pengecualian di mana matematika dibutuhkan: seperti grafik dan bidang lainnya. Tetapi 99% dari pemrograman dan rekayasa perangkat lunak tidak membutuhkan Matematika. Ini membutuhkan pemikiran logis, algoritma, OOP, fungsi, masalah penguraian, dll.


0

1) Ketika Anda belajar pemrograman, Anda akan menemukan jargon teknis (yaitu, algoritma). Untuk menganalisis algoritma, kita harus memiliki gagasan tentang sifat fungsi polinomial, logaritmik, dan eksponensial.

2) Berdasarkan aplikasi ilmu komputer, kita harus memiliki ide tentang matematika diskrit dan matematika kontinu untuk menulis solusi yang bermakna. Seseorang dapat lebih memahami tentang ini dengan melalui kursus seperti-

---> Matematika untuk Ilmu Komputer

---> Coding the Matrix: Aljabar Linier melalui Aplikasi Ilmu Komputer .

Untuk pemula, saya merasa bahasa yang diketik dinamis seperti python/ schemeadalah bahasa terbaik pertama untuk pemrograman. Bahasa yang diketik statis seperti Java/ C++bukan yang terbaik untuk memulai. Opencourseware yang diterbitkan dari "MIT / UOC-Berkeley / Stanford" dapat memandu Anda lebih baik daripada kurikulum perguruan tinggi biasa. Saya yakin Anda!!!


-1

Saya pribadi akan mengatakan, itu tergantung pada tingkat pemrograman yang terlibat. Model data dan korelasi antara mereka, algoritma pemrograman yang terlibat. Sebagai contoh: untuk menulis program yang menghasilkan "Hello World", saya melihat tidak ada persyaratan untuk membiasakan seseorang dengan Matematika Tinggi. Tingkat keterlibatan Matematika akan tergantung pada tingkat kerumitan masalah yang perlu dipecahkan secara sistematis.


-2

Hanya pengalaman saya, tidak ada lagi:
Saya bukan ahli matematika. Saya bukan jenius, hanya autodidak.
... dan setelah bertahun-tahun, saya sadar daripada saya bekerja dengan intuisi

Pertama saya belajar Pilih (sistem mati) dari awal (sendirian dengan dokumentasi kertas dan sampel),
... setelah C, C ++ untuk bersenang-senang, dan Java untuk bekerja.

Seperti yang Anda katakan tentang itu, saya dapat mengatakan bahwa belajar bahasa ini bukan masalah matematika (bahkan jika aljabar dasar / minimalis membantu Anda,) tetapi yang logis .

Sekarang banyak alat (seperti Eclipse) membantu dan memperbaiki Anda: Anda harus fokus pada apa yang ingin Anda lakukan , dengan hanya 52 kata yang dilindungi undang-undang ... dan banyak perpustakaan yang tidak berfungsi untuk Anda.

Jadi, jika Anda menyukai bahasa, pilih proyek Java, pelajari Pola Desain, UML, pahami JVM dan bagaimana menggunakannya dengan Bigloo dan Scala, pahami berulang kali selama 10.000 jam.

Pengalaman di Jawa memberi Anda pekerjaan bergaji tinggi, dan untuk waktu yang lama dalam proyek-proyek industri besar, dan Anda akan dapat beralih ke lingkungan lain karena Anda dapat berbicara informatika , bukan matematika .

Jika memahami bahasa (kata-kata, makna, konsep dan ilmu-ilmu logis lainnya yang disembunyikan seperti semantik, ontologi, ..) adalah tujuan yang baik untuk pribadi manusia Anda, untuk seumur hidup Anda, Anda bisa mulai sekarang .

Kalau tidak, coba cara lain.

Salam,
Claude


Sekali lagi, lihat posting di bawah ini. Anda melakukan matematika, Anda hanya memilih untuk tidak mengakuinya.
jamesson

1
Saya melihat, tetapi saya juga menemukan posting lain menanggapi pertanyaan pertama tentang minat matematika untuk seorang siswa (yang tahu dasar, bukan spesialisasi) dengan -1 ^ n ketika mereka bercerita tentang logika dalam bahasa latin, filsafat, bahasa ... nyata kehidupan. Apakah matematika memberi pikiran begitu terbatas sehingga semua yang tidak ada dalam persamaan ditolak, tanpa memahami kehidupan di sekitar, dan lupa bahwa Newton mulai dengan intuisi yang diberikan oleh sebuah apel? Mungkin bagi moderator untuk membuka pikiran ke dunia lain, jika memungkinkan, ini akan memperkaya kedua sisi diskusi. Notherless saya akan berhati-hati dalam menulis saya.
cl-r

-2

Seseorang hampir mengenai kuku di kepala di atas. Pemrograman adalah matematika. Lebih khusus lagi, pemrograman adalah cabang dari logika matematika yang disebut teori komputabilitas atau teori rekursi.

Cabang matematika lainnya terlibat secara langsung, khususnya bahasa formal dan teori automata. Ini membantu menggambarkan ekspresi reguler, digunakan dalam pencocokan pola, dan tata bahasa formal, yang digunakan untuk menggambarkan dan menguraikan bahasa pemrograman.

Siapa pun yang mengatakan bahwa pemrograman bukan matematika juga tidak tahu apa yang mereka bicarakan, atau memiliki motif tersembunyi, seperti maksimalis "Kekayaan Intelektual", yang berharap mendapat untung dengan mendapatkan paten pada suatu algoritma atau matematika dasar lainnya fakta atau penemuan.

Beberapa referensi untuk pemrograman sebagai matematika, dan akibatnya tidak tahu apa yang Anda bicarakan:

Program adalah Bukti: Logika Abad 19 dan Komputasi Abad 21

Program adalah Bukti: Model dan Jenis dalam Kalkulus Lambda

Artikel Korespondensi Curry-Howard Wikipedia

Tentang Efektivitas Logika yang Tidak Biasa dalam Ilmu Komputer

Efektivitas Logika yang Tidak Masuk Akal

Ya, itu berat pada bagian "logika" dari logika matematika, tetapi matematika secara umum diakui sebagai beberapa aksioma, dan konsekuensi logikanya seperti yang dikembangkan melalui logika orde pertama.

Sejauh mengatakan sebaliknya dan menjadi "IP" maksimal untuk uang:

Cara mematenkan algoritma di AS . Algoritma tidak dapat dipatenkan, tetapi paten diberikan pada algoritma dengan tidak menyebutnya sebagai algoritma. Tidak sulit menemukan banyak materi di web yang menunjukkan, atau mencoba menjelaskan, kontradiksi itu.


6
-1 untuk hominem iklan di akhir.
Charles E. Grant

@charles ad hominem terhadap siapa? Poster asli? Saya pikir poin tentang paten adalah wawasan (bahkan jika itu bisa diungkapkan dengan lebih baik).
gcbenison

@ gcbenison, "Siapa saja yang mengatakan bahwa pemrograman bukan matematika ... atau memiliki motif tersembunyi" adalah serangan ad hominem klasik: Saya tidak harus menanggapi argumen Anda karena Anda orang jahat. Saya merasa menjengkelkan karena saya tidak berpikir pemrograman itu matematika, dan saya pikir paten perangkat lunak adalah kekejian. Saya memang memiliki MS dalam Matematika Terapan, meskipun apakah saya tahu apa yang saya bicarakan pasti terbuka untuk diperdebatkan.
Charles E. Grant

@commentators: terima kasih. Saya biasa mengabaikan perilaku itu karena mereka memproyeksikan kesengsaraan yang diperhitungkan pada orang lain. --- to Bruce Ediger: Tanda ragu refleksi sedang berlangsung.
cl-r

@ cl-r: Saya memikirkan contoh-contoh yang sangat spesifik, seperti kampanye anti-Linux SCO, dan nature.com/news/... Jika kita sebagai programmer membiarkan pengacara mendefinisikan matematika untuk keuntungan pengacara, maka semua peradaban sangat merugikan .
Bruce Ediger

-2

Matematika adalah segalanya yang berkaitan dengan pemrograman. Misalnya, dalam pemrograman game Anda perlu menggunakan matyhs untuk fisika dan melakukan lebih sedikit semuanya. Untuk memindahkan posisi x pemain di Jawa, Anda akan melakukannya int x = x + speed * deltaTimeatau int x = x - speed * deltaTimeTetapi Anda mungkin mengatakan bahwa itu adalah matematika dasar, jadi mari kita beralih ke hal-hal yang lebih maju. Ada algoritma untuk pemain catur peringkat yang disebut Algoritma Elo.

Ini adalah Algoritma Elo Dijelaskan

Jika Anda masih berpikir bahwa ini dasar maka coba ini. Bagaimana Anda menghitung usia seseorang ketika Anda diberikan hari kelahiran, bulan, dan tahun. Kurangi tahun lahir dari tahun ini dan kemudian periksa apakah bulan kurang dari bulan ini dan jika tidak kurangi 1.

Ini bukan sihir, ini adalah kerja keras dan matematika yang bagus.


-4

Ok, saya mungkin akan mendapatkan banyak suara untuk ini, tetapi pemrograman dan matematika adalah dua hal yang sama sekali tidak berhubungan. Seseorang bisa menjadi pengembang yang luar biasa hanya dengan mengetahui dasar-dasar seperti penambahan, perkalian dan operasi logis dasar.

Sebagian besar pengembang tidak akan menyelesaikan persamaan tunggal selama karir profesional mereka, dan hal-hal seperti notasi O besar dapat dipahami dengan cara non matematis juga. Anda hanya berpikir tentang barang-barang itu, bayangkan potongan-potongan terlintas di kepala Anda, dan voila, Anda bisa tahu seperti apa besarnya barang-barang itu, jika seseorang menjelaskan kayu dan kekuatan itu.

Terkadang matematika dapat membuatnya sederhana, atau bisa membuat Anda merasa bangga bahwa Anda telah membuktikan sesuatu, karena Anda dapat memperluas arti pemrograman ke domain matematika melalui penamaan matematika diskrit dan semacamnya, tetapi mempelajari banyak persamaan diferensial dan integral, dan bagaimana membuktikannya, apakah IMHO bukan ide terbaik apa yang harus dilakukan jika Anda ingin sukses sebagai seorang programmer.

Setidaknya saya belum menyentuh matematika selama 10 tahun, saya bertengkar dengan profesor matematika saya sepanjang waktu, dan ketika saya membutuhkan matematika untuk rendering realtime, saya belajar semuanya dari sudut pandang programmer, tanpa membuktikan teorema apa pun, dan bagi saya itu sederhana dan mudah dipahami dibandingkan dengan semua profesor matematika di mana menempatkan di kepala kita dengan komentar "Anda tidak bisa menjadi programmer yang baik jika Anda tidak tahu matematika". Tentu Anda bisa, mudah!

Saya sekarang tahu hal-hal matematika, sehingga saya bisa berbicara dengan programmer latar belakang matematika dengan semua diferensial dan hal-hal log, tetapi hanya untuk alasan sehingga mereka tidak akan pingsan. Karena hal itu tidak berguna 99,9% dari waktu, dan ketika itu, dapat dipelajari 1000x lebih efektif dari sudut pandang programmer.

Heck, programmer membutuhkan setidaknya 5 tahun untuk menguasai bahasa pemrograman + kerangka kerja + praktik terbaik. Mengapa mereka harus belajar bagaimana membuktikan teorema? Siswa matematika mengerjakan soal-soal matematika, programmer menjalankannya, begitulah seharusnya bekerja.


8
Seorang anak memberi tahu ibunya bahwa dia tidak akan membutuhkan matematika karena dia akan tumbuh dewasa dan menjadi pemain baseball jutawan. Ibunya mengatakan kepadanya "Kamu akan membutuhkan matematika untuk menghitung jutaan kamu".
Nav

2
Maaf, saya harus tidak setuju. Mempelajari matematika mengajarkan Anda cara berpikir logis. Jika Anda tidak dapat berpikir secara logis, semua yang akan Anda tulis adalah banyak kode yang tidak skala. Saya tidak mengatakan Anda harus menjadi ahli dalam matematika atau bahkan seperti matematika, Anda juga tidak harus menggunakannya dalam kehidupan sehari-hari Anda. Tetapi Anda perlu mempelajarinya jika Anda ingin memecahkan masalah pemrograman nyata.
jmort253

2
@ jmort253: Mempelajari matematika tidak membuat Anda menjadi orang yang berpikir logis. Entah itu sesuatu yang terhubung ke pikiran Anda, atau tidak. Aku benci matematika sejak sekolah, tapi aku orang yang sangat logis. Pemrograman bukanlah matematika, saya ke dalam pemrograman sistem selama 10+ tahun, dan saya dapat mengatakan bahwa dengan kepercayaan 100%, dan Anda dapat mengharapkan matematika yang lebih sedikit ketika Anda memasuki pengembangan web atau administrasi SQL. Tugas Anda bukanlah mengembangkan teori-teori matematika baru, tugas Anda adalah membuat benda-benda bekerja menggunakan sumber daya terbatas dengan cara yang dapat dipelihara dengan menggunakan algoritma dan wadah yang paling efisien.
Coder

2
@Nav: Masuk akal bagi setiap orang untuk matematika dasar, hingga persamaan dengan x dan y. Tetapi menghitung jutaan Anda biasanya adalah apa yang dilakukan akuntan dan pengacara, karena jika tidak, Anda akan kehilangan beberapa hukum negara bagian yang harus melakukan sesuatu dengan deklarasi dan kehilangan segalanya dengan cara apa pun. Anda harus cukup pintar untuk memahami apa yang sedang terjadi, tetapi begitu Anda unggul dalam sesuatu, akan lebih efektif untuk menggunakan layanan khusus yang akan melakukan hal-hal untuk Anda dengan benar, cepat dan tepat waktu, sementara Anda menjaga kebugaran di gym, untuk mempertahankan posisi 5 teratas yang sulit diperoleh itu.
Coder

10
Matematika bukanlah proses memecahkan persamaan. Jika satu-satunya matematika yang pernah Anda lihat adalah matematika yang diajarkan di sekolah, Anda belum pernah melihat matematika yang sebenarnya .
doppelgreener
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.