|
2 | 2 |
|
3 | 3 | ## Rust คืออะไร? |
4 | 4 |
|
5 | | -**Rust** เป็นภาษาโปรแกรมระดับ Systems Programming ที่ถูกออกแบบมาเพื่อให้มี **ประสิทธิภาพสูง**, **ปลอดภัย**, และ **เชื่อถือได้** โดยไม่ต้องมี Garbage Collector |
| 5 | +**Rust** เป็นภาษาโปรแกรมระดับ Systems Programming ที่มุ่งเน้น 3 เรื่องหลัก: **ความปลอดภัย (Safety)**, **ความเร็ว (Speed)**, และ **ความสามารถในการทำงานพร้อมกัน (Concurrency)** โดยไม่ต้องมี Garbage Collector |
6 | 6 |
|
7 | | -### 🎯 จุดเด่นของ Rust |
| 7 | +### 🧠 ปรัชญาของ Rust (The Three Pillars) |
8 | 8 |
|
9 | | -| จุดเด่น | คำอธิบาย | |
10 | | -|---------|----------| |
11 | | -| **Memory Safety** | ไม่มี null pointers, buffer overflows, data races - ตรวจจับตอน compile | |
12 | | -| **Zero-Cost Abstractions** | เขียนโค้ด high-level แต่ประสิทธิภาพเท่า C/C++ | |
13 | | -| **No Garbage Collector** | ใช้ระบบ Ownership แทน GC ทำให้ latency ต่ำและคาดเดาได้ | |
14 | | -| **Fearless Concurrency** | Compiler ป้องกัน data races ทำให้เขียนโค้ด parallel ได้อย่างมั่นใจ | |
15 | | -| **Modern Tooling** | Cargo (package manager), Rustfmt, Clippy ทำให้พัฒนาได้ง่าย | |
| 9 | +Rust ถูกออกแบบมาเพื่อแก้ปัญหา Trade-off เดิมๆ ที่ว่า *"ถ้าอยากได้ความปลอดภัย ต้องยอมแลกด้วยความเร็ว"* ด้วย 3 เสาหลัก: |
16 | 10 |
|
17 | | -### 🆚 Rust เทียบกับภาษาอื่น |
| 11 | +#### 1. Memory Safety โดยไม่มี Garbage Collector |
| 12 | + |
| 13 | +Rust ตรวจสอบความถูกต้องของหน่วยความจำตั้งแต่ตอน Compile (ผ่านระบบ **Ownership**) ไม่ต้องมี GC มาถ่วงตอน Runtime |
| 14 | + |
| 15 | +| แนวทาง | ภาษา | ข้อดี/ข้อเสีย | |
| 16 | +|--------|------|---------------| |
| 17 | +| Manual Memory | C/C++ | เร็วมาก แต่เสี่ยง Buffer Overflows / Memory Leaks | |
| 18 | +| Garbage Collection | Java, Go, Python | ปลอดภัย แต่กินแรมและมีช่วงหยุด (GC Pause) | |
| 19 | +| **Ownership System** | **Rust** | **ปลอดภัย + เร็ว** (Zero Runtime Overhead) ✅ | |
| 20 | + |
| 21 | +#### 2. Zero-Cost Abstractions |
| 22 | + |
| 23 | +คุณสามารถเขียนโค้ด High-level (เช่น Iterators, Closures, Generics) ที่อ่านง่าย แต่เมื่อ Compile แล้วจะได้ Machine Code ที่เร็วเท่ากับการเขียนแบบ Low-level ด้วยมือ |
| 24 | + |
| 25 | +> 📌 **กฎเหล็ก:** *"สิ่งที่คุณไม่ได้ใช้ คุณไม่ต้องจ่าย และสิ่งที่คุณใช้ คุณไม่สามารถเขียนเองด้วยมือให้ดีกว่าที่ภาษาทำให้ได้"* |
| 26 | +
|
| 27 | +#### 3. Fearless Concurrency |
| 28 | + |
| 29 | +Rust Compiler ช่วยป้องกัน **Data Races** ตั้งแต่ตอนเขียนโค้ด ทำให้นักพัฒนา "กล้า" เขียนโปรแกรมที่ทำงานขนานกัน (Multi-threading) ได้อย่างเต็มประสิทธิภาพโดยไม่ต้องกลัวบั๊กที่หาเจอยาก |
| 30 | + |
| 31 | +--- |
| 32 | + |
| 33 | +### 🆚 เปรียบเทียบกับภาษาอื่น |
18 | 34 |
|
19 | 35 | | ด้าน | C/C++ | Go | Python | Rust | |
20 | 36 | |------|-------|-----|--------|------| |
|
26 | 42 |
|
27 | 43 | > 💡 **สรุป:** Rust ให้ความเร็วเท่า C/C++ แต่ปลอดภัยเท่า Go/Java โดยไม่ต้องมี Garbage Collector! |
28 | 44 |
|
29 | | - |
30 | | -### 📜 ประวัติความเป็นมา |
31 | | - |
32 | | -**Graydon Hoare** พนักงานของ Mozilla เริ่มพัฒนา Rust เป็นโปรเจกต์ส่วนตัวในปี 2006 หลังจากนั้น Mozilla เห็นศักยภาพจึงเข้ามาสนับสนุนอย่างเป็นทางการในปี 2009 |
33 | | - |
34 | | -#### 🗓️ Rust Timeline |
35 | | - |
36 | | -| ปี | เหตุการณ์สำคัญ | |
37 | | -|----|---------------| |
38 | | -| **2006** | Graydon Hoare เริ่มพัฒนา Rust เป็น side project (ตั้งชื่อตาม rust fungi ที่มีความ resilient) | |
39 | | -| **2009** | Mozilla สนับสนุน Rust อย่างเป็นทางการ, ใช้พัฒนา Servo browser engine | |
40 | | -| **2010** | ประกาศ Rust ต่อสาธารณะ | |
41 | | -| **2015** | 🎉 **Rust 1.0 เปิดตัว!** (15 พฤษภาคม 2015) - รับประกัน backward compatibility | |
42 | | -| **2020** | Mozilla เลิกจ้างพนักงาน รวมถึงทีม Rust (COVID-19) | |
43 | | -| **2021** | ก่อตั้ง **Rust Foundation** สนับสนุนโดย AWS, Google, Microsoft, Mozilla, Huawei | |
44 | | -| **2024** | 🐧 Rust เข้าสู่ **Linux Kernel** อย่างเป็นทางการ - ภาษาที่ 2 หลังจาก C ในประวัติศาสตร์ Linux | |
45 | | - |
46 | | -> 💡 **ความสำเร็จ:** Rust ได้รับเลือกเป็น **"Most Loved Language"** ใน Stack Overflow Survey ติดต่อกัน 8 ปี (2016-2023)! |
47 | | -
|
48 | 45 | --- |
49 | 46 |
|
50 | 47 | ### ทำไมต้องเรียน Rust? |
51 | 48 |
|
52 | | -| เหตุผล | คำอธิบาย | |
53 | | -| ----------------------------- | ------------------------------------------- | |
54 | | -| 🚀 **ประสิทธิภาพสูง** | เร็วเท่า C/C++ แต่ปลอดภัยกว่า | |
55 | | -| 🛡️ **Memory Safety** | ไม่มี null pointer, ไม่มี data race | |
56 | | -| 🔧 **Zero-cost Abstractions** | เขียนโค้ดสวยงามโดยไม่เสียประสิทธิภาพ | |
57 | | -| 📦 **Modern Tooling** | Cargo ทำให้จัดการ dependencies ง่าย | |
58 | | -| 💼 **อุตสาหกรรมต้องการ** | Microsoft, Google, Amazon, Discord ใช้ Rust | |
59 | | -| 🏆 **Most Loved Language** | อันดับ 1 ใน Stack Overflow Survey หลายปีติด | |
| 49 | +นอกเหนือจากความเทพทางเทคนิคแล้ว นี่คือเหตุผลที่คุณควรลงทุนเวลากับภาษานี้: |
| 50 | + |
| 51 | +| เหตุผล | คำอธิบาย | |
| 52 | +|--------|----------| |
| 53 | +| 📦 **Modern Tooling** | `Cargo` คือ Package Manager ที่ดีที่สุดตัวหนึ่งของโลก จัดการ dependencies, build, test, docs ได้ในตัวเดียว | |
| 54 | +| 💼 **อุตสาหกรรมต้องการ** | บริษัทระดับโลก (Microsoft, Google, AWS, Meta) ใช้ Rust ใน Core Infrastructure และต้องการคนเขียนเป็น | |
| 55 | +| 🏆 **Most Loved Language** | ครองแชมป์ใน Stack Overflow Survey ติดต่อกันหลายปี นักพัฒนาที่ได้ลองใช้มักจะติดใจ | |
| 56 | +| � **Strict Compiler** | Compiler ที่จู้จี้แต่ใจดี เหมือนมี Senior Dev คอยรีวิวและสอนโค้ดให้คุณตลอดเวลา | |
| 57 | + |
60 | 58 |
|
61 | 59 | ### Rust เหมาะกับงานอะไร? |
62 | 60 |
|
|
86 | 84 |
|
87 | 85 | > 💡 **รู้หรือไม่?** Discord เคยมีปัญหา latency spike ทุก 2 นาที เมื่อเปลี่ยนจาก Go เป็น Rust ปัญหาหายไปเลย! |
88 | 86 |
|
89 | | -### 🧠 Rust Philosophy |
90 | | - |
91 | | -ปรัชญาของ Rust ถูกออกแบบมาเพื่อแก้ปัญหา Trade-off เดิมๆ ที่ว่า "ถ้าอยากได้ความปลอดภัย ต้องยอมแลกด้วยความเร็ว" |
92 | | - |
93 | | -#### 3 เสาหลัก (The Three Pillars) |
94 | | - |
95 | | -**1. Memory Safety โดยไม่มี Garbage Collector** |
96 | | - |
97 | | -| แนวทาง | ภาษา | ข้อดี/ข้อเสีย | |
98 | | -|--------|------|---------------| |
99 | | -| Manual Memory | C/C++ | เร็วมาก แต่เสี่ยง Buffer Overflows | |
100 | | -| Garbage Collection | Java, Go | ปลอดภัย แต่ต้องเสียทรัพยากร | |
101 | | -| **Ownership System** | **Rust** | **ปลอดภัย + เร็ว** ✅ | |
102 | | - |
103 | | -> Rust ตรวจสอบความถูกต้องของหน่วยความจำตั้งแต่ตอน Compile ไม่ต้องมี GC มาถ่วงตอน Runtime |
104 | | -
|
105 | | -**2. Zero-Cost Abstractions** |
106 | | - |
107 | | -เขียนโค้ด High-level (Iterators, Closures, Generics) แต่เมื่อแปลงเป็นภาษาเครื่องแล้ว เร็วเท่า C/Assembly |
108 | | - |
109 | | -> 📌 **กฎเหล็ก:** "สิ่งที่คุณไม่ได้ใช้ คุณไม่ต้องจ่าย และสิ่งที่คุณใช้ คุณไม่สามารถเขียนเองด้วยมือให้ดีกว่าที่ภาษาทำให้ได้" |
110 | | -
|
111 | | -**3. Fearless Concurrency** |
| 87 | +--- |
112 | 88 |
|
113 | | -Compiler ไม่อนุญาตให้โค้ดที่เสี่ยงต่อ Data Race ผ่านการ Compile ทำให้นักพัฒนา "กล้า" เขียนโปรแกรมที่ซับซ้อนและทำงานขนานกันได้เต็มประสิทธิภาพ |
| 89 | +### 📜 ประวัติความเป็นมา |
114 | 90 |
|
115 | | -#### ปรัชญาการออกแบบเพิ่มเติม |
| 91 | +**Graydon Hoare** พนักงานของ Mozilla เริ่มพัฒนา Rust เป็นโปรเจกต์ส่วนตัวในปี 2006 (ตั้งชื่อตามเชื้อราสนิมที่มีความทนทาน) ก่อนที่ Mozilla จะเห็นศักยภาพและสนับสนุนอย่างเป็นทางการในปี 2009 |
116 | 92 |
|
117 | | -| หลักการ | ความหมาย | |
118 | | -|---------|----------| |
119 | | -| **Strictness is Kindness** | Compiler จู้จี้มาก = "เจ็บตอน Compile ดีกว่าไปพังตอนรันบนเครื่องลูกค้า" | |
120 | | -| **Explicit over Implicit** | ไม่ทำ Magic ลับหลัง บังคับจัดการ `Result`/`Option` เสมอ | |
121 | | -| **Stability without Stagnation** | โค้ด 5 ปีก่อนยังรันได้ในเวอร์ชันปัจจุบัน | |
| 93 | +#### 🗓️ Rust Timeline |
122 | 94 |
|
123 | | -> 🎯 **Mission:** *"Empowering everyone to build reliable and efficient software"* |
| 95 | +| ปี | เหตุการณ์สำคัญ | |
| 96 | +|----|---------------| |
| 97 | +| **2006** | เริ่มพัฒนาเป็น Side Project | |
| 98 | +| **2009** | Mozilla ประกาศสนับสนุนอย่างเป็นทางการ | |
| 99 | +| **2010** | เปิดตัวต่อสาธารณะครั้งแรก | |
| 100 | +| **2015** | 🎉 **Rust 1.0** เปิดตัว (Stable Release) พร้อมรับประกัน Backward Compatibility | |
| 101 | +| **2018** | **Rust 2018 Edition** (ปรับปรุงครั้งใหญ่, เพิ่ม async/await ในเวลาต่อมา) | |
| 102 | +| **2021** | ก่อตั้ง **Rust Foundation** (AWS, Google, Microsoft, Huawei, Mozilla) | |
| 103 | +| **2024** | 🐧 Rust เข้าสู่ **Linux Kernel** อย่างเป็นทางการ (ภาษาที่ 2 ถัดจาก C) | |
124 | 104 |
|
125 | 105 | --- |
126 | 106 |
|
|
0 commit comments