ความแตกต่างที่สำคัญ – การเขียนโปรแกรมเชิงประกาศเทียบกับความจำเป็น
การเขียนโปรแกรมเชิงประกาศและเชิงบังคับเป็นกระบวนทัศน์การเขียนโปรแกรมทั่วไปสองแบบ ข้อแตกต่างที่สำคัญระหว่างโปรแกรม Declarative และ Imperative คือ โปรแกรม Declarative มุ่งเน้นไปที่สิ่งที่โปรแกรมควรทำในขณะที่โปรแกรม Imperative มุ่งเน้นไปที่วิธีที่โปรแกรมควรบรรลุผล
กระบวนทัศน์การเขียนโปรแกรมใช้เพื่อจำแนกภาษาการเขียนโปรแกรมขึ้นอยู่กับคุณสมบัติ นอกจากนี้ยังอนุญาตให้ทำตามรูปแบบหรือสไตล์บางอย่างเพื่อแก้ปัญหาเฉพาะ
Declarative Programming คืออะไร
สามารถอธิบายการเขียนโปรแกรมเชิงประกาศได้โดยใช้สถานการณ์จริง สมมติว่าผู้ใช้จำเป็นต้องตรวจสอบอีเมลใหม่ วิธีหนึ่งคือการเปิดใช้งานการแจ้งเตือนในกล่องจดหมาย ผู้ใช้ต้องเปิดใช้งานการแจ้งเตือนเพียงครั้งเดียว และทุกครั้งที่มีอีเมลใหม่เข้ามา เขาจะได้รับการแจ้งเตือนโดยอัตโนมัติ การเขียนโปรแกรมการประกาศจะคล้ายกับที่ มันให้ความเรียบง่าย โปรแกรม Declarative เป็นการแสดงออกถึงผลลัพธ์ที่ต้องการ มันอธิบายตรรกะของการคำนวณโดยไม่อธิบายโฟลว์การควบคุม
รูปที่ 01: กระบวนทัศน์การเขียนโปรแกรม
ตัวอย่างการเขียนโปรแกรมการประกาศมีดังนี้ เป็นการคูณตัวเลขของอาร์เรย์ด้วยค่าคงที่และเก็บไว้ในอาร์เรย์ใหม่
var ตัวเลข=[1, 2, 3];
var newnumbers=numbers.map(ฟังก์ชัน(หมายเลข){
ส่งคืนหมายเลข5;
});
Console.log(หมายเลขใหม่);
ในตัวอย่างข้างต้น 'แผนที่' จะให้คำแนะนำในการวนซ้ำแต่ละรายการในอาร์เรย์และเรียกใช้ฟังก์ชันการโทรกลับสำหรับแต่ละรายการและเพื่อเก็บค่าที่ส่งคืนไปยังอาร์เรย์ใหม่ สิ่งนี้จะให้ผลลัพธ์ 5, 10, 15 ในโปรแกรมนี้ วัตถุประสงค์หลักของการคูณตัวเลขด้วย 5 ทำได้สำเร็จโดยใช้ฟังก์ชันแผนที่ มันจะผ่านแต่ละองค์ประกอบและใช้ฟังก์ชันโทรกลับเพื่อคำนวณและเก็บค่าไว้ในอาร์เรย์ใหม่ ไม่จำเป็นต้องให้ขั้นตอนทั้งหมด เน้นไปที่สิ่งที่ควรทำ
โปรแกรมบังคับคืออะไร
การเขียนโปรแกรมเชิงบังคับสามารถอธิบายได้โดยใช้สถานการณ์จริงเหมือนเมื่อก่อน ในการตรวจสอบอีเมลใหม่ ผู้ใช้สามารถลงชื่อเข้าใช้ gmail และรีเฟรชหน้าต่อไปเพื่อตรวจสอบว่าได้รับอีเมลใหม่หรือไม่ซึ่งคล้ายกับการเขียนโปรแกรมที่จำเป็น มันอธิบายแต่ละขั้นตอนที่เกี่ยวข้องเพื่อให้บรรลุผล ใช้คำสั่งเพื่อแสดงการเปลี่ยนแปลงในสถานะของโปรแกรม
การคูณองค์ประกอบอาร์เรย์ด้วยค่าคงที่และจัดเก็บค่าลงในอาร์เรย์ใหม่ในการเขียนโปรแกรมที่จำเป็นมีดังต่อไปนี้
var ตัวเลข=[1, 2, 3];
var newnumbers=;
for(int i=0; i< numbers.length; i++) {
newnumbers.push(ตัวเลข5);
}
Console.log(หมายเลขใหม่);
ในตัวอย่างข้างต้น ตัวเลขคืออาร์เรย์ เมื่อวนซ้ำแต่ละหมายเลขจะถูกคูณด้วย 5 และเพิ่มลงในอาร์เรย์หมายเลขใหม่ หลังจบลูป เนื้อหาของเลขใหม่จะพิมพ์ออกมา คือ 5, 10, 15.
สังเกตได้ว่ารูปแบบความจำเป็นมีขั้นตอนทั้งหมดเพื่อให้งานสำเร็จลุล่วง มันแสดงวิธีการวนซ้ำผ่านอาร์เรย์โดยใช้ตัวแปรตัวนับ 'i' จำนวนครั้งที่วนซ้ำก่อนที่จะออกจากลูปและวิธีแทรกค่าที่คำนวณได้ไปยังอาร์เรย์ใหม่ ฯลฯ
ปัญหาเดียวกันนี้แก้ไขได้ด้วยการเขียนโปรแกรมเชิงประกาศและความจำเป็น
ความแตกต่างระหว่างการเขียนโปรแกรมเชิงประกาศและความจำเป็นคืออะไร
การประกาศ vs การเขียนโปรแกรมเชิงบังคับ |
|
การเขียนโปรแกรมเชิงประกาศเป็นกระบวนทัศน์การเขียนโปรแกรมที่แสดงตรรกะของการคำนวณโดยไม่อธิบายขั้นตอนการควบคุม | Imperative programming เป็นกระบวนทัศน์การเขียนโปรแกรมที่ใช้คำสั่งที่เปลี่ยนสถานะของโปรแกรม |
โฟกัสหลัก | |
โปรแกรมการประกาศเน้นที่สิ่งที่โปรแกรมควรทำสำเร็จ | โปรแกรมบังคับเน้นว่าโปรแกรมควรบรรลุผลอย่างไร |
ความยืดหยุ่น | |
โปรแกรมการประกาศให้ความยืดหยุ่นน้อยลง | การเขียนโปรแกรมที่จำเป็นให้ความยืดหยุ่นมากขึ้น |
ความซับซ้อน | |
การประกาศโปรแกรมทำให้โปรแกรมง่ายขึ้น | โปรแกรมที่จำเป็นสามารถเพิ่มความซับซ้อนของโปรแกรมได้ |
การจัดหมวดหมู่ | |
ฟังก์ชัน ลอจิก คิวรีเขียนโปรแกรมอยู่ในโปรแกรมประกาศ | การเขียนโปรแกรมเชิงขั้นตอนและเชิงวัตถุเป็นโปรแกรมที่จำเป็น |
สรุป – Declarative vs Imperative Programming
บทความนี้กล่าวถึงความแตกต่างระหว่างกระบวนทัศน์การเขียนโปรแกรมหลัก 2 แบบคือการเขียนโปรแกรมเชิงประกาศและเชิงความจำเป็นข้อแตกต่างระหว่างการเขียนโปรแกรมเชิงประกาศและเชิงบังคับคือ Declarative Programming มุ่งเน้นไปที่สิ่งที่โปรแกรมควรทำให้สำเร็จ ในขณะที่ Imperative Programming มุ่งเน้นไปที่วิธีที่โปรแกรมควรบรรลุผล