Introduction

Rust Logo

What is Rust?

Rust เป็นภาษา Programming สมัยใหม่ ถูกสร้างมาเพื่อแก้ไขปัญหาของภาษา C,C++ เช่น ความปลอดภัยเกี่ยวกับ Memory โดยไม่จำเป็นต้องใช้ Garbage Collector แต่ยังคงประสิทธิภาพสูงใกล้เคียงกับภาษา C,C++ อยู่ และสามารถทำงานแบบ Concurrent (Multi-threaded) ได้อย่างปลอดภัยและมีประสิทธิภาพ

ปัจจุบันเริ่มมีความนิยมในการนำ Rust มาใช้ในงานด้าน Web Development อย่างแพร่หลายมากขึ้น โดยมี Development Tools สมัยใหม่ๆที่เริ่มได้รับความนิยม เช่น

Maintainer

Rust ได้จัดตั้งเป็นองค์กรอิสระที่มีชื่อว่า Rust Foundation เพื่อดูแลและพัฒนาภาษา Rust อย่างเป็นระบบอย่างสม่ำเสมอ โดยได้รับการสนับสนุนจากบริษัทใหญ่ๆมากมาย เช่น Microsoft, AWS, Google, Meta, Huawei และ Mozilla เป็นต้น

Rust Foundation

Pros / Cons

Pros

  • ประสิทธิภาพสูง (ใกล้เคียงกับภาษา C,C++)
  • Memory Safety (Google และ Microsoft กล่าวว่า มากกว่า 70% ของปัญหา Software มาจากปัญหา Memory และปัญหา Software hacks จะหมดไปหากเราเปลี่ยนไปใช้ภาษา Rust - Ref.)
  • ไม่มี Garbage Collector
  • เป็นภาษา Strongly Typed
  • ออกแบบมาให้สามารถทำงานแบบ Concurrent (Multi-threaded) ได้อย่างปลอดภัย (Thread-safe)
  • สามารถ Compile เป็น Binary code ที่สามารถ Run บน OS Layer ได้โดยตรง (no runtime overhead)
  • มี Compiler ที่ฉลาดมากๆ สามารถตรวจสอบความถูกต้องได้ตั้งแต่ Compile Time รวมถึงให้คำแนะนำสำหรับ Potential Error Code ที่อาจเกิดขึ้นได้
  • ทำให้เราสามารถ Maintenance ในอนาคตได้อย่างมั่นใจมากขึ้น (จาก Strongly Typed + Compiler + Strict Rules ของ Rust)
  • มีระบบ Inline documentation ที่ดีเยี่ยม
  • มี Features ของภาษาสมัยใหม่ๆ มากมาย เช่น
    • Cargo - Package Manager: คล้ายกับ npm ใน Node.js สำหรับจัดการ Package และ Dependency ของ Project
    • Async/Await: คล้ายกับ async/await ใน JavaScript สำหรับการจัดการงานแบบ Asynchronous (แต่ใน Rust จะเป็นการทำงานแบบ Multi-threaded)
    • Macros
    • Generics
    • Traits
    • Pattern Matching
    • Smart Pointers
    • อื่นๆ

Cons

  • มี Learning curve ค่อนข้างสูงในตอนเริ่มต้น
    • เนื่องจากมี Features สมัยใหม่ๆค่อนข้างมาก เราจะเจอสิ่งใหม่ๆที่แปลกตามากขึ้น จึงทำให้ต้องใช้เวลาศึกษามากขึ้น
    • เนื่องจากเป็นภาษา Safety สูง จึงจำเป็นต้องมี Rules ที่เคร่งครัดมากขึ้น
  • ใช้เวลาในการ Compile ที่ค่อนข้างนาน (เนื่องจากมีกระบวนการตรวจสอบความถูกต้องทางด้านความปลอดภัยที่เข้มข้น และการ optimization ที่ละเอียด)
  • ความยืดหยุ่นในการเขียน Code น้อยลง เนื่องจากเป็นภาษา Strongly Typed และมี Rules ที่ต้องตรวจสอบความปลอดภัย
  • ใช้งาน JSON ค่อนข้างยุ่งยาก เนื่องจากต้องมีการแปลงข้อมูลไปมาระหว่าง JSON และ struct ในภาษา Rust

Other Showcases