จากคำถามของน้องบอสวันนี้ (โพสเต็มๆ อยู่ที่นี่ครับ)
เมื่อกี้พยายามอธิบายเรื่อง atom กับการ decouple identity กับ value ออกจากกัน ว่ามันมีประโยชน์ยังไง แต่รู้สึกว่ายังไม่เข้าใจประโยชน์ของมันจริงๆ ทุกคนมองยังไงกันครับ?
ด้านล่างนี้เป็นความพยายามในการอธิบายคำถามนี้ของผมครับ
ผมคิดว่าประโยชน์ของการแยก identity กับ value คือทำให้คนที่ observe value ของ identity แต่ละช่วงเวลายังเห็นภาพที่ถูกต้องของช่วงเวลาที่ตัวเองสนใจอยู่เสมอ
มาคุยเรื่องคำศัพท์กันก่อน เผื่อคนที่เพิ่งเคยได้ยิน
สิ่งๆหนึ่ง มีการเปลี่ยนแปลงคุณลักษณะ ไปตามเวลา
สิ่งหนึ่ง คือ identity
คุณลักษณะ คือ value
คุณลักษณะ ณ ช่วงเวลาหนึ่ง คือ state
เช่น ปีที่แล้วนาย ก. สูง 164 หนัก 61 ตอนนี้นาย ก. สูง 165 หนัก 60
- identity คือ นาย ก.
- value ขอมองว่ามี 2 value ก่อนคือ สูง 164 หนัก 61 และสูง 165 หนัก 60
- state ถ้าเรามองที่เวลาปัจจุบัน คือ สูง 165 หนัก 60
Atom คือ state นั่นเอง มันใช้ว่าบอกว่า ณ เวลาปัจจุบัน identity มีค่าเป็นเท่าไหร่
ถามว่าประโยชน์คืออะไร ก็ต้องมาคุยว่าปกติที่เราไม่แยกสิ่งเหล่านี้เราทำกันอย่างไร
- เราก็จะมีที่ๆ นึงเก็บค่าปัจจุบันของนาย ก. ซึ่งจะโดนเขียนทับไปเรื่อยๆ ไม่มีการเก็บของเก่า อยากเก็บก็ต้องจัดการเอง มันอาจจะไม่ยากนักถ้ามีแค่ 2 ค่าแบบส่วนสูงและน้ำหนักในตัวอย่าง แต่ถ้าสิ่งที่เราสนใจนั้นมีชั้นความซับซ้อนสูงหละ เช่น เรามองภาพของประชากรทั้งโลกที่ประกอบด้วย ประชากรแต่ละประเทศ ประชาชนแต่ละเมือง ซ้อนกันไปเรื่อยๆ เราจะทำการเก็บของเก่าอย่างไร
- ถ้ามีการประมวลผลใดๆ กำลังทำงานอยู่ ณ เวลาที่ค่าของนาย ก. กำลังจะเปลี่ยน การประมวลผลนั้นอาจจะทำงานผิดพลาดได้
ตัวอย่างความผิดพลาด เช่น เราบังเอิญไปคำนวณ BMI ของนาย ก. ตอนจังหวะมันจะเปลี่ยนค่าพอดี
เช่น ตอนที่นาย ก. สูง 164 หนัก 61 คำนวณ BMI ได้ 22.68 แต่ขณะที่กำลังจะคืนค่ากลับไป นาย ก. ดันเปลี่ยนไปสูง 165 หนัก 60 พอดีซึ่งแปลว่าการประมวลผลครั้งน้ันผิดพลาดวิธีการป้องกันไม่ให้การประมวลผลใดผิดพลาดที่เค้าทำกันมามีความซับซ้อน เช่น locking ด้วยเทคนิคต่างๆ ซึ่งจากความซับซ้อนของมันอาจจะก่อให้เกิดความผิดพลาดในด้านอื่นได้อีก และมันยังทำให้ยากต่อการทำความเข้าใจระบบของเราด้วย เช่น ลองคิดดูว่าถ้าเราคำนวณ BMI ผิด ความคิดแรกสุดเลยเราคงไม่คิดหรอกว่าเกิดจากการโดนแก้ค่าขณะกำลังคำนวณพอดี เราคงคิดว่าวิธีการคำนวณ BMI ของเรามันผิด เราก็อาจจะต้องไปพยายามไล่สาเหตุอยู่นานกว่าจะเจอปัญหาที่แท้จริง ลองคิดภาพเรื่องนี้ในการประมวณผลของระบบใหญ่ๆ ที่มีความซับซ้อนสูงดู
อ่านเพิ่มเติม Working Models and Identity
Reblogged this on vee: ดิจิทัล and commented:
refs vars atom agent