Pilihan C++ oleh EloqDB Mencetuskan Perdebatan Sengit dalam Kalangan Pembangun Mengenai Keselamatan Memori vs Prestasi

Pasukan Komuniti BigGo
Pilihan C++ oleh EloqDB Mencetuskan Perdebatan Sengit dalam Kalangan Pembangun Mengenai Keselamatan Memori vs Prestasi

Pengumuman terkini oleh EloqData mengenai pembinaan pangkalan data teragih mereka EloqKV terutamanya menggunakan C++ telah mencetuskan perbincangan yang hangat dalam komuniti pembangun. Walaupun syarikat tersebut telah menggariskan sebab-sebab teknikal untuk memilih C++ berbanding alternatif moden seperti Rust, ramai pembangun mempersoalkan sama ada justifikasi ini benar-benar kukuh.

Kontroversi Keselamatan Memori Menjadi Tumpuan Utama

Bahagian paling hangat dalam perbincangan ini tertumpu pada isu keselamatan memori yang terkenal dalam C++. Ahli komuniti amat skeptikal terhadap dakwaan EloqData bahawa masalah memori boleh dikurangkan dengan ketara menggunakan amalan C++ moden. Ramai pembangun menunjukkan bahawa walaupun pengaturcara C++ yang berpengalaman kerap memperkenalkan pepijat halus yang hampir mustahil untuk dikesan semasa semakan kod.

Cabaran menjadi lebih kompleks apabila bekerja dengan pasukan besar. Pembangun menyatakan bahawa C++ memerlukan kewaspadaan berterusan dan pemahaman mendalam terhadap keseluruhan pangkalan kod untuk mengelakkan pepijat kerosakan memori. Seorang ahli komuniti menyerlahkan masalah asas: walaupun pengguna harian C++ masih melakukan kesilapan keselamatan memori, cuma kurang kerap berbanding pengguna sekali-sekala.

Hujah Integrasi Ekosistem Menghadapi Tentangan

EloqData mewajarkan pilihan C++ mereka dengan menyebut integrasi yang lebih baik dengan perpustakaan pangkalan data sedia ada dan API sistem peringkat rendah. Walau bagaimanapun, maklum balas komuniti mencadangkan bahawa alasan ini mungkin sudah lapuk. Beberapa pembangun berhujah bahawa kebolehoperasian Rust dengan perpustakaan C telah matang dengan ketara, menjadikan hujah integrasi kurang meyakinkan berbanding dahulu.

Perbincangan mendedahkan bahawa kebanyakan perpustakaan kritikal prestasi yang disebut oleh EloqData, seperti io_uring dan DPDK, sebenarnya mudah digunakan dari Rust. Ini telah menyebabkan sesetengah pihak mempersoalkan sama ada halangan teknikal untuk menggunakan Rust adalah seberapa ketara seperti yang dicadangkan dalam artikel tersebut.

Hujah Utama EloqData untuk C++:

  • Integrasi yang lebih baik dengan perpustakaan dan sumber pangkalan data C/C++ yang sedia ada
  • Sokongan asli untuk perpustakaan kritikal prestasi ( DPDK , RDMA , liburing , mimalloc )
  • Kestabilan bahasa jangka panjang dan rantaian alat yang matang untuk projek berdekad-dekad lamanya
  • Ekosistem yang luas dengan teknologi pangkalan data yang mantap untuk dimanfaatkan

Hujah Jangka Hayat Mendapat Reaksi Bercampur

Mungkin dakwaan paling kontroversi ialah C++ menawarkan kestabilan jangka panjang yang lebih baik untuk projek yang dijangka bertahan beberapa dekad. Ahli komuniti menunjukkan percanggahan yang menarik: walaupun EloqData berhujah untuk kestabilan C++, ramai menyatakan bahawa pangkalan kod C++ sebenarnya mengalami kerosakan bit yang teruk dari masa ke masa disebabkan oleh piawaian, perkakas, dan konvensyen yang sentiasa berubah.

Dari pengalaman saya tiada bahasa yang mengalami kerosakan bit dan kemerosotan yang lebih teruk daripada pangkalan kod C++. Piawaian bahasa telah berubah begitu banyak, perkakas, perpustakaan yang popular dan konvensyen yang ditetapkan... Ia memerlukan usaha yang luar biasa untuk mengekalkan pokok sumber yang diberikan supaya terkini.

Pemerhatian ini mencabar tanggapan bahawa C++ menyediakan asas yang lebih stabil untuk projek jangka panjang berbanding bahasa yang lebih baru dengan corak evolusi yang lebih konsisten.

Kepakaran Pasukan vs Merit Teknikal

Di sebalik hujah teknikal, ramai ahli komuniti mengesyaki sebab sebenar memilih C++ adalah lebih mudah: kebiasaan pasukan. Beberapa pembangun mencadangkan bahawa justifikasi teknikal yang panjang mungkin menyembunyikan keputusan yang lebih mudah berdasarkan kemahiran dan tahap keselesaan pasukan sedia ada.

Perspektif ini telah mencetuskan perbincangan yang lebih luas mengenai bila sesuai untuk berpegang pada teknologi yang biasa berbanding menggunakan alternatif yang lebih baru dan berpotensi lebih selamat. Sesetengah pihak berhujah bahawa pengakuan jujur mengenai kepakaran pasukan sebagai faktor penentu akan lebih berharga daripada rasionalisasi teknikal yang rumit.

Hujah Balas Komuniti:

  • Kebolehoperasian C dengan Rust telah matang dengan ketara, mengurangkan halangan integrasi
  • Isu keselamatan memori dalam C++ berterusan walaupun dengan amalan moden dan pembangun berpengalaman
  • Pangkalan kod C++ mengalami "reput bit" disebabkan piawaian dan perkakas yang sentiasa berkembang
  • Perpustakaan kritikal prestasi yang disebut mudah diakses dari Rust
  • Kebiasaan pasukan mungkin faktor sebenar di sebalik justifikasi teknikal
Blok-blok tersebut melambangkan tumpuan kepada bahasa pengaturcaraan C++, menonjolkan kebiasaan pasukan sebagai faktor utama dalam pemilihan teknologi
Blok-blok tersebut melambangkan tumpuan kepada bahasa pengaturcaraan C++, menonjolkan kebiasaan pasukan sebagai faktor utama dalam pemilihan teknologi

Implikasi Industri dan Pandangan Masa Depan

Perdebatan ini mencerminkan ketegangan yang lebih besar dalam komuniti pengaturcaraan sistem mengenai mengimbangi teknologi yang terbukti dengan alternatif berfokus keselamatan yang sedang berkembang. Walaupun sesetengah pembangun menghargai fleksibiliti dan kematangan ekosistem C++, yang lain melihat penggunaan berterusan C++ untuk projek baru sebagai penentangan terhadap kemajuan yang diperlukan dalam keselamatan perisian.

Perbincangan ini juga menyerlahkan tekanan yang semakin meningkat terhadap organisasi untuk mewajarkan pilihan teknologi dengan lebih teliti, terutamanya apabila pilihan tersebut melibatkan pertukaran antara produktiviti pembangun, keselamatan, dan prestasi. Memandangkan keselamatan perisian menjadi semakin kritikal, perdebatan ini berkemungkinan akan semakin sengit di seluruh industri.

Rujukan: Why We Develop EloqDB Mainly in C++