C, yang terkenal, adalah bahasa tingkat rendah seperti HLL. C ++, meskipun sepertinya bahasa tingkat jauh lebih tinggi dari C, masih memiliki beberapa sifat. Dan salah satu dari sifat-sifat itu adalah bahwa bahasa dirancang oleh programmer, untuk programmer - dan, khususnya, programmer yang tahu apa yang mereka lakukan.
[Untuk sisa jawaban ini saya akan fokus pada C. Sebagian besar dari apa yang akan saya katakan juga berlaku untuk C ++, meskipun mungkin tidak sekuat itu. Meskipun seperti yang dikatakan Bjarne Stroustrup dengan terkenal, "C membuatnya mudah untuk menembak diri sendiri di kaki; C ++ membuatnya lebih sulit, tetapi ketika Anda melakukannya, itu akan menghancurkan seluruh kaki Anda." ]
Jika Anda tahu apa yang Anda lakukan - benar - benar tahu apa yang Anda lakukan - kadang-kadang Anda mungkin harus "melanggar aturan". Tapi sebagian besar waktu, sebagian besar dari kita akan setuju bahwa aturan yang bermaksud baik membuat kita semua dari masalah, dan yang melanggar aturan itu sepanjang waktu adalah ide yang buruk.
Tetapi dalam C dan C ++, ada sejumlah besar hal yang dapat Anda lakukan yang merupakan "ide buruk" tetapi tidak secara formal "melanggar aturan". Kadang-kadang mereka adalah ide yang buruk beberapa waktu (tetapi mungkin bisa dipertahankan kali lain); terkadang mereka adalah ide yang buruk hampir sepanjang waktu. Tetapi tradisi selalu tidak memperingatkan tentang hal-hal ini - karena, sekali lagi, asumsi adalah bahwa programmer tahu apa yang mereka lakukan, mereka tidak akan melakukan hal-hal ini tanpa alasan yang baik, mereka akan terganggu oleh banyak peringatan yang tidak perlu.
Tetapi tentu saja tidak semua programmer benar - benar tahu apa yang mereka lakukan. Dan, khususnya, setiap programmer C (tidak peduli seberapa berpengalaman) melewati fase menjadi programmer C awal. Dan bahkan pemrogram C yang berpengalaman bisa ceroboh dan membuat kesalahan.
Akhirnya, pengalaman tidak hanya menunjukkan bahwa pemrogram melakukan kesalahan, tetapi bahwa kesalahan ini dapat memiliki konsekuensi nyata dan serius. Jika Anda membuat kesalahan, dan kompiler tidak memperingatkan Anda tentang hal itu, dan entah bagaimana program tidak segera crash atau melakukan sesuatu yang jelas salah karena kesalahan itu, kesalahan tersebut dapat bersembunyi di sana, disembunyikan, kadang-kadang selama bertahun-tahun, hingga menyebabkan masalah yang sangat besar.
Jadi ternyata, pada umumnya, peringatan adalah ide yang bagus. Bahkan pemrogram berpengalaman telah belajar (sebenarnya, " terutama pemrogram berpengalaman telah belajar") bahwa, secara seimbang, peringatan cenderung lebih baik daripada merugikan. Untuk setiap kali Anda melakukan kesalahan dengan sengaja dan peringatan itu mengganggu, mungkin ada setidaknya sepuluh kali Anda melakukan kesalahan karena kecelakaan dan peringatan itu menyelamatkan Anda dari masalah lebih lanjut. Dan sebagian besar peringatan dapat dinonaktifkan atau dikerjakan untuk beberapa saat ketika Anda benar-benar ingin melakukan hal yang "salah".
(Sebuah contoh klasik dari suatu "kesalahan" adalah tes if(a = b)
Sebagian besar waktu, ini adalah kesalahan, sehingga sebagian besar kompiler hari ini memperingatkan tentang hal itu -.. Beberapa bahkan secara default Tetapi jika Anda benar-benar ingin baik assign b
ke a
dan uji hasilnya, Anda dapat menonaktifkan peringatan dengan mengetik if((a = b))
.)
Pertanyaan kedua adalah, mengapa Anda ingin meminta kompiler untuk memperlakukan peringatan sebagai kesalahan? Saya akan mengatakan itu karena sifat manusia, khususnya, reaksi yang terlalu mudah untuk mengatakan "Oh, itu hanya peringatan, itu tidak begitu penting, saya akan membersihkannya nanti." Tetapi jika Anda suka menunda-nunda (dan saya tidak tahu tentang Anda, tapi saya suka menunda - nunda) mudah untuk menunda pembersihan pada dasarnya - dan jika Anda terbiasa mengabaikan peringatan, itu semakin mudah dan lebih mudah untuk melewatkan pesan peringatan penting yang ada di sana, tanpa disadari, di tengah semua yang Anda abaikan.
Jadi meminta kompiler untuk memperlakukan peringatan karena kesalahan adalah trik kecil yang bisa Anda mainkan sendiri untuk mengatasi kelemahan manusia ini.
Secara pribadi, saya tidak berkeras memperlakukan peringatan sebagai kesalahan. (Sebenarnya, jika saya jujur, saya dapat mengatakan bahwa saya hampir tidak pernah mengaktifkan opsi itu dalam pemrograman "pribadi" saya.) Tetapi Anda dapat yakin bahwa saya mengaktifkan opsi itu di tempat kerja, di mana panduan gaya kami (yang saya panduankan) menulis) mengamanatkan penggunaannya. Dan saya akan mengatakan - saya menduga sebagian besar programmer profesional akan mengatakan - bahwa setiap toko yang tidak memperlakukan peringatan karena kesalahan dalam C berperilaku tidak bertanggung jawab, tidak mematuhi praktik terbaik industri yang diterima secara umum.