ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่
คำมั่นด้านการออกแบบที่เป็นตัวกำหนด Zig
ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่ เป็นบทเรียน Zig Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Zig Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คำมั่นสัญญาที่มีชื่อเสียงสองประการ
Zig เป็นที่รู้จักจากกฎสองข้อ ได้แก่ไม่มีลำดับการควบคุมที่ซ่อนอยู่และไม่มีการจัดสรรที่ซ่อนอยู่ เมื่อรวมกันแล้ว ทั้งสองข้อนี้ทำให้โค้ดอ่านและไว้วางใจได้ง่าย
ลำดับการควบคุมหมายถึงอะไร
ลำดับการควบคุมคือลำดับที่โค้ดของคุณทำงาน ส่วนลำดับการควบคุมที่ซ่อนอยู่เกิดขึ้นเมื่อมีการเรียกใช้สิ่งต่าง ๆ ที่คุณมองไม่เห็นบนหน้าโค้ด ทำให้เกิดความประหลาดใจภายหลัง
ไม่มีการเรียกฟังก์ชันที่ทำให้ประหลาดใจ
Zig ไม่มีการโอเวอร์โหลดตัวดำเนินการและไม่มีตัวทำลายที่ซ่อนอยู่ หากฟังก์ชันทำงาน คุณจะเห็นการเรียกฟังก์ชันนั้นอยู่ตรงนั้นในซอร์ส
ความล้มเหลวปรากฏให้เห็น
ไม่มีข้อยกเว้นกระโดดข้ามไปทั่วทั้งโปรแกรม หากต้องการเพิกเฉยหรือส่งต่อความล้มเหลว คุณต้องเขียน try หรือ catch ดังนั้นเส้นทางของข้อผิดพลาดจึงชัดเจน
const data = try readFile(path);การจัดสรรคืออะไร
การจัดสรรคือการจองหน่วยความจำไว้สำหรับข้อมูลของคุณขณะที่โปรแกรมทำงาน ส่วนการจัดสรรที่ซ่อนอยู่คือการจัดสรรที่ภาษาดำเนินการให้คุณอย่างเงียบ ๆ เบื้องหลังการเรียกใช้งานแบบง่าย
ส่งตัวจัดสรรเข้าไป
ใน Zig โค้ดที่ต้องใช้หน่วยความจำจากฮีพจะรับตัวจัดสรรเป็นพารามิเตอร์ หากฟังก์ชันสามารถจัดสรรหน่วยความจำได้ ลายเซ็นของฟังก์ชันจะแสดงไว้อย่างชัดเจน
fn loadConfig(allocator: std.mem.Allocator) !Config {
// ...
}คุณเป็นผู้เลือกกลยุทธ์
เนื่องจากคุณส่งตัวจัดสรรเข้าไป คุณจึงตัดสินใจได้ว่าหน่วยความจำมาจากที่ใด ไม่ว่าจะเป็นตัวจัดสรรที่ตรวจสอบในบิลด์ดีบัก พื้นที่แบบอารีนา หรือบัฟเฟอร์สแตกขนาดคงที่
เหตุใดเรื่องนี้จึงช่วยคุณ
การจัดสรรที่มองเห็นได้ทำให้ต้นทุนหน่วยความจำชัดเจน ซึ่งมีประโยชน์อย่างมากต่อการปรับแต่งประสิทธิภาพและเป้าหมายแบบฝังตัวที่ไม่มีฮีพเลย
การอ่านดีกว่าการคาดเดา
กฎเหล่านี้หมายความว่าคุณทำความเข้าใจโค้ดด้วยการอ่าน ไม่ใช่การจดจำกลไกที่ซ่อนอยู่ สิ่งที่คุณเห็นคือสิ่งที่ทำงานจริง
defer ทำให้การล้างทรัพยากรชัดเจน
การล้างทรัพยากรก็ชัดเจนเช่นกัน คำสั่ง defer จะกำหนดเวลาให้โค้ดทำงานเมื่อขอบเขตสิ้นสุดลง ทำให้การคืนหน่วยความจำอยู่ถัดจากการจัดสรรทันที
const buf = try allocator.alloc(u8, 64);
defer allocator.free(buf);ข้อแลกเปลี่ยน: ต้องเขียนเพิ่มขึ้น
ต้นทุนที่ตรงไปตรงมาคือการพิมพ์โค้ดเพิ่มขึ้นเล็กน้อย เพราะคุณต้องส่งตัวจัดสรรผ่านโค้ดของคุณ แต่สิ่งที่ได้กลับมาคือความชัดเจนและการควบคุมอย่างเต็มที่
ตรวจสอบความเข้าใจ
คุณจะรู้ได้อย่างไรว่าฟังก์ชัน Zig อาจจัดสรรหน่วยความจำ
สรุปทบทวน
เมื่อไม่มีลำดับการควบคุมและการจัดสรรที่ซ่อนอยู่ ความล้มเหลวและหน่วยความจำจึงมองเห็นได้เสมอ คุณอ่านโค้ดแล้วรู้ได้อย่างแน่นอนว่าเกิดอะไรขึ้น ✨
คำถามที่พบบ่อย
บทเรียน “ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Zig Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Zig Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่”
คำมั่นด้านการออกแบบที่เป็นตัวกำหนด Zig คุณปฏิบัติ Zig Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Zig Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Zig Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Zig Academy นี้ได้ไหม
ได้ บทเรียน Zig Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Zig แก้ปัญหาอะไร
- Zig เทียบกับ C, Rust และ Go
- ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่
- คุณสร้างอะไรได้บ้างด้วย Zig