โมเดลการเขียนโปรแกรม
โมเดลการเขียนโปรแกรม (อังกฤษ: 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 ปี เพื่อที่รวมโมเดลการโปรแกรมแบบต่าง ๆ อย่างกลมกลืน โมเดลการโปรแกรมได้จัดเตรียมวิธีการและโครงสร้างสำหรับการประมวลผลโปรแกรมสำหรับผู้เขียนโปรแกรม