Bagaimana kalkulus dan aljabar linier bermanfaat bagi pemrogram sistem? [Tutup]


10

Saya menemukan sebuah situs web yang mengatakan bahwa kalkulus dan aljabar linier diperlukan untuk Pemrograman Sistem.

Pemrograman Sistem, sejauh yang saya tahu, adalah tentang osdev, driver, utilitas, dan sebagainya. Saya hanya tidak tahu bagaimana kalkulus dan aljabar linier dapat membantu dalam hal itu. Saya tahu bahwa kalkulus memiliki beberapa aplikasi dalam sains, tetapi dalam bidang pemrograman khusus ini saya tidak dapat membayangkan betapa kalkulus bisa begitu penting.

Informasi ada di situs ini: http://www.wikihow.com/Become-a-Programmer

Sunting: Beberapa jawaban di sini menjelaskan tentang kompleksitas dan optimisasi algoritma. Ketika saya mengajukan pertanyaan ini, saya mencoba untuk lebih spesifik tentang bidang Pemrograman Sistem. Kompleksitas algoritma dan pengoptimalan dapat diterapkan ke area pemrograman apa pun, tidak hanya Pemrograman Sistem. Mungkin itulah sebabnya saya tidak dapat memikirkan hal itu pada saat pertanyaan itu.


6
Ini bukan aplikasi langsung seperti mengubah proses pemikiran Anda.
SomeKittens

3
Saya tidak melakukan banyak pemrograman sistem (ok - saya tidak melakukan apa-apa), tapi saya membayangkan bahwa jika Anda menjalankan serangkaian tes kinerja dan Anda ingin melakukan analisis statistik pada hasilnya, kalkulus dan aljabar linier bisa ikut bermain. Mereka mungkin juga diperlukan ketika melakukan analisis kompleksitas algoritma.
FrustratedWithFormsDesigner

2
@ Telastyn: Benarkah? Itu menarik. Bagaimana cara kerjanya?
FrustratedWithFormsDesigner

2
Bisakah Anda memberikan tautan ke situs web? Itu dapat menambahkan beberapa konteks yang akan membantu Anda mendapatkan jawaban yang lebih spesifik.
Caleb

2
@FrustratedWithFormsDesigner - Analogi dari nilai ke pointer seperti derivasi. Anda mulai dengan suatu fungsi dan memperolehnya untuk mendapatkan fungsi baru yang berarti sesuatu yang lain (sebuah int yang merujuk pada alamat memori daripada angka). Anda bahkan bisa mendapatkan turunan kedua (sebuah penunjuk ke penunjuk) yang artinya agak sama tetapi berbeda. Kemudian untuk membatalkannya, Anda perlu mengintegrasikan (dereference the pointer), yang memiliki beberapa peringatan (konstanta yang hilang ketika menurunkan fungsi vs objek mengiris). Semoga itu masuk akal, sudah lama ...
Telastyn

Jawaban:


6

Saya akan membayangkan itu tidak terlalu penting jika Anda menulis utilitas non GUI di atas sistem operasi modern tanpa bekerja pada internalnya. Ini mungkin cerita yang berbeda jika Anda berupaya mengubah sistem operasi modern atau mengembangkan yang baru.

Jika Anda bekerja dengan perangkat keras video atau sistem windowing logam kosong, Anda akan memerlukan pengetahuan tentang aljabar linier untuk memperbarui grafik secara efisien. Saya belum melihat diri saya, tetapi saya yakin Anda dapat menemukan contoh dalam kode sumber untuk X, KDE dan Gnome.

Jika Anda bekerja dengan perangkat keras mengenai pemrosesan sinyal digital maka kalkulus akan sangat penting. Saya membayangkan ada beberapa perangkat yang melakukan pengangkatan berat dengan CPU sistem daripada mikroprosesor lokal dan ini sering antarmuka ke sistem listrik analog.

Juga kalkulus memainkan peran penting dalam analisis kinerja selain hanya aljabar linier ketika mencoba menyesuaikan kurva dengan data.


Bahkan hanya melakukan pemrograman directx atau opengl akan membutuhkan pemahaman aljabar linier.
Rig

@Rig: Belajar sambil jalan, begitulah cara saya melakukannya. Belajar dari sisi matematika, IMHO, adalah bass-ackwards.
Coder

8

