Saya memulai studi pascasarjana saya di bidang teknik dan akan bekerja pada proyek-proyek ilmu komputasi. Saya perhatikan bahwa telah ada beberapa diskusi tentang kelebihan dan kekurangan menerapkan algoritma Anda sendiri di sini . Apakah analisis biaya-manfaat dari penerapan algoritma Anda sendiri dibandingkan dengan menggunakan perpustakaan berbeda ketika Anda seorang mahasiswa pascasarjana?
10
Jawaban:
Menurut pendapat saya, menjadi mahasiswa pascasarjana tidak mengubah jawaban oleh David Ketcheson di sini untuk pertanyaan yang Anda tautkan dalam posting Anda.
Kode algoritma versi minimal yang ingin Anda pelajari. Kemudian sisihkan mereka. Menyandikan algoritme Anda sendiri paling berguna untuk pembelajaran, tetapi untuk kode penelitian (atau produksi), kecuali jika tujuan penelitian Anda adalah menulis perangkat lunak yang meningkatkan perpustakaan mutakhir di luar sana (jika ada bahkan), Anda lebih baik menggunakan perpustakaan. Perpustakaan cenderung terdokumentasi dengan lebih baik, lebih terukur, dan lebih kuat dari apa yang Anda kodekan sendiri, kecuali jika Anda (atau menjadi) sangat pandai dalam pengkodean. Juga, perpustakaan mungkin akan diuji dan didebug untuk Anda (meskipun tentu saja, itu tergantung siapa yang menulis perpustakaan ...). Anda akan bertanggung jawab untuk mendukung, men-debug, dan menguji kode apa pun yang Anda tulis untuk tesis Anda, dan untuk menghemat waktu, ada baiknya meminimalkan jumlah kode yang perlu Anda tulis.
Satu-satunya skenario lain yang dapat saya pikirkan (yaitu, mungkin ada yang lain) adalah:
sumber
Saya ingin memberikan sedikit lebih banyak jawaban Geoff yang bijaksana . Secara khusus, saya ingin memberi Anda sedikit lebih banyak perspektif tentang nilai upaya pemrograman Anda sebagai lawan upaya penelitian Anda di awal karir Anda sebagai seorang akademisi.
Anda akan menemukan bahwa mampu menulis perangkat lunak untuk menambah penelitian ilmiah Anda akan membuat Anda menjadi anggota yang berharga dari hampir semua tim peneliti. Namun, kali ini tidak akan dianggap "berharga" oleh rekan-rekan akademis Anda atau mereka yang mempekerjakan untuk posisi akademik.
Dari survei penelitian 2011 yang dilakukan di Princeton, "Sebuah Survei Praktik Ilmu Komputasi" :
Itu tidak berarti bahwa itu bukan ide yang baik untuk mengimplementasikan atau mendesain ulang perpustakaan inti atau aplikasi, tetapi jika Anda akan terlibat dalam pengembangan perangkat lunak yang serius (lebih dari 25% dari waktu Anda bekerja dengan kode), pertahankan ketiga ini pikiran dalam pikiran.
Kompleksitas dan risiko tumbuh secara eksponensial dengan ukuran proyek dan jumlah pengembang. Sampai Anda telah menulis atau bekerja dengan perangkat lunak yang lebih besar atau tim pengembang yang melampaui lab Anda, akan sulit bagi Anda untuk mendapatkan apresiasi yang baik dari ini dan upaya perkiraan yang tepat.
Anda harus baik. Diperlukan tingkat kematangan tertentu, baik sebagai programmer dan sebagai ilmuwan aplikasi, untuk menulis perangkat lunak yang bermanfaat. Anda harus tahu apa saja fitur penting, di mana risiko numeriknya, dan dapat memperkirakan upaya pemrograman untuk serangkaian fitur dan ketahanan yang diberikan. Tentu saja, satu-satunya cara untuk mendapatkan yang baik adalah menghabiskan waktu untuk proyek-proyek yang bukan Anda pimpin atau yang bisa gagal atau tertunda dengan aman, yang membawa saya ke titik akhir saya.
Meskipun banyak laboratorium penelitian dan posisi industri sangat menghargai pengalaman pemrograman, pemrograman ilmiah dapat bertindak sebagai potensi kerugian bagi karier akademis Anda, bahkan jika perangkat lunak Anda lebih menguntungkan sains daripada makalah Anda. Semua waktu yang Anda habiskan belajar bagaimana memprogram dengan baik, pemrograman, mendokumentasikan kode Anda, dan membuatnya kuat diterjemahkan ke dalam makalah yang tidak ditulis. Seorang penasihat tidak akan selalu memikirkan minat terbaik siswa mereka di sini, karena ini adalah salah satu kasus di mana siswa dapat memberikan pekerjaan yang menguntungkan kelompok penasihat tanpa memberi manfaat pada jumlah kutipan siswa. Cari satu atau lebih mentor tepercaya di bidang yang Anda minati dan pastikan Anda memiliki pemahaman yang jelas tentang kontribusi apa yang dianggap berharga. academia.stackexchange.com adalah tempat yang sangat baik untuk mengajukan pertanyaan tindak lanjut tentang ini.
Sebagai catatan kaki: jumlah proyek upaya satu orang yang secara signifikan memajukan setiap bidang komputasi semakin berkurang, baik itu bidang aplikasi atau sesuatu yang lebih teknis seperti aljabar linier padat. Semakin banyak paket perangkat lunak yang membentuk "roti-dan-mentega" dari riset komputasi adalah 10 tahun lebih tua atau lebih. Kode ilmiah yang belum mencapai tingkat kematangan ini cenderung memiliki lebih banyak bug, lebih sedikit fitur, dan dokumentasi yang jarang. Cobalah untuk menghindari bekerja dengan kode belum matang yang tidak didukung secara aktif, terlepas dari berapa lama itu.
sumber
Saya pikir analisis biaya-manfaat tergantung pada literasi komputasi ilmiah yang diinginkan yang ingin Anda capai selama studi Anda.
Bagi sebagian besar ilmuwan yang bekerja dengan komputer yang mahir dalam komputasi ilmiah sudah cukup, ini membutuhkan: pemahaman tingkat tinggi (abstrak) tentang algoritma utama yang digunakan, dan keterampilan pemrograman yang memungkinkan Anda untuk secara efektif menggunakan perpustakaan perangkat lunak (membangun perangkat lunak, menghubungkan, menggunakan Daftar surat).
Sebaliknya, jika Anda berencana untuk menjadi ahli di bidang komputasi ilmiah, Anda akan membutuhkan pemahaman mendalam tentang metode numerik, aritmatika floating-point, dan teknologi komputasi. Anda dapat mempelajari teori topik-topik ini dari buku-buku, namun pengalaman melalui latihan diperlukan untuk membangun dan mempertahankan keterampilan tingkat lanjut. Oleh karena itu, mungkin ide yang bagus untuk memprogram semua yang Anda gunakan saat Anda belajar (misalnya jika Anda ingin memasak seperti koki: Anda belajar dengan makan apa yang Anda masak, dan dengan sering memasak!)
Tingkat kemahiran yang benar tergantung pada karier Anda. Lihat tingkat keterampilan apa yang digunakan oleh pekerja di bidang Anda.
sumber