เปรียบเทียบภาษาการเขียนโปรแกรม
เหตุใดทีมจึงย้ายไปที่ Rust
กรณีของ Rust นั้นมีสองประโยค: ความปลอดภัยของหน่วยความจำโดยไม่มีตัวรวบรวมขยะ และคอมไพเลอร์ที่เปลี่ยนความล้มเหลวของรันไทม์ทั้งหมดให้เป็นความล้มเหลวของบิลด์ กรณีเบื้องหลังเป็นกรณีสถาบัน: โครงการสำคัญ ๆ รวมถึงเคอร์เนล Linux (ตั้งแต่ปี 2022), ส่วนประกอบ Windows ของ Microsoft และโค้ดเบราว์เซอร์เช่น Firefox นำ Rust มาใช้อย่างแม่นยำเนื่องจากข้อบกพร่องที่ป้องกัน, ใช้งานฟรีหลังจากใช้งาน, บัฟเฟอร์โอเวอร์รัน และการแข่งขันข้อมูล เป็นคลาสที่สร้าง CVE มานานหลายทศวรรษใน C และ C ++ แต่การยอมรับอย่างตรงไปตรงมานั้นเป็นสิ่งที่เลือกได้: การย้ายข้อมูลจะให้ผลตอบแทนในกรณีที่บริการต่างๆ มีอายุการใช้งานยาวนาน มีความสำคัญด้านความปลอดภัย หรืออยู่ในเส้นทางที่ได้รับความนิยม และไม่ได้ให้ผลในกรณีที่แอป CRUD ขนาดเล็กจะใช้เวลาหลายสัปดาห์ในการเริ่มต้นใช้งานตัวตรวจสอบการยืมมากกว่าที่เคยได้รับกลับมา ทีมที่ประสบความสำเร็จกับ Rust มักจะปรับใช้ที่ขอบเขตก่อน ซึ่งการรับประกันและเรื่องราว FFI จะให้ผลมากที่สุด
ประเด็นสำคัญ
- การกล่าวอ้างด้านความปลอดภัยนั้นไม่ได้เป็นเพียงแรงบันดาลใจ: Rust กำจัดคลาสที่ไม่ใช้แล้วทิ้งและบัฟเฟอร์ล้นในเวลาคอมไพล์ และวิวัฒนาการที่ติดตาม RFC นั้นมีระเบียบวินัยอย่างผิดปกติ
- จุดยึดการรับเลี้ยงบุตรบุญธรรมมีความน่าเชื่อถือ: การรองรับเคอร์เนล Linux, ส่วนประกอบของ Windows, ส่วนประกอบของ Firefox และการเพิ่ม Rust แบบทดลองของ Curl ทั้งหมดนี้ทำให้เป็นจุดยืนของ C ในอดีต
- รหัสระบบ No-GC หมายความว่าไม่ต้องกังวลกับปุ่มหยุดชั่วคราวที่ส่วนท้าย: บริการที่เผชิญกับกำหนดเวลาแฝงที่เข้มงวดไม่ต้องรอให้ผู้รวบรวมกวาดล้าง
- ระบบประเภทเป็นเครื่องมือสร้างโมเดล: เครื่องสถานะ เอกสารที่แยกวิเคราะห์ และค่าคงที่อยู่ในแจงนับและประเภท แทนที่จะเกิดปัญหารันไทม์
- ระบบนิเวศแสดงให้เห็นถึงความเยาว์วัย: crates.io มีขนาดเล็กและยังใหม่ ดังนั้นความเสี่ยงในการพึ่งพาและการเปลี่ยนแปลงในการบำรุงรักษายังคงต้องการการตรวจสอบความปลอดภัยของคุณเอง
- การใช้ Rust จะประสบความสำเร็จเมื่อมีขอบเขต: ผูกไลบรารี C, แทนที่ hot loop, ทำให้ parser แข็งแกร่งขึ้น ในกรณีที่ต้องเปลี่ยนสินค้าขายส่งทั้งหมด thrash จะตามมา
- Cargo เป็นห่วงโซ่เครื่องมือที่ดีที่สุดในระดับเดียวกันอย่างแท้จริง: การทดสอบ เอกสาร การวัดประสิทธิภาพ และการจัดการการพึ่งพาพร้อมคอมไพเลอร์ในระบบนิเวศที่ไม่ค่อยตรงกัน
- การจ้างงานตรวจสอบความเป็นจริง: นักพัฒนา Rust นั้นหายากกว่าและมักจะชอบการทำงานของระบบมากกว่า ทีมที่มีความต้องการ CRUD ธรรมดาและไม่มีคำสั่งด้านระบบไม่ควรนำ Rust มาใช้กับแฟชั่น
บันทึกจากหน้างาน
ฉันคัดเลือกสองประโยค: ความปลอดภัยของหน่วยความจำโดยไม่มีตัวรวบรวมขยะ และคอมไพเลอร์ที่เปลี่ยนคลาสเหตุการณ์ที่เลวร้ายที่สุดของคุณให้เป็นข้อผิดพลาดของบิลด์ ฉันยังคงยอมรับการยอมรับของ Rust เท่านั้นเมื่อมีขอบเขตอยู่แล้ว
คำถามที่พบบ่อย
หน่วยความจำของ Rust ปลอดภัยจริงหรือ?
ใช่ เพื่อสนิมที่ปลอดภัย: ด้วยการทำเครื่องหมายและตรวจสอบขอบเขตของบล็อกที่ไม่ปลอดภัยและขอบเขต FFI ตัวตรวจสอบการยืมจะป้องกันคลาสของข้อบกพร่องที่ครอบงำฟีด C/C++ CVE ณ เวลารวบรวม
Rust จะมาแทนที่ C ทุกที่หรือไม่
ไม่ ทศวรรษของโครงสร้างพื้นฐาน C, ห่วงโซ่เครื่องมือแบบฝัง และโค้ดเคอร์เนลจะไม่ไปไหนทั้งนั้น และการนำ Rust มาใช้ก็มุ่งเป้าไปที่ขอบเขตที่ความปลอดภัยมีความสำคัญที่สุด
เมื่อใดที่ Rust เป็นความคิดที่ไม่ดี?
แอป CRUD ขนาดเล็ก สคริปต์แบบใช้ครั้งเดียว และทีมที่ไม่มีข้อกำหนดของระบบ: ทางลาดตรวจสอบการยืมและช่องทางการจ้างงานมีค่าใช้จ่ายมากกว่าความปลอดภัยที่เคยช่วยคุณได้
เหตุใดเคอร์เนล Linux จึงนำมาใช้?
เพราะข้อบกพร่องของเคอร์เนลของคลาสแบบใช้งานฟรีและคลาสการแข่งขันไม่เคยหยุดที่จะมาถึง ภาษาที่ป้องกันในขณะคอมไพล์คือแพตช์ระยะยาวที่ถูกที่สุด
Kinetikatech ช่วยเรื่อง เปรียบเทียบภาษาการเขียนโปรแกรม ได้อย่างไร
นี่คือสิ่งที่เราทำทุกวัน: ภาษาสำหรับงานระบบ การเขียนสคริปต์ และบริการ เปรียบเทียบกับสิ่งที่สำคัญจริง ๆ ในการผลิต: การรับประกันความปลอดภัย ความเร็วเบื้องต้น ใครที่คุณสามารถจ้างได้ และความเจ็บปวดของบริการที่เกิดขึ้นในการปรับใช้และแพตช์ บริการ การจัดการเซิร์ฟเวอร์และการบำรุงรักษาเว็บไซต์ ของเราดูแลครบวงจร ตั้งแต่ประเมิน ลงมือทำ ติดตาม 24 ชั่วโมง ไปจนถึงรับเรื่องฉุกเฉินภายใน 30 นาที