Komentar SomeKittens benar dalam soal uang: Anda perlu kalkulus dan aljabar linier karena kursus-kursus itu mengubah cara Anda berpikir dan cara Anda memahami dunia. Aljabar linier adalah tentang pemetaan dari satu domain ke domain lainnya; kalkulus mencakup cara berperilaku. Mereka sendiri adalah alat yang ampuh, tetapi teknik yang Anda pelajari ketika mempelajari bidang itu juga menjadi bagian dari gambaran mental Anda tentang dunia.

Anda juga memerlukan kursus-kursus itu karena orang-orang akan mengharapkan Anda untuk dapat berpikir dalam istilah-istilah itu. Saya tidak sering melihat kolega saya mengambil turunan polinomial pada papan putih mereka, tetapi saya sering melihat sketsa fungsi dengan garis singgung digambar di beberapa titik menarik, atau area di bawah kurva berbayang. Kami tidak cukup peduli dengan nilai aktual sehingga tidak perlu menghitungnya, tetapi memahami tentang bagaimana nilai berubah sangat penting, dan itu adalah bagian dari percakapan sehari-hari.

Setiap gelar ilmu komputer sarjana akan memerlukan kalkulus, aljabar linier, statistik, logika, dan kursus matematika lainnya bukan karena programmer perlu menerapkan teknik secara langsung secara teratur (meskipun mereka mungkin, tergantung pada apa yang mereka lakukan), tetapi karena Anda memerlukan itu pengetahuan untuk memahami materi yang datang kemudian.


2
Jika saya bisa memperbaiki ini lebih dari sekali saya akan.
Mr.Mindor

Meskipun balasan yang bermanfaat, tetapi tidak menjawab pertanyaan. Misalnya saya datang ke sini karena saya baru-baru ini melakukan peretasan pada driver r600g untuk bersenang-senang dan juga tertarik untuk meningkatkan latar belakang matematika, yang lemah. Akan sangat bagus untuk menemukan ide untuk diterapkan pada driver yang membutuhkan memperluas pengetahuan matematika saya, lebih disukai sesuatu dari aljabar abstrak, topologi, tetapi tidak harus terbatas pada. Sekelompok pertanyaan seperti "matematika pengembangan driver" tidak muncul dengan satu makalah, halaman ini adalah yang terdekat yang bisa saya dapatkan.
Hi-Angel

@ Hai-Malaikat saya tidak setuju. Ini mungkin tidak menjawab pertanyaan dengan cara yang Anda harapkan, dan mungkin tidak menjawab pertanyaan "apa yang bisa saya kerjakan untuk meningkatkan keterampilan matematika" Anda yang terpisah, tetapi saya berpendapat bahwa matematika tingkat lanjut berguna untuk pemrogram sistem terutama dalam hal perubahan perspektif Anda dan memberikan pemahaman yang lebih dalam. Pemrogram grafis sebenarnya menggunakan kalkulus dan aljabar linier secara teratur, pemrogram sistem kurang begitu. Tetapi memahami topik-topik itu masih penting.
Caleb

6

Saya akan melanjutkan dan mengatakan bahwa saya tidak berpikir kalkulus atau aljabar linier cenderung penting untuk pemrograman sistem.

Saya tentu berpikir kalkulus dan aljabar linier layak dipelajari secara umum - Saya seorang pria matematika! Dan, seperti jawaban lain tunjukkan, ada beberapa relevansi tidak langsung, karena analisis kinerja dan desain algoritma dapat menggunakan matematika tingkat lanjut. Namun, saya tidak berpikir pemrograman sistem lebih tergantung pada jenis-jenis matematika daripada kebanyakan bidang lain yang umumnya tidak dianggap sebagai matematika.


Pernah melihat GPU? :) Ini sedikit matematis, esp. untuk menulis driver untuk itu ... tapi itu benar: jika Anda buntu, Anda selalu dapat menggunakan math.stackexchange.com :))
Aadaam

Saya seorang pria komputer grafis juga; Saya mirip dengan ucapan itu! Dan Anda benar: siapa pun yang ingin menulis driver kartu grafis perlu memahami grafik komputer (dan aljabar linear dan kalkulus dasar yang mencakup) serta pemrograman sistem.
badai

Sejauh yang saya bisa lihat, kita perlu mengetahui trigonometri dan aljabar linier untuk melakukan sesuatu yang berguna dari grafik API, tetapi tidak untuk mengimplementasikan API ini dalam driver grafis. Di sana Anda sebagian besar berurusan dengan pengalihan sekelompok register berdasarkan permintaan aplikasi. Satu-satunya tempat untuk menerapkan matematika pada driver grafis yang dapat saya bayangkan adalah optimalisasi ke kompilernya. Koreksi saya jika saya salah - saya ingin menjadi. Saya benar-benar datang ke sini karena saya ingin meningkatkan latar belakang matematika saya dan juga melakukan sedikit peretasan pada r600g, dan akan menyenangkan untuk menggabungkan keduanya.
Hi-Angel

