เมื่อ Rust อ่าน Foucault: การสถาปนา “ระบอบแห่งความจริง” ผ่าน Exclusive Reference

Share
เมื่อ Rust อ่าน Foucault: การสถาปนา “ระบอบแห่งความจริง” ผ่าน Exclusive Reference
Photo by Ricardo Arce on Unsplash

ในโลกของการเขียนโปรแกรม เรามักมองว่าภาษาเป็นเพียงเครื่องมือ (Tooling) แต่สำหรับผู้ที่คลุกคลีกับภาษา Rust จะรู้ดีว่าภาษานี้มี “ปรัชญา” บางอย่างที่ฝังรากลึกอยู่ภายใต้ไวยากรณ์ที่เคร่งครัด โดยเฉพาะเรื่องการจัดการหน่วยความจำที่ไม่ได้มองว่าเป็นแค่เรื่องทางเทคนิค แต่เป็นเรื่องของ “อำนาจ” และ “ความจริง”


วันนี้ผมจะลองพาทุกคนไปสำรวจแนวคิดเรื่อง Exclusive Reference (&mut T) ผ่านเลนส์ของ Michel Foucault นักปรัชญาผู้ทรงอิทธิพลที่สุดคนหนึ่งในศตวรรษที่ 20 เพื่อดูว่ากฎเหล็กของคอมไพเลอร์กำลังบอกอะไรเราเกี่ยวกับโลกความเป็นจริง

Exclusive Reference: เมื่อโลกต้องหยุดหมุนเพื่อคุณ

ในภาษา Rust มีกฎเหล็กที่โปรแกรมเมอร์ทุกคนต้องเผชิญคือ Borrow Checker กฎที่สำคัญที่สุดข้อหนึ่งคือ:

“คุณสามารถมี Shared References (&T) ได้หลายตัว หรือมี Exclusive Reference (&mut T) ได้เพียงตัวเดียวเท่านั้นในเวลาเดียวกัน"

สิ่งนี้หมายความว่าอย่างไรในเชิงปฏิบัติ? มันหมายความว่าถ้าคุณได้รับสิทธิ์ในการ “แก้ไข” ข้อมูล (Mutable) โลกภายนอกที่เคยสังเกตข้อมูลชุดนั้นอยู่ (Immutable references) จะต้องถูกระงับสิทธิ์ทันที คุณจะกลายเป็น “ผู้ถือครองสิทธิ์เด็ดขาด” เพียงหนึ่งเดียว

ในมุมมองของวิศวกรรมซอฟต์แวร์ นี่คือการป้องกัน Data Race แต่ในมุมมองของปรัชญา นี่คือการสถาปนาอำนาจเพื่อควบคุม “ความจริง”

Michel Foucault และ “ระบอบแห่งความจริง” (Regime of Truth)

ฟูโกต์เสนอแนวคิดที่ว่า ความจริงไม่ได้ลอยอยู่ในอากาศ แต่มันถูกผลิตขึ้นโดย อำนาจ (Authority) เขาเรียกว่า “ระบอบแห่งความจริง” (Regime of Truth)

ในสังคมใดสังคมหนึ่ง จะมีกลไกที่คอยคัดกรองว่าวาทกรรมแบบไหนคือความจริง และใครคือผู้มีสิทธิพูดความจริงนั้น หากเราเปรียบหน่วยความจำในคอมพิวเตอร์เป็นสังคม ข้อมูลแต่ละชุดก็คือ “ความจริง” ที่กำลังถูกนิยาม

  • ในภาษาทั่วไป: ใครก็ได้สามารถเข้ามาแก้ไขความจริงได้ทุกเมื่อ (Aliasing) ทำให้ความจริงเกิดความพร่าเลือนและย้อนแย้ง (Bugs)
  • ในภาษา Rust: ความจริงต้องถูกรับรองโดยอำนาจที่ตรวจสอบได้ (The Sovereign Compiler)

เมื่อการเขียนโค้ด คือการจัดระเบียบวาทกรรม

เมื่อคุณเขียนโค้ด let x = &mut data; คุณไม่ได้กำลังขอแค่สิทธิ์เข้าถึง แต่คุณกำลังประกาศตัวเป็น "องค์อธิปัตย์" ตามแนวคิดของฟูโกต์

ในชั่วขณะที่ตัวแปร x ถือครองสิทธิ์ Exclusive อยู่นั้น:

  1. ความจริงถูกผูกขาด: มีเพียง x เท่านั้นที่มีสิทธิ์ตัดสินว่า data จะมีหน้าตาเป็นอย่างไรต่อไป
  2. อำนาจทำให้เกิดความปลอดภัย: การที่คนอื่น “ห้ามอ่าน” ในขณะที่ x กำลังเขียน คือการรับประกันว่าเมื่ออำนาจนี้สิ้นสุดลง ความจริงชุดใหม่ที่จะถูกส่งต่อให้กับคนอื่นจะเป็นความจริงที่สอดคล้องและไม่แตกสลาย

