Setelah satu lagi pertanyaan PR di SO. Sepertinya sebagian besar siswa tidak tahu apa itu debugger atau bagaimana menggunakannya. Saya merasa bahwa mengetahui cara menggunakan debugger hampir sama pentingnya dengan dasar pemrograman lainnya.
- Pertanyaannya seharusnya tidak debugging dan bagaimana menggunakan alat debugging modern diajarkan bersama dasar-dasar pemrograman? Jika tidak mengapa tidak.
education
language-agnostic
debugging
memutarkan lagi
sumber
sumber
Jawaban:
Ini bukan masalah bahwa penggunaan debugger perlu diajarkan, tetapi teknik debugging yang lebih umum . Ini akan mencakup pengajaran cara menggunakan debugger tentu saja tetapi juga akan berbagai teknik penting lainnya, misalnya
Sebagai manfaat tambahan, banyak teknik juga dapat diterapkan untuk pemecahan masalah di bidang selain pemrograman.
Ada buku yang cukup bagus tentang seluruh subjek ini, yang mungkin harus menjadi bacaan wajib bagi semua mahasiswa sarjana dan siapa pun yang mempelajari dasar-dasar pemrograman: Debugging oleh David J Agans .
sumber
Kursus ilmu komputer tersier dirancang untuk mengajarkan dasar-dasar pemrograman kepada siswa , seperti yang telah Anda sebutkan - konsep-konsep ini diajarkan kepada siswa dengan harapan bahwa mereka akan memahami konsep yang diperlukan dan menerapkannya pada rentang bahasa pemrograman yang lebih luas dan set masalah.
Alat debugging, di sisi lain, adalah himpunan bagian dalam area implementasi - masing-masing alat berbeda untuk setiap bahasa (meskipun konsepnya sama). Kami terkena alat debugging tetapi tidak pernah benar-benar membahasnya secara mendalam. Jika kami menghabiskan lebih dari satu minggu pada alat debugging, saya akan melihat kembali - di belakang - dan menganggap itu membuang-buang waktu. Saya lebih suka belajar tentang notasi BigO atau polimorfisme. Namun, jika kekuatan alat debugging belum (berhasil) disampaikan kepada siswa, maka itu akan menjadi keharusan.
sumber
Di sebagian besar program program pengantar, status program cukup sederhana sehingga Anda dapat menghilangkan bug dengan beberapa pernyataan cetak. Mungkin juga ada masalah memaksa siswa untuk melakukan hal-hal dengan tangan sehingga mereka memahami bagaimana dan di mana dalam kode jenis bug tertentu terjadi. Jika Anda tidak tahu ke mana harus mencari maka debugger akan menjadi sangat tidak berguna.
sumber
grep
melakukan pekerjaan itu. Tidak ada loncatan, tidak ada breakpoint bersyarat - hanya grep.Itu tidak begitu penting. Saya hampir tidak pernah menggunakannya, dan tidak pernah punya. Cara terbaik untuk men-debug kode adalah:
Dan untuk banyak perangkat lunak modern multi-threaded, debugger memiliki efek menyembunyikan bug daripada membukanya. Dan mereka seharusnya tidak "diajar" di tingkat sarjana, lebih dari satu orang akan mengajarkan cara menggunakan pengolah kata.
sumber
Debugging harus diajarkan karena siswa adalah manusia dan manusia membuat semua jenis kesalahan, beberapa di antaranya memerlukan memperoleh beberapa data eksperimental (info debug) sebelum pencerahan mengenai kesalahan yang terjadi terjadi.
Debugging tidak diajarkan karena premis (mungkin diwarisi dari departemen matematika) bahwa program harus benar dengan desain, bahkan mungkin bisa dibuktikan demikian. Dan dengan demikian siswa tidak boleh "bereksperimen" dengan pemrograman dengan benar. Namun ini mengabaikan proses pembuatan di dunia nyata dari manusia yang tidak sempurna mengeluarkan perangkat lunak untuk mengubah spesifikasi di bawah tekanan jadwal & dll.
sumber
Pertanyaan ini asing bagi saya. Di universitas saya, penggunaan debugger (JDB dan Eclipse debugger) diajarkan paling awal sejak urutan ilmu komputer tahun pertama. Penggunaan debugger dan alat pengujian lainnya diajarkan lagi dalam kursus pengujian perangkat lunak.
Saya pribadi merasa sangat sulit untuk percaya bahwa sekolah bagus mana pun yang berusaha mempersiapkan orang untuk masuk ke dunia kerja tidak mengajarkan tentang teknik debugging dan pengujian yang tepat. Mereka jelas tidak bisa membahas semua aspeknya, tetapi mereka setidaknya bisa mengajarkan dasar-dasar di kelas.
sumber
Cari tahu sendiri
Saya tidak perlu dan tidak ingin seorang profesor atau TA meluangkan waktu untuk mengajar saya sesuatu yang saya dapat dengan mudah mencari tahu sendiri. Mereka ada di sana untuk mengajari saya konsep-konsep sulit dan membimbing pembelajaran. Mereka tidak dan tidak seharusnya ada di sana sehingga Anda tidak perlu RTFM.
Pelajari Cara Belajar
Perguruan tinggi harus tentang belajar cara belajar, bukan hanya memiliki tangan Anda memegang setiap topik yang Anda tidak tahu. Jika Anda memegang tangan Anda terus-menerus melalui proses ini, Anda akan gagal total di dunia nyata.
Menanjak, Keduanya, Melalui Salju
Ketika saya pergi ke sekolah, mereka juga tidak repot-repot mengajari Anda bahasa. Anda diharapkan mengambilnya sendiri. Mereka akan memberi Anda proyek dan fasilitas. Terserah Anda untuk melacak informasi yang Anda butuhkan untuk menyelesaikan implementasi dan mengirimkan program kerja. Cukup mirip dengan dunia nyata, kecuali dengan jam kantor.
sumber