4

Saya menduga itu benar di tepinya. Pemrogram sistem harus jauh lebih memperhatikan kinerja dan keandalan, sehingga analisis algoritma mungkin penting, dan kalkulus kadang-kadang diperlukan untuk bukti analisis Big-Oh. Subjek seperti teori antrian dan optimasi diskrit (optimasi matematis bukan optimasi kode) juga dapat berperan. Namun saya pikir itu sebagian besar akan berlaku untuk orang yang bekerja di tepi pendarahan sistem operasi dan protokol jaringan, tidak begitu banyak orang yang bekerja pada driver USB 3.0.


⁺¹ untuk optimasi diskrit, tampaknya menarik dan terkait.
Hi-Angel

1

Definisi Anda tentang Pemrograman Sistem cukup sesuai dengan jawaban di Wikipedia.

Jika Anda berpikir tentang apa yang disediakannya - yaitu. antarmuka perangkat lunak ke dalam perangkat keras, maka mulai masuk akal mengapa kalkulus dan aljabar linier adalah keterampilan praktis yang harus dimiliki.

Mengabstraksi bahwa antarmuka level rendah mengharuskan Anda untuk memahami bagaimana perangkat beroperasi. Perangkat elektronik masih terikat oleh hukum fisika. Kalkulus dan aljabar linier menyediakan sarana untuk memodelkan perilaku perangkat. Memodelkan perangkat memungkinkan Anda memberikan layanan ke dalam fungsinya.

Yang telah dikatakan, kedua bidang itu bukanlah segalanya untuk Pemrograman Sistem. Saya tahu beberapa EE yang tidak melakukannya dengan baik dengan kalkulus dan aljabar linier tetapi masih bisa menjelaskan apa yang dilakukan perangkat dengan cukup ringkas.


Apakah definisi Pemrograman Sistem itu benar atau salah?
Victor

2
Itu tidak terlalu akurat. Berinteraksi dengan CPU hanya membutuhkan pengetahuan tentang instruksi yang disediakan.
DeadMG

@DeadMG - Saya tidak bisa berdebat dalam hal CPU. Saya telah berpikir lebih dalam hal perangkat keras mentah seperti accelerometer atau antarmuka IO langsung. Yang telah dikatakan, sebagian besar dari mereka dihadapkan dengan semacam chip untuk menyediakan antarmuka. Saya pikir komentar saya lebih sesuai untuk logika di dalam chip daripada mungkin lapisan driver perangkat.

1

Aplikasi web umum dan / atau pemrograman administratif tidak melibatkan banyak aplikasi aljabar linier atau kalkulus, tetapi banyak bidang spesialis melakukannya. Jika Anda berurusan dengan geometri, Anda terikat dengan aljabar linier. Sebagian besar pemrograman fisika juga membahas aljabar dan kalkulus. Serta hampir semua yang berkaitan dengan manipulasi gelombang, seperti suara dan pemrograman radio. Secara umum lebih penting untuk memahami matematika diskrit yang, antara lain, berkaitan dengan teori himpunan, teori grafik dan logika formal (boolean) yang berguna dalam banyak aplikasi seperti manajemen informasi, basis data dan tempat-tempat lain di mana data dan / atau logika digabungkan . Dalam hal pemrograman Sistem saya tidak melihat banyak aplikasi.


2
Saya pikir Anda bisa "bertahan" tanpa menggunakan kalkulus atau aljabar linier di sebagian besar domain pemrograman. Namun, jika Anda merasa nyaman dengan konsep-konsep tersebut, Anda akan terkejut dengan banyaknya masalah yang berbeda yang dapat Anda terapkan. Mengukur dan memprediksi penyimpangan jam, waktu keberlanjutan baterai muncul di benak saya saat ini yang baru saja menggunakan kalkulus. Triangulasi dan prediksi jalur melibatkan aljabar linier untuk masalah yang saya kerjakan tahun lalu. Tidak ada masalah yang diperlukan menggunakan topik-topik tersebut sebagai metode perkiraan yang sangat rumit dan buruk yang sebelumnya digunakan orang lain ...
Dunk

