อัตลักษณ์ที่ถูกพันธนาการ: เมื่อ Rust Closures สะท้อนตรรกะแห่งการครอบครอง

Share
อัตลักษณ์ที่ถูกพันธนาการ: เมื่อ Rust Closures สะท้อนตรรกะแห่งการครอบครอง
Photo by Markus Spiske on Unsplash

ในโลกของ Rust “ความอิสระ” เป็นเพียงภาพลวงตา เพราะทุกการขยับเขยื้อนของข้อมูลล้วนมีพันธนาการที่เรียกว่า Ownership กำกับอยู่เสมอ


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

1. การเฝ้ามอง (Immutable Borrowing)

เมื่อ Closure เลือกที่จะ Capture ข้อมูลแบบ Immutable Borrow (&T) มันทำตัวเป็นเพียง "ผู้สังเกตการณ์" มันจดจำค่าไว้เพียงเพื่อนำไปใช้งาน แต่ไม่อาจเข้าไปเปลี่ยนแปลงสิ่งที่มันเฝ้ามอง

ในทางปรัชญา นี่คือสภาวะของ Stoicism (สโตอิก) ที่สมบูรณ์แบบ มาร์กุส ออเรลิอุส เคยกล่าวถึงการมองโลกตามความเป็นจริงโดยไม่เอาตัณหาเข้าไปเจือปน ใน Rust นี่ก็คือ Trait Fn — การมีอยู่ของเรา (Closure) ไม่ได้ทำให้โลกภายนอก (Data) ปั่นป่วน

ความสงบที่แท้จริงไม่ใช่การไร้ซึ่งข้อมูล แต่คือการถือครองความจริงไว้ในมือ… โดยไม่ยอมให้มันกลายเป็นเจ้าของหัวใจเรา

2. การเป็นผู้กระทำและภาระแห่งความเปลี่ยนแปลง (Mutating)

นาทีที่คุณต้องการ “แก้ไข” สิ่งที่ถูก Capture มาในภาษา Rust นั้น Closure จะยกระดับ Trait เป็น FnMut ทันที มันคือการถือครอง Mutable Reference (&mut T)

นี่คือจุดเปลี่ยนจากผู้สังเกตไปเป็น “ผู้กระทำ” ตามแนวคิดของ Existentialism (อัตถิภาวนิยม) ที่ว่าตัวตนของเราถูกสร้างผ่านการกระทำ แต่การเป็นผู้กระทำใน Rust นั้นมีราคาแพง คุณต้องได้รับสิทธิ์ขาด (Exclusive Access) เพียงผู้เดียวในเวลานั้น

หากคุณพยายามแก้ไขโลก (State) ในขณะที่คนอื่นก็กำลังเฝ้ามองมันอยู่ ระบบจะสั่ง “Panic” หรือคอมไพล์ไม่ผ่าน นี่คือสัจธรรมที่ว่า ความเปลี่ยนแปลงที่ไร้ระเบียบนำมาซึ่งความพินาศเสมอ

3. การครอบครองจนดับสูญ (Moving & Consuming)

สภาวะสุดท้ายคือความดิบเถื่อนที่สุด เมื่อ Closure ใช้คีย์เวิร์ด move เพื่อยึดกรรมสิทธิ์โดยสมบูรณ์ และเมื่อมันใช้งานข้อมูลนั้นจนเสร็จสิ้น ข้อมูลนั้นจะมอดไหม้ไปพร้อมกับตัวมันเอง (Trait FnOnce)

Michel Foucault เคยวิเคราะห์เรื่อง “อำนาจ” (Power) ว่าอำนาจที่เบ็ดเสร็จที่สุดคือการกลืนกินตัวตนนั้น ๆ เข้ามาเป็นส่วนหนึ่งของระบบ เมื่อคุณครอบครองบางอย่างอย่างสมบูรณ์ สิ่งนั้นจะสูญเสียอัตลักษณ์เดิมและสลายไปภายใต้เจตจำนงของผู้ถือครอง

บทสรุป

บทเรียนจาก Comprehensive Rust ไม่ได้เป็นเพียงคู่มือวิศวกรรม แต่มันคือ คัมภีร์การจัดการความสัมพันธ์

ในชีวิตจริง เรามักจะ “Capture” สิ่งต่าง ๆ เข้ามาในใจตลอดเวลา ทั้งความทรงจำ ความแค้น หรือความคาดหวัง บ่อยครั้งที่เราไม่รู้ตัวว่าเรากำลังถือครองมันแบบไหน:

  • เราแค่เฝ้ามองมันเพื่อเรียนรู้? (Fn)
  • เราพยายามจะบงการมันตามใจชอบ? (FnMut)
  • หรือเรายึดติดกับมันจนยอมให้มันทำลายเราไปพร้อมกัน? (FnOnce)

Rust สอนให้เราคิดก่อนจะ Capture เพราะการจัดการหน่วยความจำที่ผิดพลาดนำไปสู่ Memory Leak แต่การจัดการ “ความยึดติด” ที่ผิดพลาด… นำไปสู่ความทุกข์ที่ไม่มีวันสิ้นสุด

เพราะสุดท้ายแล้ว บรรทัดคำสั่งที่ปลอดภัยที่สุด คือบรรทัดที่เราเข้าใจว่าเรากำลัง “แบก” อะไรไว้บ้าง

เกี่ยวกับผู้เขียน: Uncle Quin — Software Engineer ผู้หลงใหลในการเชื่อมโยงวิศวกรรมซอฟต์แวร์เข้ากับปรัชญา

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

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

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

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

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

Read more

Distributed Decision Making

Distributed Decision Making

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

By Chokchai Phatharamalai
Risk Management: The Hard Test

Risk Management: The Hard Test

ท้ายหนังสือ Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency ของ Tom DeMarco ได้ให้เทคนิคใหม่ในการจัดการความเสี่ยงกับผม ทอมสอนว่าในการทำงานยุคปัจจุบัน งานมีความเสี่ยงกระจายอยู่เต็มไปหมด ซึ่งในความเสี่ยงนั้น เรามีโอกาสโชคดีและมีโอกาสโชคร้าย การจัดการความเสี่ยงเป็นสิ

By Chokchai Phatharamalai
วิธีปรับเวลาการนอน

วิธีปรับเวลาการนอน

ผมเดินทางกลับมาจาก Conference ของ Berkeley ที่ซานฟรานซิสโก เครื่องลงที่สนามบินสุวรรณภูมิประมาณ 22:30 น. กว่าจะถึงบ้านก็เกือบเที่ยงคืน ยังดีที่ขากลับไม่เหนื่อยเท่าขาไป เพราะลองซื้อหมอนรองคอจาก Duty Free ที่ซานฟรานซิสโกมาใช้ดู หมอนเป็นลายการ์ตูน มีรูปสะพาน

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

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

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

By Chokchai Phatharamalai