นี่คือสิ่งที่ฟูโกต์เรียกว่า Power-Knowledge (อำนาจ-ความรู้) อำนาจของ Borrow Checker สร้าง “ความรู้” ที่แน่นอนให้กับคอมไพเลอร์ว่าหน่วยความจำนี้ปลอดภัย 100%

บทสรุป: อำนาจที่มาพร้อมเสถียรภาพ

บทเรียนจาก Rust และ Foucault บอกเราว่า “อิสรภาพที่ปราศจากการควบคุม นำไปสู่ความโกลาหล”

การที่เราต้องยอมสยบต่อกฎที่เคร่งครัดของ Rust ไม่ใช่เรื่องของการจำกัดความคิดสร้างสรรค์ แต่มันคือการสร้าง “สัญญาประชาคม” ระหว่างโปรแกรมเมอร์และเครื่องจักร เพื่อให้มั่นใจว่าในโลกที่ สถานะของข้อมูลเปลี่ยนแปลงไปในทุกจังหวะของสัญญาณนาฬิกา เราจะยังมี “ความจริง” ที่เชื่อถือได้เสมอ

ครั้งต่อไปที่คุณเจอข้อความ Error จาก Borrow Checker ให้ลองมองว่ามันไม่ใช่กำแพง แต่มันคือเครื่องมือวิพากษ์อำนาจที่กำลังเตือนเราว่า: “ความจริงชุดนี้ มีผู้ถืออำนาจซ้ำซ้อนเกินไปแล้ว”

Uncle Quin
Bit Crafter / Philosopher of the Void


หากบทความนี้มีประโยชน์

คุณสามารถติดตาม Late Night with Uncle Quin ได้ทาง

ที่ที่เราคุยกันเรื่อง software, engineering mindset และอนาคตของ developer

แบบไม่ต้องใส่สูท

แต่ใส่ความจริงของวงการเข้าไปเต็ม ๆ

Read more

เร็วแค่ไหนก็ไร้ค่า ถ้าไปผิดทาง

เร็วแค่ไหนก็ไร้ค่า ถ้าไปผิดทาง

อีกบทเรียนที่ผมได้จากหนังสือ Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency ของ Tom DeMarco คือ ทำไมองค์กรใหญ่ ๆ ถึงยึดมั่นกับ Efficiency กันนัก Efficiency คืออะไร? Efficiency แปลว่า "ประสิทธิภาพ" ยกตัวอย่างเช่น

By Chokchai Phatharamalai
กฎของจั๊วะ

กฎของจั๊วะ

ปีนี้ที่อายุ 44 ผม Reflect ตัวเอง และพบว่าหลักการใช้ชีวิตของผมได้มาจากหนังสือ The Seven Habits of Highly Effective People เยอะมาก ใน Habit ทั้ง 7 นี้จะมีเกร็ดเล็กเกร็ดน้อยที่ผมไปศึกษามา แล้วค่อย ๆ เติมเข้าไปเพื่อทำให้ Habit นั

By Chokchai Phatharamalai
วงจรชีวิตในมุมมอง Existentialism และศิลปะแห่งการล้มเหลวในราคาถูก

วงจรชีวิตในมุมมอง Existentialism และศิลปะแห่งการล้มเหลวในราคาถูก

บ่อยครั้งที่เราใช้ชีวิตราวกับกำลังรอคอยที่จะคอมไพล์ (Compile) โปรเจกต์ยักษ์ใหญ่ที่ซับซ้อนและรวมศูนย์เพียงชิ้นเดียว เราวางแผนสำหรับทศวรรษหน้าอย่างพิถีพิถัน เรายึดโยงความสุขไว้กับจุดหมายปลายทางอันไกลโพ้นและเลือนลางของความสำเร็จสูงสุด เราเขียนโค้ดทางความคิดไว้หลายพันบรรทั

By Santi
วนเวียนแต่ไม่วนลูป: เมื่อชีวิตคือฟังก์ชัน Recursion และการเดินทางสู่พื้นที่ปลอดภัย

วนเวียนแต่ไม่วนลูป: เมื่อชีวิตคือฟังก์ชัน Recursion และการเดินทางสู่พื้นที่ปลอดภัย

ในโลกที่หมุนไปด้วยอัตราเร่งอย่างทุกวันนี้ หลายครั้งเรามักพบว่าตัวเองติดอยู่ท่ามกลางความสับสนยุ่งเหยิง ปัญหาบางอย่างในชีวิตไม่ได้มาในรูปแบบที่เรียบง่าย แต่กลับซ้อนทับกันเป็นชั้น ๆ เหมือนกล่องของขวัญใบยักษ์ที่พอเปิดเข้าไป ก็

By Santi