0Pricing
Zig Academy · บทเรียน

ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่

คำมั่นด้านการออกแบบที่เป็นตัวกำหนด 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Zig แก้ปัญหาอะไร
  2. Zig เทียบกับ C, Rust และ Go
  3. ไม่มีลำดับการควบคุมที่ซ่อนอยู่ ไม่มีการจัดสรรที่ซ่อนอยู่
  4. คุณสร้างอะไรได้บ้างด้วย Zig
← กลับไปที่ Zig Academy