การเลือกใช้ C++ ของ EloqDB จุดประกายการถอกเถียงอย่างรุนแรงของนักพัฒนาเรื่องความปลอดภัยหน่วยความจำ เทียบกับ ประสิทธิภาพ

ทีมชุมชน BigGo
การเลือกใช้ C++ ของ EloqDB จุดประกายการถอกเถียงอย่างรุนแรงของนักพัฒนาเรื่องความปลอดภัยหน่วยความจำ เทียบกับ ประสิทธิภาพ

การประกาศล่าสุดของ EloqData เกี่ยวกับการสร้างฐานข้อมูลแบบกระจาย EloqKV โดยใช้ C++ เป็นหลัก ได้จุดประกายการอภิปรายอย่างร้อนแรงในชุมชนนักพัฒนา แม้ว่าบริษัทจะได้อธิบายเหตุผลทางเทคนิคสำหรับการเลือกใช้ C++ แทนทางเลือกที่ทันสมัยกว่าอย่าง Rust แต่นักพัฒนาหลายคนกำลังตั้งคำถามว่าเหตุผลเหล่านี้จะยืนหยัดได้จริงหรือไม่

ความขัดแย้งเรื่องความปลอดภัยหน่วยความจำขึ้นเป็นจุดสนใจหลัก

ส่วนที่ถกเถียงกันอย่างรุนแรงที่สุดมุ่งเน้นไปที่ปัญหาความปลอดภัยหน่วยความจำที่เป็นที่รู้จักกันดีของ C++ สมาชิกในชุมชนแสดงความสงสัยเป็นพิเศษต่อการอ้างของ EloqData ที่ว่าปัญหาหน่วยความจำสามารถลดลงได้อย่างมีนัยสำคัญด้วยการใช้แนวทางปฏิบัติ C++ สมัยใหม่ นักพัฒนาหลายคนชี้ให้เห็นว่าแม้แต่โปรแกรมเมอร์ C++ ที่มีประสบการณ์ยังคงสร้างบั๊กที่ซับซ้อนซึ่งเกือบจะเป็นไปไม่ได้ที่จะตรวจพบระหว่างการตรวจสอบโค้ด

ความท้าทายจะซับซ้อนยิ่งขึ้นเมื่อทำงานกับทีมขนาดใหญ่ นักพัฒนาสังเกตว่า C++ ต้องการความระมัดระวังอย่างต่อเนื่องและความเข้าใจอย่างลึกซึ้งของโค้ดเบสทั้งหมดเพื่อหลีกเลี่ยงการสร้างบั๊กที่ทำให้หน่วยความจำเสียหาย สมาชิกชุมชนคนหนึ่งเน้นย้ำปัญหาพื้นฐาน: แม้แต่ผู้ใช้ C++ ประจำวันยังคงทำผิดพลาดเรื่องความปลอดภัยหน่วยความจำ เพียงแต่น้อยกว่าผู้ใช้เป็นครั้งคราวเท่านั้น

การโต้แย้งเรื่องการผสานรวมระบบนิเวศถูกคัดค้าน

EloqData ให้เหตุผลสำหรับการเลือก C++ โดยอ้างถึงการผสานรวมที่ดีกว่ากับไลบรารีฐานข้อมูลที่มีอยู่และ API ระบบระดับต่ำ อย่างไรก็ตาม ความคิดเห็นจากชุมชนชี้ให้เห็นว่าเหตุผลนี้อาจล้าสมัยแล้ว นักพัฒนาหลายคนโต้แย้งว่าความสามารถในการทำงานร่วมกันของ Rust กับไลบรารี C ได้พัฒนาขึ้นอย่างมีนัยสำคัญ ทำให้การโต้แย้งเรื่องการผสานรวมไม่น่าสนใจเท่าที่เคยเป็น

การอภิปรายเผยให้เห็นว่าไลบรารีที่มีความสำคัญต่อประสิทธิภาพหลายตัวที่ EloqData กล่าวถึง เช่น io_uring และ DPDK จริงๆ แล้วใช้งานจาก Rust ได้อย่างตรงไปตรงมา สิ่งนี้ทำให้บางคนตั้งคำถามว่าอุปสรรคทางเทคนิคในการใช้ Rust มีความสำคัญมากเท่าที่บทความแนะนำหรือไม่

ข้อโต้แย้งหลักของ EloqData สำหรับ C++:

  • การผสานรวมที่ดีกว่ากับไลบรารีและทรัพยากรฐานข้อมูล C/C++ ที่มีอยู่
  • การสนับสนุนแบบ native สำหรับไลบรารีที่ต้องการประสิทธิภาพสูง ( DPDK , RDMA , liburing , mimalloc )
  • ความเสถียรของภาษาในระยะยาวและ toolchain ที่เป็นผู้ใหญ่สำหรับโปรเจกต์ที่ใช้เวลาหลายทศวรรษ
  • ระบบนิเวศที่กว้างขวางของเทคโนโลยีฐานข้อมูลที่ก่อตั้งขึ้นแล้วเพื่อใช้ประโยชน์

การโต้แย้งเรื่องความยั่งยืนได้รับปฏิกิริยาที่หลากหลาย

บางทีการอ้างที่ถกเถียงกันมากที่สุดคือ C++ มีความเสถียรระยะยาวที่ดีกว่าสำหรับโครงการที่คาดว่าจะใช้เวลานานหลายทศวรรษ สมาชิกชุมชนชี้ให้เห็นความขัดแย้งที่น่าสนใจ: ในขณะที่ EloqData โต้แย้งเพื่อความเสถียรของ C++ หลายคนสังเกตว่าโค้ดเบส C++ จริงๆ แล้วประสบปัญหาการเสื่อมสลายอย่างรุนแรงเมื่อเวลาผ่านไป เนื่องจากมาตรฐาน เครื่องมือ และแนวทางปฏิบัติที่เปลี่ยนแปลงอย่างต่อเนื่อง

