Perbahasan berterusan mengenai keselamatan dan kerumitan bahasa pengaturcaraan telah mencapai tahap baru dengan perbincangan mengenai ciri-ciri tidak selamat Rust berbanding pengaturcaraan C. Walaupun artikel asal mendakwa bahawa Rust yang tidak selamat lebih sukar daripada C, komuniti pembangun telah memberikan pelbagai perspektif yang menggambarkan situasi yang lebih mendalam.
Pertukaran antara Keselamatan dan Kerumitan
Konsensus komuniti mendedahkan beberapa perkara penting tentang hubungan antara Rust dan C:
-
Safe Rust vs Safe C : Ramai pembangun berpendapat bahawa walaupun Rust mempunyai keluk pembelajaran yang lebih curam, menulis kod C yang betul adalah jauh lebih mencabar. Ketiadaan C yang selamat sangat ketara, kerana C tidak mempunyai jaminan keselamatan terbina yang disediakan oleh Rust secara lalai.
-
Keluk Pembelajaran : Menurut penyelidikan Google, pembangun biasanya memerlukan tiga hingga enam bulan untuk menjadi produktif dalam Rust, tetapi selepas itu tidak menunjukkan sebarang penalti produktiviti berbanding bahasa lain.
Pemeriksaan Model dan Pendekatan Alternatif
Satu pandangan berbeza muncul dari perbincangan tentang keupayaan keselamatan C melalui alat pemeriksaan model. Sesetengah pembangun menyokong alat seperti CBMC yang boleh membantu mengesan:
- Pelanggaran keselamatan memori
- Kelakuan tidak ditentukan berkaitan integer
- Limpahan penimbal
- Pertembungan antara bebenang
- Kerosakan tindanan/timbunan
Walau bagaimanapun, pengkritik menyatakan bahawa walaupun pemeriksaan model berkuasa, ia memerlukan alatan dan kepakaran tambahan yang tidak terbina dalam bahasa itu sendiri.
Implikasi Praktikal
Komuniti menekankan beberapa pertimbangan praktikal:
-
Pengurusan Kebergantungan : Sistem cargo Rust menerima pujian untuk pendekatan moden dalam pengurusan pakej, sementara pendekatan tradisional C dengan vendor manual dan fail header menghadapi kritikan.
-
Pengendalian Keserentakan : Jaminan keselamatan bebenang Rust melalui sistem jenisnya dilihat sebagai kelebihan yang ketara berbanding kebolehubahan kongsi C yang tidak diperiksa.
-
Pengurusan Memori : Tingkah laku peruntukan Vector dalam Rust mencetuskan perbincangan, dengan penjelasan bahawa Vec menggunakan peruntukan teramortisasi serupa dengan std::vector C++.
Masa Depan Pengaturcaraan Sistem
Perbincangan mendedahkan trend yang lebih luas dalam pengaturcaraan sistem:
- Penerimaan yang semakin meningkat terhadap keselamatan memori sebagai ciri kritikal
- Tumpuan yang meningkat terhadap ergonomik pembangun
- Pengiktirafan bahawa alat berbeza berkhidmat untuk tujuan berbeza
Walaupun Rust yang tidak selamat mungkin lebih kompleks daripada C dalam senario tertentu, komuniti secara umumnya bersetuju bahawa kerumitan ini mempunyai tujuan: membolehkan pengaturcaraan sistem yang lebih selamat dengan jaminan kukuh sambil mengekalkan prestasi.
Kesimpulan
Perbahasan ini menunjukkan bahawa walaupun ciri-ciri tidak selamat Rust mungkin memerlukan kerumitan awal yang lebih tinggi, pertukaran ini sering berbaloi untuk projek yang memerlukan jaminan kebolehpercayaan dan keselamatan yang tinggi. Kuncinya bukan sama ada Rust yang tidak selamat lebih sukar daripada C, tetapi memahami bila pendekatan setiap bahasa paling sesuai untuk tugas tertentu.