2
(lanjutan) ... tetapi memanfaatkan matematika yang lebih maju dibuat untuk implementasi yang lebih ringkas dan akurat yang bekerja sebagaimana mestinya. TKI, kalkulus, dan aljabar linier adalah alat yang ampuh setelah Anda mempelajari cara menerapkannya dan mereka akan membantu Anda naik ke atas dibandingkan dengan kebanyakan setiap programmer lain, karena sebagian besar tidak peduli untuk belajar matematika dengan cukup saat di sekolah. Bagi saya, itu berarti mulai bekerja pada proyek-proyek yang sangat keren versus yang biasa-biasa saja.
Dunk

0

Seperti yang telah disebutkan orang lain, setiap kursus matematika di universitas dapat mempertajam keterampilan memecahkan masalah dan penalaran deduktif Anda. Ini penting bagi hampir semua orang.

Tetapi kadang-kadang mengetahui beberapa aljabar linier dapat membantu, terutama untuk beberapa ide bisnis yang cukup bagus .


0

Pemrograman Sistem, sejauh yang saya tahu, adalah tentang osdev, driver, utilitas, dan sebagainya. Saya hanya tidak tahu bagaimana kalkulus dan aljabar linier dapat membantu dalam hal itu.

Dengan kalkulus itu sangat mudah, segera setelah seseorang melihat lebih dekat isi kursus . Ini terkait erat dengan kompleksitas algoritma, notasi Big-O - hal-hal seperti itu, cukup mendasar dalam pemrograman.

Persamaan adalah apa yang Anda dapatkan ketika memperkirakan kompleksitas algoritma. Tiga tingkat loop bersarang dari 0menjadi NN 3 , loop dua tingkat bersarang adalah N 2 , satu adalah N. Evaluasi Anda bisa terlihat seperti (N 3 + 2 * N 2 + N) - itu persamaan.

Sekarang, jika Anda ingin lebih memahami seberapa cepat waktu eksekusi akan tumbuh ketika N meningkat, ini terkait erat dengan turunan / diferensiasi. Bagian lain dari kalkulus yang Anda temukan bermanfaat adalah batasan dan analisis asimptotik - ini akan mengarahkan Anda untuk memahami notasi O-Besar, penilaian yang lebih baik pada wawancara pemrograman dan mungkin, lebih baik melakukan pemrograman sistem.

  • Anda ditugaskan untuk merancang tabel alokasi file, struktur data apa yang akan Anda gunakan? Dengan asumsi bahwa ada banyak file kecil yang jarang dimodifikasi, apa yang lebih disukai? Dengan asumsi sejumlah kecil file besar yang selalu ditambahkan pada akhirnya, apakah Anda akan menggunakan struktur yang sama? Bagaimana Anda memutuskan?

Adapun Aljabar Linier , di sini aplikasi pemrograman menembak pada Anda dari gambar pertama.

http://pad1.whstatic.com/images/thumb/c/c4/LaTeX-2m.jpg/251px-LaTeX-2m.jpg

Jika Anda harus berurusan dengan grafik raster (misalnya dalam driver video), gambar seperti di atas akan datang pada Anda dalam mimpi terburuk Anda.

  • Kenapa tes # 12345 itu menunjukkan piksel yang hilang? Apakah saya melakukan sesuatu yang salah dengan menerapkan Bresenham ? mungkinkah itu hanya kesalahan dalam desain uji yang tidak tepat untuk kesalahan pembulatan?

Ada tren di mana CS di setiap universitas yang saya tahu terpisah dari departemen matematika. Saya pikir ini langkah yang sangat cerdas. Selain itu, siswa CS dianggap mencari solusi dari menggunakan solusi yang ada. Siswa CS yang baik akan membaca dokumen pada wadah, akan melihat O (nsomething), membuka wikipedia, melihat grafik, dan memutuskan apakah wadah tersebut sesuai. Itu akan memakan waktu 2 menit, seperti memeriksa persyaratan reentrancy dan parameter untuk beberapa panggilan fungsi API. Dan, IMHO, profiler hampir selalu merupakan solusi yang lebih baik daripada matematika teoretis.
Coder

2
@Coder, tentu saja beberapa siswa ilmu komputer akhirnya menjadi orang-orang yang harus merancang wadah dan algoritma. Bagi mereka, matematika dan profiler adalah alat pelengkap: matematika tidak akan menghasilkan implementasi yang berfungsi, dan profiler tidak akan memperingatkan Anda bahwa data pengujian Anda hanya kebetulan.
Charles E. Grant
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.