ผลต่างระหว่างรุ่นของ "กระบวนทัศน์การเขียนโปรแกรม"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Octahedron80 (คุย | ส่วนร่วม)
Octahedron80 ย้ายหน้า โมเดลการเขียนโปรแกรม ไปยัง กระบวนทัศน์การเขียนโปรแกรม: paradigm=กระบวนทัศน์
Octahedron80 (คุย | ส่วนร่วม)
paradigm=กระบวนทัศน์, model=ตัวแบบ/แบบจำลอง
บรรทัด 1:
'''โมเดลกระบวนทัศน์การเขียนโปรแกรม''' ({{lang-en|Programming paradigm}}) เป็นวิธีการพื้นฐานของ[[การเขียนโปรแกรมคอมพิวเตอร์]] โมเดลกระบวนทัศน์การเขียนโปรแกรมมี 4 โมเดลกระบวนทัศน์หลัก ได้แก่ [[การเขียนโปรแกรมเชิงวัตถุ]] [[การเขียนโปรแกรมเชิงคำสั่ง]] (imperative programming) [[การเขียนโปรแกรมเชิงฟังก์ชัน]] (functional programming) และ[[การเขียนโปรแกรมเชิงตรรกะ]] (logic programming) นอกจากโมเดลกระบวนทัศน์หลักทั้ง 4 แล้ว ยังมีอีกโมเดลกระบวนทัศน์หนึ่งซึ่งขยายความสามารถของโมดูลโปรแกรม โดยใช้วิธีการตัดแทรกโค้ด โมเดลกระบวนทัศน์นี้คือ [[การโปรแกรมเชิงหน่วยย่อย]] (aspect-oriented programming)
 