จากประสบการณ์ของผม ไม่มีภาษาใดที่เสื่อมสลายและเสื่อมโทรมได้แย่กว่าโค้ดเบส C++ มาตรฐานภาษาได้เปลี่ยนแปลงไปมาก เครื่องมือ ไลบรารีที่เป็นที่นิยม และแนวทางปฏิบัติที่ยอมรับ... ต้องใช้ความพยายามอย่างมหาศาลในการรักษาซอร์สทรีที่กำหนดให้ทันสมัย

การสังเกตนี้ท้าทายแนวคิดที่ว่า C++ ให้รากฐานที่เสถียรกว่าสำหรับโครงการระยะยาวเมื่อเปรียบเทียบกับภาษาใหม่ที่มีรูปแบบการพัฒนาที่สม่ำเสมอกว่า

ความเชี่ยวชาญของทีม เทียบกับ คุณค่าทางเทคนิค

ใต้การโต้แย้งทางเทคนิค สมาชิกชุมชนหลายคนสงสัยว่าเหตุผลที่แท้จริงสำหรับการเลือก C++ นั้นง่ายกว่า: ความคุ้นเคยของทีม นักพัฒนาหลายคนแนะนำว่าการให้เหตุผลทางเทคนิคที่ยาวเหยียดอาจปกปิดการตัดสินใจที่ตรงไปตรงมากว่าซึ่งอิงจากทักษะและระดับความสะดวกสบายของทีมที่มีอยู่

มุมมองนี้ได้จุดประกายการอภิปรายที่กว้างขึ้นเกี่ยวกับเมื่อไหร่ที่จะสมเหตุสมผลในการยึดติดกับเทคโนโลยีที่คุ้นเคย เทียบกับ การนำทางเลือกใหม่ที่อาจปลอดภัยกว่ามาใช้ บางคนโต้แย้งว่าการยอมรับอย่างซื่อสัตย์ถึงความเชี่ยวชาญของทีมเป็นปัจจัยตัดสินใจจะมีค่ากว่าการหาเหตุผลทางเทคนิคที่ซับซ้อน

ข้อโต้แย้งจากชุมชน:

  • ความสามารถในการทำงานร่วมกับ C ของ Rust ได้พัฒนาขึ้นอย่างมาก ทำให้อุปสรรคในการรวมระบบลดลง
  • ปัญหาความปลอดภัยของหน่วยความจำใน C++ ยังคงมีอยู่แม้จะใช้แนวทางสมัยใหม่และมีนักพัฒนาที่มีประสบการณ์
  • โค้ดเบสของ C++ ประสบปัญหา "bit rot" เนื่องจากมาตรฐานและเครื่องมือที่พัฒนาอย่างต่อเนื่อง
  • ไลบรารีที่สำคัญต่อประสิทธิภาพที่กล่าวถึงสามารถเข้าถึงได้ง่ายจาก Rust
  • ความคุ้นเคยของทีมอาจเป็นปัจจัยตัดสินใจที่แท้จริงเบื้องหลังเหตุผลทางเทคนิค
บล็อกเหล่านี้เป็นสัญลักษณ์ของการมุ่งเน้นไปที่ภาษาโปรแกรม C++ โดยเน้นความคุ้นเคยของทีมงานเป็นปัจจัยสำคัญในการเลือกใช้เทคโนโลยี
บล็อกเหล่านี้เป็นสัญลักษณ์ของการมุ่งเน้นไปที่ภาษาโปรแกรม C++ โดยเน้นความคุ้นเคยของทีมงานเป็นปัจจัยสำคัญในการเลือกใช้เทคโนโลยี

ผลกระทบต่ออุตสาหกรรมและแนวโน้มอนาคต

การถกเถียงสะท้อนความตึงเครียดที่ใหญ่กว่าในชุมชนการเขียนโปรแกรมระบบเกี่ยวกับการสร้างสมดุลระหว่างเทคโนโลยีที่พิสูจน์แล้วกับทางเลือกที่เน้นความปลอดภัยที่กำลังเกิดขึ้น ในขณะที่นักพัฒนาบางคนชื่นชมความยืดหยุ่นและความเป็นผู้ใหญ่ของระบบนิเวศของ C++ คนอื่นๆ มองว่าการนำ C++ มาใช้อย่างต่อเนื่องสำหรับโครงการใหม่เป็นการต่อต้านความก้าวหน้าที่จำเป็นในความปลอดภัยซอฟต์แวร์

การอภิปรายยังเน้นย้ำแรงกดดันที่เพิ่มขึ้นต่อองค์กรในการให้เหตุผลสำหรับการเลือกเทคโนโลยีอย่างเข้มงวดมากขึ้น โดยเฉพาะเมื่อการเลือกเหล่านั้นเกี่ยวข้องกับการแลกเปลี่ยนระหว่างประสิทธิภาพของนักพัฒนา ความปลอดภัย และประสิทธิภาพ เมื่อความปลอดภัยซอฟต์แวร์มีความสำคัญมากขึ้นเรื่อยๆ การถกเถียงเหล่านี้น่าจะรุนแรงขึ้นทั่วทั้งอุตสาหกรรม

อ้างอิง: Why We Develop EloqDB Mainly in C++