Key Difference – Functional Programming vs Imperative Programming
ข้อแตกต่างที่สำคัญระหว่างการเขียนโปรแกรมเชิงฟังก์ชันและการเขียนโปรแกรมเชิงบังคับคือการเขียนโปรแกรมเชิงฟังก์ชันจะพิจารณาการคำนวณเป็นฟังก์ชันทางคณิตศาสตร์และหลีกเลี่ยงการเปลี่ยนสถานะและข้อมูลที่ไม่แน่นอน ในขณะที่โปรแกรมบังคับจะใช้คำสั่งที่เปลี่ยนสถานะของโปรแกรม
กระบวนทัศน์การเขียนโปรแกรมให้รูปแบบการสร้างโครงสร้างและองค์ประกอบของโปรแกรมคอมพิวเตอร์ กระบวนทัศน์การเขียนโปรแกรมช่วยในการจำแนกภาษาการเขียนโปรแกรมตามคุณลักษณะ ภาษาโปรแกรมอาจมีอิทธิพลต่อกระบวนทัศน์มากขึ้นในกระบวนทัศน์เชิงวัตถุ โปรแกรมมีโครงสร้างโดยใช้วัตถุ และวัตถุจะส่งข้อความโดยใช้วิธีการ การเขียนโปรแกรมลอจิกสามารถแสดงการคำนวณในแง่ของตรรกะทางคณิตศาสตร์เท่านั้น อีกสองกระบวนทัศน์การเขียนโปรแกรมคือการเขียนโปรแกรมเชิงฟังก์ชันและการเขียนโปรแกรมที่จำเป็น การเขียนโปรแกรมเชิงฟังก์ชันช่วยให้สามารถแสดงการคำนวณเป็นการประเมินฟังก์ชันทางคณิตศาสตร์ได้ การเขียนโปรแกรมที่จำเป็นจัดเตรียมคำสั่งที่เปลี่ยนสถานะของหน่วยความจำอย่างชัดเจน บทความนี้กล่าวถึงความแตกต่างระหว่างการเขียนโปรแกรมเชิงฟังก์ชันและการเขียนโปรแกรมที่จำเป็น
Functional Programming คืออะไร
Functional Programming อิงจากคณิตศาสตร์ หลักการสำคัญที่อยู่เบื้องหลังการเขียนโปรแกรมเชิงฟังก์ชันคือการคำนวณทั้งหมดถือเป็นการรวมฟังก์ชันทางคณิตศาสตร์ที่แยกจากกัน ฟังก์ชันทางคณิตศาสตร์จะจับคู่อินพุตกับเอาต์พุต สมมติว่ามีฟังก์ชันที่เรียกว่า f(x)=xx ค่า x 1 ถูกจับคู่กับเอาต์พุต 1 ค่า x 2 ถูกจับคู่กับเอาต์พุต 4ค่า x 3 ถูกแมปกับเอาต์พุต 9 เป็นต้น
รูปที่ 01: ตัวอย่างภาษาโปรแกรมการทำงาน – Haskell
ในการเขียนโปรแกรมเชิงฟังก์ชัน จะพิจารณารูปแบบ Haskell ภาษาการเขียนโปรแกรมเชิงฟังก์ชัน ใช้วิธีการด้านล่างเพื่อค้นหาผลรวมของตัวเลข
ฟังก์ชันผลรวมมีค่าจำนวนเต็ม และผลลัพธ์จะเป็นจำนวนเต็มด้วย สามารถเขียนเป็นผลรวม: [int] -> int การหาผลรวมสามารถทำได้โดยทำตามรูปแบบด้านล่าง
sum[n]=n ผลรวมของตัวเลขหนึ่งตัวคือตัวเลขเอง
ถ้ามีรายการตัวเลขเขียนได้ดังนี้ครับ n แทนตัวเลขแรก และ ns แทนตัวเลขอื่นๆ
sum (n, ns)=n + ผลรวม ns.
รูปแบบด้านบนสามารถใช้เพื่อค้นหาผลรวมของตัวเลขสามตัว ได้แก่ 3, 4, 5.
3 + ผลรวม [4, 5]
3 + (4 + ผลรวม [5])
3+ 4 + 5=12
ฟังก์ชันหรือนิพจน์กล่าวว่ามีผลข้างเคียงหากแก้ไขบางสถานะนอกขอบเขตหรือมีปฏิสัมพันธ์ที่สังเกตได้กับฟังก์ชันการเรียกนอกเหนือจากค่าที่ส่งคืน การเขียนโปรแกรมเชิงฟังก์ชันช่วยลดผลข้างเคียงนี้ให้เหลือน้อยที่สุด การเปลี่ยนแปลงสถานะไม่ขึ้นอยู่กับอินพุตของฟังก์ชัน มีประโยชน์เมื่อเข้าใจพฤติกรรมของโปรแกรม ข้อเสียอย่างหนึ่งของการเขียนโปรแกรมเชิงฟังก์ชันคือการเรียนรู้การเขียนโปรแกรมเชิงฟังก์ชันนั้นยากกว่าเมื่อเปรียบเทียบกับการเขียนโปรแกรมแบบจำเป็น
โปรแกรมบังคับคืออะไร
Imperative programming เป็นกระบวนทัศน์การเขียนโปรแกรมที่ใช้คำสั่งที่เปลี่ยนสถานะของโปรแกรม เน้นที่การอธิบายวิธีการทำงานของโปรแกรม ภาษาการเขียนโปรแกรมเช่น Java, C และ Cเป็นภาษาโปรแกรมที่จำเป็นมันให้ขั้นตอนโดยขั้นตอนเกี่ยวกับสิ่งที่ต้องทำ ภาษาโปรแกรมที่จำเป็นประกอบด้วยโครงสร้าง เช่น if, else, while สำหรับลูป คลาส อ็อบเจ็กต์ และฟังก์ชัน
รูปที่ 02: ตัวอย่างภาษาการเขียนโปรแกรมที่จำเป็น – Java
ผลรวมของตัวเลขสิบตัวสามารถพบได้ในภาษาจาวาดังนี้ ในการวนซ้ำแต่ละครั้ง ค่า i จะถูกเพิ่มเข้าไปในผลรวมและกำหนดให้กับตัวแปรผลรวม ในการทำซ้ำแต่ละครั้ง ค่าผลรวมจะยังคงบวกกับผลรวมที่คำนวณไว้ก่อนหน้านี้
ผลรวม=0;
สำหรับ (int i=0; i<=10; i++) {
sum=ผลรวม + i;
}
โปรแกรมบังคับนั้นง่ายต่อการเรียนรู้ ทำความเข้าใจ และแก้ปัญหา ง่ายต่อการค้นหาสถานะของโปรแกรมเนื่องจากการใช้ตัวแปรสถานะ ข้อเสียบางประการคือทำให้โค้ดยาวขึ้นและยังย่อขนาดให้เหลือน้อยที่สุด
ความคล้ายคลึงกันระหว่าง Functional Programming และ Imperative Programming คืออะไร
ทั้ง Functional Programming และ Imperative Programming เป็นกระบวนทัศน์การเขียนโปรแกรม
ความแตกต่างระหว่าง Functional Programming และ Imperative Programming คืออะไร
การเขียนโปรแกรมเชิงฟังก์ชันกับความจำเป็น |
|
Functional Programming เป็นกระบวนทัศน์การเขียนโปรแกรมที่ถือว่าการคำนวณเป็นการประเมินฟังก์ชันทางคณิตศาสตร์และหลีกเลี่ยงการเปลี่ยนสถานะและข้อมูลที่ไม่แน่นอน | Imperative Programming เป็นกระบวนทัศน์การเขียนโปรแกรมที่ใช้คำสั่งที่เปลี่ยนสถานะของโปรแกรม |
โครงสร้าง | |
Functional Programming มีการเรียกฟังก์ชันและฟังก์ชันลำดับที่สูงกว่า | Imperative Programming ประกอบด้วย if, else, while สำหรับลูป ฟังก์ชัน คลาส และอ็อบเจกต์ |
ภาษาโปรแกรม | |
Scala, Haskell และ Lisp เป็นภาษาโปรแกรมที่ใช้งานได้จริง | C, C++, Java เป็นภาษาโปรแกรมที่จำเป็น |
โฟกัส | |
Functional Programming เน้นที่ผลลัพธ์สุดท้าย | Imperative Programming เน้นที่การอธิบายวิธีการทำงานของโปรแกรม |
เรียบง่าย | |
การเขียนโปรแกรมฟังก์ชั่นยาก | การเขียนโปรแกรมที่จำเป็นง่ายกว่า |
Summary – การเขียนโปรแกรมเชิงฟังก์ชัน vs การเขียนโปรแกรมเชิงบังคับ
กระบวนทัศน์การเขียนโปรแกรมให้รูปแบบการสร้างโครงสร้างและองค์ประกอบของโปรแกรมคอมพิวเตอร์ Functional Programming และ Imperative Programming เป็นสองสิ่งนี้ ความแตกต่างระหว่าง Functional Programming และ Imperative Programming คือ Functional Programming ถือว่าการคำนวณเป็นฟังก์ชันทางคณิตศาสตร์ และหลีกเลี่ยงการเปลี่ยนแปลงสถานะและข้อมูลที่ไม่แน่นอน ในขณะที่โปรแกรม Imperative Programming ใช้คำสั่งที่เปลี่ยนสถานะของโปรแกรม