Procedural Knowledge (ความรู้เชิงกระบวนการ)
Procedural Knowledge หรือ Imperative Knowledge คือ ความรู้ที่อธิบาย "วิธีทำ" (How to) เพื่อให้บรรลุเป้าหมายหนึ่งๆ โดยระบุลำดับขั้นตอนที่ชัดเจน
ตัวอย่างใน JavaScript: การคัดลอกอาร์เรย์แบบ Procedural
var a = [1, 2, 3, 4, 5];
var b = [];
for (var i = 0; i < a.length; i++) {
b.push(a[i]);
}
console.log(b); // [1, 2, 3, 4, 5]
Declarative Knowledge (ความรู้เชิงประกาศ)
Declarative Knowledge หรือ Functional Knowledge คือ ความรู้ที่อธิบาย "ทำอะไร" (What to do) โดยระบุผลลัพธ์ที่ต้องการ ไม่ได้ระบุขั้นตอนการทำงานโดยละเอียด
ตัวอย่างใน JavaScript: การคัดลอกอาร์เรย์แบบ Declarative
var a = [1, 2, 3, 4, 5];
var b = a.map(function(number) {
return number * 1;
});
console.log(b); // [1, 2, 3, 4, 5]
ตารางเปรียบเทียบ
| ลำดับ | หัวข้อ | Procedural Knowledge | Declarative Knowledge |
|---|---|---|---|
| 1 | ชื่อเรียกอื่น | Imperative Knowledge | Functional Knowledge |
| 2 | พื้นฐาน | เน้น How to (วิธีทำ) | เน้น What to (ผลลัพธ์ที่ต้องการ) |
| 3 | การสื่อสาร | ยากต่อการสื่อสาร (รายละเอียดเยอะ) | สื่อสารง่าย (ระดับสูง กระชับ) |
| 4 | การเน้น | Process-oriented (เน้นกระบวนการ) | Data-oriented (เน้นข้อมูล/ผลลัพธ์) |
| 5 | การตรวจสอบ (Validation) | ยากกว่า (ต้องตรวจทุกขั้นตอน) | ง่ายกว่า (ตรวจผลลัพธ์ได้โดยตรง) |
| 6 | การแก้บั๊ก (Debugging) | ยากกว่า (ต้อง trace ทีละขั้น) | ง่ายกว่า (โค้ดสั้น อ่านง่าย) |
สรุปและข้อสังเกตเพิ่มเติม
- ไม่ใช่เรื่องถูก/ผิด - ทั้งสองแบบมีประโยชน์ในบริบทที่ต่างกัน
- Procedural เหมาะกับ: การควบคุมฮาร์ดแวร์, อัลกอริทึมซับซ้อน, embedded systems
- Declarative เหมาะกับ: Business logic, UI rendering, Database queries (SQL), Functional programming
- JavaScript รองรับทั้งสอง paradigm:
forloop (procedural) vsmap/filter/reduce(declarative) - สมัยใหม่ Trend ไปทาง Declarative มากขึ้น (React, Vue, SQL, GraphQL)
ตัวอย่างเพิ่มเติมในชีวิตจริง
| สถานการณ์ | Procedural (How) | Declarative (What) |
|---|---|---|
| ทำอาหาร | สูตรอาหารขั้นตอนละเอียด | เมนูอาหารที่ต้องการ |
| ขับรถ | เลี้ยวซ้าย, เบรก, กดแคน | ไปถึงจุดหมายปลายทาง |
| SQL | Cursor, Loop, Fetch | SELECT * FROM users WHERE age > 18 |