Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

บันทึกการอ่านเรื่อง Data Oriented Programming ตอนที่ 1

$
0
0

เห็นเพื่อน ๆ ทำการ share เรื่อง Data Oriented Programming (DO) ใน timeline
ก็เลยลองไปอ่านดู พบว่าน่าสนใจดี
จึงลองตั้งเป้าการอ่านขึ้นมาอีกเรื่องของเดือนนี้ (ช่วงวันหยุด)
โดยที่หนังสือ Data Oriented Programming (DO)
น่าจะถูกปล่อยออกมาในปีหน้า
มาดูเนื้อหาที่อ่านในครั้งแรกกันหน่อย

จากรายชื่อหัวข้อต่าง ๆ
ทำการอธิบายให้เห็นว่า Object-Oriented Programming เป็นอย่างไร
มีอะไรที่ก่อให้เกิดปัญหาบ้าง
แล้ว DO เข้ามาช่วยแก้ไขหรือลดปัญหาเหล่านั้นอย่างไร
แน่นอนว่า ก็ย่อมมีทั้งข้อดีและข้อเสียเช่นกัน

Data Oriented Programming (DO) คืออะไร ?

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

ในการออกแบบตามแนวทางของ DO นั้น

เน้นไปที่ data collections
ประกอบไปด้วย data ที่ไม่สามารถถูกแก้ไขหรือเปลี่ยนแปลงได้ (immutable data)
ส่วน data นั้นจะถูกจัดการผ่าน function หนึ่ง ๆ 
ซึ่งภายใน function นั้น ๆ สามารถใช้งาน data collection อื่น ๆ ได้
ไม่จำเป็นต้องทำงานกับ data หนึ่ง ๆ ไป
จะเรียก function เหล่านี้ว่า generic function

สิ่งที่ DO ให้ความสำคัญมาก ๆ คือ

  • Mutation of data คือ การแก้ไขหรือเปลี่ยนแปลง data
  • The coupling of code and data คือ การผูกมัดระหว่าง code ที่ทำงานกับ data

ถ้า data มีการเปลี่ยนแปลง และ code กับ data ผูกมัดกันอย่างมาก
ผลที่ตามมาคือ ความซับซ้อนของระบบนั่นเอง
ทั้งกระบวนการทำการแก้ไขข้อมูล  ว่าต้องเป็นอย่างไร
ใครบ้างที่ได้รับอนุญาต
ยิ่งการทำงานแบบ multi-thread แล้ว ยิ่งต้องสร้างตัวจัดการมาอีกมากมาย
จะดีกว่าไหม ถ้าไม่ให้เปลี่ยนแปลงไปเลย

ข้อมูลพื้นฐานของ DO คือ entity

ซึ่งมันคือ data collection ที่เป็น immutable
โดย collection มันก็คือ dictionary data structure
ที่ประกอบไปด้วย key กับ value
ยกตัวอย่างเช่น

[gist id="b2d861611fba271ab7c8d61ec37a84d5" file="1.json"]

ข้อมูลชุดนี้ จะถูกจัดการผ่าน generic function
แน่นอนว่า ข้อมูลชุดนี้ไม่ต้องมี blueprint ในการสร้าง

แนวทางของ DO นั้นบอกว่าให้คิดว่า data มันคือ value
ที่ value ไม่มีการเปลี่ยนแปลง
ส่วนการนำข้อมูลไปใช้งานหรือแสดงผล ก็ไม่ต้องมีกระบวนการใด ๆ มาจัดการ

หลาย ๆ คนที่ผ่าน DO อาจจะบอกว่ามันคือ Functional Programming(FP) ชัด ๆ
แน่นอนว่า มันใกล้เคียงกัน
เพราะว่าใช้แนวคิดเดียวกัน
แต่ใน DO ไม่จำเป็นต้องมี function
เนื่องจากเน้นไปที่ data เป็นหลัก
ที่สำคัญ DO สามารถนำไปใช้ได้กับภาษาต่าง ๆ ทั้ง OO และ FP ได้เลย

แนวคิดหรือ Principles ของ DO ประกอบไปด้วย

  • Separate code from data คือการแยก code ทำงานออกจาก data
  • Model entities with generic data structure
  • Data is immutable คือ data จะไม่มีการเปลี่ยนแปลงหรือถูกแก้ไขนั่นเอง
  • Data is comparable by value
  • Data has a literal representation

โดยจะสรุปแต่ละเรื่องในบทความต่อไป


Viewing all articles
Browse latest Browse all 1997

Trending Articles