Skip to main content
เทคโนโลยี

Imperative VS Declarative Programming ต่างกันยังไง ?

By กรกฎาคม 11th, 2020No Comments

Developer Team
BorntoDev Co., Ltd.

รู้มั้ยว่าที่จริงๆแล้วพื้นฐานการเขียนโค้ดมีรูปแบบหลักๆอยู่นะ ซึ่งรูปแบบเหล่านี้ไม่ว่าจะเป็นการเขียนโค้ดสไตล์ไหนก็สามารถแบ่งได้เป็น 2 อย่าง นั่นคือ Imperative และ Declarative หลายๆคนก็อาจจะเคยได้ยินผ่านหูผ่านตาเวลาเสิร์ชหาข้อมูลในอินเทอร์เน็ตมาบ้าง แต่เคยนึกสงสัยมั้ยว่า 2 แบบนี้มันคืออะไร มันง่ายมากๆเลย ลองไปเริ่มจากนิยามสั้นๆกันก่อน

คำนิยามแบบสั้นๆ ง่ายๆ 

Imperative – คือ “ทำยังไงให้ได้สิ่งนี้

Declarative – คือ “ทำอะไร

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

https://medium.com/@zach.gollwitzer/imperative-vs-declarative-programming-procedural-functional-and-oop-b03a53ba745c

สร้างบ้านแบบ Imperative

จากข้อก่อนหน้านี้ที่บอกว่า Imperative นั้นเกี่ยวกับว่ามันทำ “ยังไง” ถ้าเปรียบเทียบเป็นการสร้างบ้าน สิ่งที่เราต้องทำก็คือ

  1. สร้างฐานตอกเสาเข็ม
  2. ขึ้นโครงบ้าน
  3. ติดตั้งระบบน้ำ ไฟ
  4. สร้างกำแพง
  5. ตกแต่งให้เรียบร้อย

จะเห็นว่า Imperative เราจะต้องรู้ว่าสิ่งที่เราต้องการคือ “บ้าน” นั้นต้องทำ “ยังไง” และลงมือทำไปทีละขั้นตอนตั้งแต่ต้นจนจบ

สร้างบ้านแบบ Declarative

แบบ Declarative นี้ให้ความสำคัญแค่ว่าเราต้องการ “อะไร” ซึ่งในที่นี้ก็คือบ้าน สิ่งที่เราต้องทำในแบบ Declarative ก็คือ

  1. ไม่ต้องรู้ว่าบ้านสร้างยังไง รู้แค่ต้องการบ้านหลังใหญ่ๆ สองห้องนอน แปดห้องน้ำ หน้าบ้านติดรถไฟฟ้า หลังบ้านติดสนามบิน

หมดแล้วสำหรับการสร้างบ้านแบบ Declarative คือเราโฟกัสแค่ว่าเราต้องการ “อะไร” และรู้แค่ว่าต้องใส่ “input” ในรูปแบบของเงินเข้าไป แล้วก็จะได้บ้านในแบบที่ต้องการออกมา

มาลองดูโค้ดตัวอย่าง

ถ้าเราต้องการเขียนโค้ดเพื่อเช็คว่าเลขที่ต้องการอยู่ตำแหน่งที่เท่าไหร่ใน List

โค้ด Imperative

let numList = [1, 5, 6, 9]
let desiredNumber = 6
for (let i = 0; i < numList.length; i++) {
  const num = numList[i]
  if (num === desiredNumber) {
    console.log(`Desired number is at index: ${i}`)
  }
}

เราจะทำไปทีละขั้นตอนไล่ตั้งแต่ สร้าง for loop -> เอาตัวเลขมาทีละตัว -> เช็คว่าเลขนั้นคือตัวที่ต้องการรึเปล่า -> แสดงผลลัพธ์

โค้ด Declarative

let numList = [1, 5, 6, 9]
let desiredNumber = 6
let desiresNumberIndex = numList.indexOf(desiredNumber);
console.log(`Desired number is at index: ${desiresNumberIndex}`);

สิ่งที่เราต้องรู้และทำก็คือ รู้ว่าเราต้องการเลขอะไร และรู้ว่าถ้าโยนเข้าไปในคำสั่ง indexOf แล้วก็จะได้ผลลัพธ์ออกมาเป็น index ที่ต้องการ

สรุป

ในการเขียนโปรแกรมจริง ที่มีการทำงานต่างๆเฉพาะของแต่ละงาน โค้ดในโปรแกรมก็จะมีทั้งส่วนที่เป็น Imperative และ Declarative จากตัวอย่างการสร้างบ้านถ้าเราสร้างบ้านเอง เราก็จะต้องรู้ทุกขั้นตอนในการสร้างบ้านและสร้างตามขั้นตอนนั้น (Imperative) แต่ถ้าเราจ้างคนอื่นสร้างบ้าน (Declarative) เราก็ไม่จำเป็นต้องรู้ว่าบ้านสร้างยังไง แต่ว่าคนที่สร้างนั้นยังต้องสร้างบ้านตามขั้นตอนอยู่ (Imperative) หรือก็คือในส่วนที่เราใช้ Declarative ก็จะมีส่วนที่เป็น Imperative แฝงอยู่นั่นเอง

แฝงอยู่แบบนี้แหละ!

ขอบคุณข้อมูลดีๆจาก

https://medium.com/@zach.gollwitzer/imperative-vs-declarative-programming-procedural-functional-and-oop-b03a53ba745c

https://ui.dev/imperative-vs-declarative-programming/

https://stackoverflow.com/questions/1784664/what-is-the-difference-between-declarative-and-imperative-programming

หากคุณสนใจพัฒนา สตาร์ทอัพ แอปพลิเคชัน และ เทคโนโลยีของตัวเอง ?

อย่ารอช้า ! เรียนรู้ทักษะด้านดิจิทัลเพื่ออัพเกรดความสามารถของคุณ
เริ่มตั้งแต่พื้นฐาน พร้อมปฏิบัติจริงในรูปแบบหลักสูตรออนไลน์วันนี้

Leave a Reply

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า