Kehilangan data lengkap sebuah syarikat permulaan daripada kajian psikologi telah mencetuskan perdebatan sengit tentang bagaimana reka bentuk bahasa pengaturcaraan mempengaruhi tingkah laku pembangun. Insiden ini berlaku apabila corak or die() yang popular dalam PHP menyebabkan skrip keluar sebelum menyimpan data penyelidikan, memaksa penyelidik memulakan semula keseluruhan kajian mereka.
Konsep kemudahan pengaturcaraan mencadangkan bahawa bahasa secara semula jadi membimbing pembangun ke arah corak pengekodan tertentu, sama seperti bagaimana pemegang pintu mencadangkan tarikan manakala plat tolak mencadangkan tolakan. Apabila corak-corak ini menggalakkan amalan yang lemah, malah pembangun yang berniat baik membuat kesilapan yang mahal.
Falsafah Pengendalian Ralat Memecahbelahkan Komuniti Pembangun
Perbincangan telah mendedahkan perpecahan tajam dalam cara bahasa pengaturcaraan yang berbeza mendekati pengendalian ralat. Peminat Go mempertahankan pemeriksaan ralat bertele-tele mereka, dengan berhujah ia memaksa pertimbangan eksplisit kes kegagalan. Sementara itu, pengkritik menunjuk kepada kod boilerplate berulang yang dicipta oleh ini.
Rust menawarkan jalan tengah dengan sistem jenis Result nya, yang secara sintaksis menghalang pembangun daripada mengabaikan ralat tanpa menambah kepanjangan yang berlebihan. Walau bagaimanapun, pembangun masih boleh memintas langkah keselamatan menggunakan fungsi unwrap() , pada asasnya mencipta semula tingkah laku or die() PHP .
Pengecualian diperiksa Java mewakili pendekatan lain, memaksa keputusan pengendalian ralat masa kompilasi. Namun pembangun sering mengatasi ini dengan menangkap pengecualian dan melemparkannya semula sebagai pengecualian masa jalan, mengalahkan mekanisme keselamatan.
Pendekatan Pengendalian Ralat Mengikut Bahasa:
Bahasa | Kaedah | Kelebihan | Kelemahan |
---|---|---|---|
PHP | Corak or die() |
Sintaks mudah | Menggalakkan keluar awal secara tidak wajar |
Go | Pulangan ralat eksplisit | Memaksa pertimbangan | Kod berulang yang bertele-tele |
Rust | Sistem jenis Result | Keselamatan masa kompil | Boleh dipintas dengan unwrap() |
Java | Pengecualian yang diperiksa | Penguatkuasaan masa kompil | Sering dielakkan |
Python | Pengecualian tidak diperiksa | Pengendalian fleksibel | Mudah mengabaikan ralat |
JavaScript | Berasaskan pengecualian | Corak yang biasa | Kegagalan tersirat mungkin berlaku |
Prinsip Lubang Kejayaan
Isu teras berpusat pada apa yang pembangun panggil lubang kejayaan - menjadikan tingkah laku yang betul sebagai laluan termudah ke hadapan. Bahasa yang menjadikan operasi berbahaya berasa semula jadi, seperti corak or die() PHP , mencipta perangkap untuk pembangun di bawah tekanan atau bekerja dengan tarikh akhir yang ketat.
Jika anda tidak menjadikannya mudah untuk melakukan perkara yang betul dan janggal untuk melakukan perkara yang salah, orang dengan niat baik akan melakukan perkara yang salah.
Pengecualian tidak diperiksa Python menunjukkan corak bermasalah lain, di mana pembangun secara kebiasaan menambah pengendalian ralat malas yang menyamarkan masalah sebenar. Konteks persekitaran juga penting - kod yang ditulis untuk hasil pantas sering menerima penelitian yang kurang daripada aplikasi yang menghadap pelanggan.
Melangkaui Penyelesaian Teknikal
Perdebatan meluas melangkaui ciri bahasa kepada budaya organisasi dan amalan semakan kod. Sesetengah pembangun melaporkan kekecewaan dengan pasukan yang mempertahankan amalan lemah dengan mengatakan ini adalah cara kami sentiasa melakukannya, mencadangkan bahawa penyelesaian teknikal sahaja tidak dapat menyelesaikan corak tingkah laku manusia.
Perbincangan menyerlahkan cabaran asas dalam pembangunan perisian: mengimbangi produktiviti pembangun dengan kebolehpercayaan sistem. Walaupun tiada bahasa menyelesaikan pengendalian ralat dengan sempurna, komuniti semakin mengiktiraf bahawa reka bentuk bahasa secara mendalam membentuk tingkah laku pembangun, sering dalam cara yang halus dan tidak dijangka.
Pengalaman syarikat permulaan berfungsi sebagai kisah amaran tentang ujian dalam persekitaran pengeluaran dan kos tersembunyi corak pengaturcaraan yang mudah tetapi berbahaya. Penyelesaian mereka - beralih kepada bahasa dengan kemudahan pengendalian ralat yang lebih baik - mencerminkan kesedaran yang semakin meningkat bahawa pilihan alat secara signifikan memberi kesan kepada kualiti perisian.
Rujukan: Programming affordance: when a language's patterns make it natural to make mistakes