==ภาพรวม==
โมเดลกระบวนทัศน์การเขียนโปรแกรมเป็นการภาวะนามธรรมของระบบคอมพิวเตอร์ ตัวอย่างเช่น [[โมเดลตัวแบบของฟอน นอยแมน]] (Von Neumann model) เป็นโมเดลกระบวนทัศน์สำหรับคอมพิวเตอร์แบบลำดับ สำหรับ[[การคำนวณแบบคู่ขนาน]]มีโมเดลกระบวนทัศน์ที่เป็นไปได้หลายโมเดลกระบวนทัศน์ซึ่งมีหลายวิธีการที่โปรเซสเซอร์สามารถติดต่อกันได้ วิธีการพื้นฐานเช่น การใช้หน่วยความจำร่วมกัน การส่งข้อมูลให้กับหน่วยความจำอื่น หรือใช้ทั้งสองวิธีร่วมกัน
[[ภาษาโปรแกรม]]หนึ่ง ๆ สามารถรองรับ[[โมเดลกระบวนทัศน์การเขียนโปรแกรมหลายโมเดลกระบวนทัศน์]] ตัวอย่างเช่น ภาษา [[C++]] หรือ [[Object Pascal]] สามารถใช้เขียนได้ทั้งแบบ[[การโปรแกรมเชิงกระบวนการ]] และ[[การโปรแกรมเชิงวัตถุ]] หรือทั้งสองแบบในโปรแกรมเดียวกัน ผู้ออกแบบซอฟต์แวร์ และผู้เขียนโปรแกรมจะเป็นผู้ตัดสินใจว่าโปรแกรมจะเขียนแบบใด
การเขียนโปรแกรมเชิงวัตถุ ผู้เขียนโปรแกรมจะมองโปรแกรมในลักษณะที่เป็นการทำงานร่วมกันของวัตถุ ในขณะที่[[การโปรแกรมเชิงฟังก์ชัน]]จะมองการทำงานของโปรแกรมในลักษณะลำดับของการประเมินฟังก์ชันแบบไม่มีสถานะ เมื่อเขียนโปรแกรมคอมพิวเตอร์ หรือระบบให้ประมวลผลแบบหลายโปรเซสเซอร์ [[การโปรแกรมเชิงกระบวนงาน]] ผู้เขียนโปรแกรมจะมองแอพลิเคชันในลักษณะเซตของกระบวนงานที่ทำพร้อม ๆ กัน ซึ่งทำงานบน[[โครงสร้างข้อมูล]]ที่ใช้ร่วมกันทางตรรกะ
เช่นเดียวกับกลุ่มของ[[วิศวกรรมซอฟต์แวร์]]ที่ต่างกันที่สนับสนุนวิธีการที่แตกต่างกัน [[ภาษาโปรแกรม]]แต่ละภาษาก็สนับสนุนโมเดลกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกัน ภาษาโปรแกรมบางภาษาถูกออกแบบมาสำหรับโมเดลกระบวนทัศน์การโปรแกรมโมเดลกระบวนทัศน์เดียว (เช่น [[Smalltalk]] สนับสนุนเฉพาะการเขียนโปรแกรมเชิงวัตถุ [[Haskell]] สนับสนุนเพียงการเขียนโปรแกรมเชิงฟังก์ชัน เป็นต้น) ในขณะที่ภาษาโปรแกรมอื่น ๆ สนับสนุนโมเดลกระบวนทัศน์การโปรแกรมหลายโมเดลกระบวนทัศน์ (เช่น [[Object Pascal]], C++, [[Java]], [[C#]], [[Visual Basic]], [[Common Lisp]],[[Scheme]], [[Perl]], [[Python]], [[Ruby]], [[Oz]] and [[F#]]) โมเดลกระบวนทัศน์การโปรแกรมหลายโมเดลกระบวนทัศน์เป็นที่รู้กันดีว่ามีเทคนิคอะไรบ้างที่หายไปและมีเทคนิคอะไรบ้างที่ทำได้ ตัวอย่างเช่น โมเดลกระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชัน ไม่ยอมให้มีการใช้ [[side-effects]] ส่วน[[การเขียนโปรแกรมเชิงโครงสร้าง]]ไม่ยอมให้มีคำสั่ง [[goto]] ด้วยเหตุผลนี้ โมเดลกระบวนทัศน์การโปรแกรมใหม่ มักพิจารณาหลักยึด หรือเข้มงวดมาก โดยยึอถือตามโมเดลกระบวนทัศน์ก่อนหน้า การหลีกเลี่ยงเทคนิคที่แน่นอนสามารถทำให้การพิสูจน์ทฤษฎีเกี่ยวกับความถูกต้องของโปรแกรมหรือการทำความเข้าใจพฤติกรรมของมันทำได้ง่ายขึ้น
 
==ภาษาโปรแกรมหลายโมเดลกระบวนทัศน์==
ดูเพิ่ม: [[List of multi-paradigm programming languages]]
 
ภาษาโปรแกรมหลายโมเดลกระบวนทัศน์เป็น[[ภาษาโปรแกรม]]ที่สนับสนุนโมเดลกระบวนทัศน์การเขียนโปรแกรมมากกว่าหนึ่งโมเดลกระบวนทัศน์ เช่นภาษา [[Leda]] ซึ่งสร้างขึ้นโดย [[Timothy Budd]] เขาได้ใส่แนวคิดกับภาษาดังนี้ "แนวคิดของภาษาโปรแกรมหลายโมเดลกระบวนทัศน์ คือการจัดเตรียมกรอบงานสำหรับผู้เขียนโปรแกรมให้สามารถเขียนโปรแกรมได้หลายวิธี สามารถรวมโมเดลกระบวนทัศน์การเขียนโปรแกรมต่าง ๆ ได้อย่างอิสระ" จุดมุ่งหมายของภาษานี้ คือการยอมให้ผู้เขียนโปรแกรมใช้เครื่องมือที่ดีที่สุดสำหรับงานของเขา การยอมรับว่าไม่มีโมเดลกระบวนทัศน์การโปรแกรมใดที่แก้ได้ทุกปัญหาด้วยวิธีการที่ง่ายที่สุดหรือมีประสิทธิภาพมากที่สุด ภาษาโปรแกรมอีกภาษาหนึ่งที่รู้จักกันดี คือ [[C sharp]] และอีกภาษาหนึ่งคือ [[Oz]] ซึ่งเป็นภาษาในกลุ่มตรรกะ และสามารถเขียนโปรแกรมได้ทั้ง[[การโปรแกรมแบบฟังก์ชัน|แบบฟังก์ชัน]] [[การโปรแกรมเชิงวัตถุ|เชิงวัตถุ]] และ[[การทำงานพร้อมกัน]] รวมถึงโมเดลกระบวนทัศน์การโปรแกรมอื่น ๆ ด้วย Oz ถูกออกแบบมามากกว่า10 ปี เพื่อที่รวมโมเดลกระบวนทัศน์การโปรแกรมแบบต่าง ๆ อย่างกลมกลืน โมเดลกระบวนทัศน์การโปรแกรมได้จัดเตรียมวิธีการและโครงสร้างสำหรับการประมวลผลโปรแกรมสำหรับผู้เขียนโปรแกรม
 
[[หมวดหมู่:การเขียนโปรแกรม]]