NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
TH

เปรียบเทียบภาษาการเขียนโปรแกรม

เหตุใดทีมจึงย้ายไปที่ Rust

กรณีของ Rust นั้นมีสองประโยค: ความปลอดภัยของหน่วยความจำโดยไม่มีตัวรวบรวมขยะ และคอมไพเลอร์ที่เปลี่ยนความล้มเหลวของรันไทม์ทั้งหมดให้เป็นความล้มเหลวของบิลด์ กรณีเบื้องหลังเป็นกรณีสถาบัน: โครงการสำคัญ ๆ รวมถึงเคอร์เนล Linux (ตั้งแต่ปี 2022), ส่วนประกอบ Windows ของ Microsoft และโค้ดเบราว์เซอร์เช่น Firefox นำ Rust มาใช้อย่างแม่นยำเนื่องจากข้อบกพร่องที่ป้องกัน, ใช้งานฟรีหลังจากใช้งาน, บัฟเฟอร์โอเวอร์รัน และการแข่งขันข้อมูล เป็นคลาสที่สร้าง CVE มานานหลายทศวรรษใน C และ C ++ แต่การยอมรับอย่างตรงไปตรงมานั้นเป็นสิ่งที่เลือกได้: การย้ายข้อมูลจะให้ผลตอบแทนในกรณีที่บริการต่างๆ มีอายุการใช้งานยาวนาน มีความสำคัญด้านความปลอดภัย หรืออยู่ในเส้นทางที่ได้รับความนิยม และไม่ได้ให้ผลในกรณีที่แอป CRUD ขนาดเล็กจะใช้เวลาหลายสัปดาห์ในการเริ่มต้นใช้งานตัวตรวจสอบการยืมมากกว่าที่เคยได้รับกลับมา ทีมที่ประสบความสำเร็จกับ Rust มักจะปรับใช้ที่ขอบเขตก่อน ซึ่งการรับประกันและเรื่องราว FFI จะให้ผลมากที่สุด

ประเด็นสำคัญ

  1. การกล่าวอ้างด้านความปลอดภัยนั้นไม่ได้เป็นเพียงแรงบันดาลใจ: Rust กำจัดคลาสที่ไม่ใช้แล้วทิ้งและบัฟเฟอร์ล้นในเวลาคอมไพล์ และวิวัฒนาการที่ติดตาม RFC นั้นมีระเบียบวินัยอย่างผิดปกติ
  2. จุดยึดการรับเลี้ยงบุตรบุญธรรมมีความน่าเชื่อถือ: การรองรับเคอร์เนล Linux, ส่วนประกอบของ Windows, ส่วนประกอบของ Firefox และการเพิ่ม Rust แบบทดลองของ Curl ทั้งหมดนี้ทำให้เป็นจุดยืนของ C ในอดีต
  3. รหัสระบบ No-GC หมายความว่าไม่ต้องกังวลกับปุ่มหยุดชั่วคราวที่ส่วนท้าย: บริการที่เผชิญกับกำหนดเวลาแฝงที่เข้มงวดไม่ต้องรอให้ผู้รวบรวมกวาดล้าง
  4. ระบบประเภทเป็นเครื่องมือสร้างโมเดล: เครื่องสถานะ เอกสารที่แยกวิเคราะห์ และค่าคงที่อยู่ในแจงนับและประเภท แทนที่จะเกิดปัญหารันไทม์
  5. ระบบนิเวศแสดงให้เห็นถึงความเยาว์วัย: crates.io มีขนาดเล็กและยังใหม่ ดังนั้นความเสี่ยงในการพึ่งพาและการเปลี่ยนแปลงในการบำรุงรักษายังคงต้องการการตรวจสอบความปลอดภัยของคุณเอง
  6. การใช้ Rust จะประสบความสำเร็จเมื่อมีขอบเขต: ผูกไลบรารี C, แทนที่ hot loop, ทำให้ parser แข็งแกร่งขึ้น ในกรณีที่ต้องเปลี่ยนสินค้าขายส่งทั้งหมด thrash จะตามมา
  7. Cargo เป็นห่วงโซ่เครื่องมือที่ดีที่สุดในระดับเดียวกันอย่างแท้จริง: การทดสอบ เอกสาร การวัดประสิทธิภาพ และการจัดการการพึ่งพาพร้อมคอมไพเลอร์ในระบบนิเวศที่ไม่ค่อยตรงกัน
  8. การจ้างงานตรวจสอบความเป็นจริง: นักพัฒนา Rust นั้นหายากกว่าและมักจะชอบการทำงานของระบบมากกว่า ทีมที่มีความต้องการ CRUD ธรรมดาและไม่มีคำสั่งด้านระบบไม่ควรนำ Rust มาใช้กับแฟชั่น

บันทึกจากหน้างาน

ฉันคัดเลือกสองประโยค: ความปลอดภัยของหน่วยความจำโดยไม่มีตัวรวบรวมขยะ และคอมไพเลอร์ที่เปลี่ยนคลาสเหตุการณ์ที่เลวร้ายที่สุดของคุณให้เป็นข้อผิดพลาดของบิลด์ ฉันยังคงยอมรับการยอมรับของ Rust เท่านั้นเมื่อมีขอบเขตอยู่แล้ว

คำถามที่พบบ่อย

หน่วยความจำของ Rust ปลอดภัยจริงหรือ?

ใช่ เพื่อสนิมที่ปลอดภัย: ด้วยการทำเครื่องหมายและตรวจสอบขอบเขตของบล็อกที่ไม่ปลอดภัยและขอบเขต FFI ตัวตรวจสอบการยืมจะป้องกันคลาสของข้อบกพร่องที่ครอบงำฟีด C/C++ CVE ณ เวลารวบรวม

Rust จะมาแทนที่ C ทุกที่หรือไม่

ไม่ ทศวรรษของโครงสร้างพื้นฐาน C, ห่วงโซ่เครื่องมือแบบฝัง และโค้ดเคอร์เนลจะไม่ไปไหนทั้งนั้น และการนำ Rust มาใช้ก็มุ่งเป้าไปที่ขอบเขตที่ความปลอดภัยมีความสำคัญที่สุด

เมื่อใดที่ Rust เป็นความคิดที่ไม่ดี?

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

เหตุใดเคอร์เนล Linux จึงนำมาใช้?

เพราะข้อบกพร่องของเคอร์เนลของคลาสแบบใช้งานฟรีและคลาสการแข่งขันไม่เคยหยุดที่จะมาถึง ภาษาที่ป้องกันในขณะคอมไพล์คือแพตช์ระยะยาวที่ถูกที่สุด

Kinetikatech ช่วยเรื่อง เปรียบเทียบภาษาการเขียนโปรแกรม ได้อย่างไร

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

คุยกับช่างเทคนิค

เซิร์ฟเวอร์มีปัญหา? เว็บถูกแฮก? โหลดช้า?

ตอบสนองเหตุกรณ์ฉุกเฉินใน 30 นาที — ตลอด 24 ชั่วโมง ทุกวัน

ขอความช่วยเหลือฉุกเฉิน support@kinetikatech.com