กลับไปหน้าบทความ

อ่าน 6 นาที

รูปแบบการเขียนโปรแกรม

เปลี่ยนทางจากพหูพจน์/การเปลี่ยนเส้นทางที่ไม่สามารถพิมพ์ได้

รูปแบบการเขียนโปรแกรมคือวิธีการคิดและโครงสร้างระดับสูงในการดำเนินการโปรแกรมคอมพิวเตอร์ภาษาโปรแกรมสามารถจำแนกได้ว่ารองรับรูปแบบการเขียนโปรแกรมหนึ่งรูปแบบหรือหลายรูปแบบ

รูปแบบการเขียนโปรแกรม

รูปแบบการเขียนโปรแกรมคือวิธีการคิดและโครงสร้างระดับสูงในการดำเนินการโปรแกรมคอมพิวเตอร์ภาษาโปรแกรมสามารถจำแนกได้ว่ารองรับรูปแบบการเขียนโปรแกรมหนึ่งรูปแบบหรือหลายรูปแบบ[ 1 ]

รูปแบบการเขียนโปรแกรม (Paradigms) ถูกแบ่งและอธิบายตามมิติต่างๆ ของการเขียนโปรแกรม รูปแบบบางอย่างเกี่ยวข้องกับผลกระทบของแบบจำลองการทำงานเช่น การอนุญาตให้เกิดผลข้างเคียงหรือลำดับการทำงานถูกกำหนดโดยแบบจำลองการทำงานหรือไม่ รูปแบบอื่นๆ เกี่ยวกับวิธีการจัดระเบียบโค้ด เช่น การจัดกลุ่มเป็นหน่วยที่รวมทั้งสถานะและพฤติกรรม และรูปแบบอื่นๆ เกี่ยวกับไวยากรณ์และโครงสร้างประโยค

รูปแบบการเขียนโปรแกรมทั่วไปบางส่วนได้แก่ (แสดงในความสัมพันธ์แบบลำดับชั้น ): [ 2 ] [ 3 ] [ 4 ]

  • คำสั่ง – โค้ดจะควบคุมการไหลของการทำงานและการเปลี่ยนแปลงสถานะโดยตรง ประกอบด้วยคำสั่งที่ระบุอย่างชัดเจนเพื่อเปลี่ยนแปลงสถานะของโปรแกรม
  • การเขียน โปรแกรมแบบประกาศ (Declarative ) – โค้ดจะประกาศคุณสมบัติของผลลัพธ์ที่ต้องการ แต่ไม่ได้ระบุวิธีการคำนวณ อธิบายว่าการคำนวณควรทำอะไร โดยไม่ระบุการเปลี่ยนแปลงสถานะโดยละเอียด
    • เชิงฟังก์ชัน – ผลลัพธ์ที่ต้องการจะถูกประกาศเป็นค่าของการประเมินฟังก์ชันหลายๆ ครั้ง ใช้การประเมินฟังก์ชันทางคณิตศาสตร์ และหลีกเลี่ยงสถานะและข้อมูลที่เปลี่ยนแปลงได้
    • ตรรกศาสตร์ – ผลลัพธ์ที่ต้องการจะถูกประกาศว่าเป็นคำตอบของคำถามเกี่ยวกับระบบข้อเท็จจริงและกฎเกณฑ์ โดยใช้ตรรกศาสตร์ทางคณิตศาสตร์ที่ชัดเจนในการเขียนโปรแกรม
    • เชิงตอบสนอง – ผลลัพธ์ที่ต้องการจะถูกกำหนดด้วยกระแสข้อมูลและการแพร่กระจายของการเปลี่ยนแปลง
  • การเขียนโปรแกรมแบบขนาน – มีโครงสร้างภาษาสำหรับการทำงานแบบขนาน ซึ่งอาจเกี่ยวข้องกับการทำงานแบบมัลติเธรด การสนับสนุนการประมวลผลแบบกระจาย การส่งข้อความ ทรัพยากรที่ใช้ร่วมกัน (รวมถึงหน่วยความจำที่ใช้ร่วมกัน) หรือฟิวเจอร์ส
    • การเขียนโปรแกรมแบบ Actor – การคำนวณแบบขนานโดยมีActor แต่ละตัวทำการตัดสินใจในระดับท้องถิ่นเพื่อตอบสนองต่อสภาพแวดล้อม (สามารถแสดงพฤติกรรมเห็นแก่ตัวหรือแข่งขันได้)
  • การเขียนโปรแกรมแบบมีข้อจำกัด – ความสัมพันธ์ระหว่างตัวแปรต่างๆ จะถูกแสดงออกมาในรูปของข้อจำกัด (หรือเครือข่ายข้อจำกัด) ซึ่งกำหนดทิศทางของคำตอบที่เป็นไปได้ (โดยใช้การแก้ปัญหาข้อจำกัดหรือ อัลกอริธึ มซิมเพล็กซ์ )
  • การเขียนโปรแกรมแบบ Dataflow – การคำนวณสูตรใหม่โดยอัตโนมัติเมื่อค่าข้อมูลเปลี่ยนแปลง (เช่นสเปรดชีต )
  • การเขียนโปรแกรมแบบกระจาย – รองรับคอมพิวเตอร์อิสระหลายเครื่องที่สื่อสารกันผ่านเครือข่ายคอมพิวเตอร์
  • การเขียนโปรแกรมแบบเจเนริก – ใช้ขั้นตอนวิธีที่เขียนขึ้นโดยใช้ประเภทข้อมูลที่จะระบุในภายหลัง จากนั้นจึงสร้างอินสแตนซ์ของประเภทข้อมูลนั้นตามความจำเป็นสำหรับประเภทข้อมูลเฉพาะที่ให้มาเป็นพารามิเตอร์
  • เมตาโปรแกรมมิ่ง – การเขียนโปรแกรมที่เขียนหรือจัดการโปรแกรมอื่น (หรือตัวมันเอง) ในฐานะข้อมูล หรือที่ทำส่วนหนึ่งของงานในขั้นตอนการคอมไพล์ ซึ่งโดยปกติแล้วจะทำในขั้นตอนการทำงาน
  • การเขียนโปรแกรมแบบไปป์ไลน์ – การเปลี่ยนแปลงไวยากรณ์อย่างง่ายเพื่อเพิ่มไวยากรณ์สำหรับการเรียกฟังก์ชันซ้อนกันในภาษาที่ออกแบบมาแต่เดิมโดยไม่มีไวยากรณ์ดังกล่าว
  • การเขียนโปรแกรมโดยใช้กฎเกณฑ์ – เครือข่ายของกฎพื้นฐานที่ประกอบเป็นฐานความรู้ และสามารถนำไปใช้กับระบบผู้เชี่ยวชาญ การอนุมาน และการแก้ปัญหาได้
  • การเขียนโปรแกรมแบบภาพ – การจัดการองค์ประกอบของโปรแกรมด้วยภาพกราฟิก แทนการระบุด้วยข้อความ (เช่นSimulink ) หรือเรียกอีกอย่างว่าการเขียนโปรแกรมแบบแผนภาพ

ภาพรวม

ภาพรวมของกระบวนทัศน์การเขียนโปรแกรมต่างๆ ตามที่ Peter Van Roy [ 5 ] : 5 [ 6 ]

รูปแบบการเขียนโปรแกรมมาจากงานวิจัยทางวิทยาศาสตร์คอมพิวเตอร์ เกี่ยวกับแนวทางปฏิบัติที่มีอยู่ในการพัฒนาซอฟต์แวร์ผลการวิจัยช่วยให้สามารถอธิบายและเปรียบเทียบแนวทางการเขียนโปรแกรมและภาษาที่ใช้ในการเขียนโปรแกรมได้ เพื่อเป็นข้อมูลประกอบ งานวิจัยในสาขาอื่น ๆ ศึกษาเกี่ยวกับ กระบวนการทางวิศวกรรมซอฟต์แวร์และอธิบายวิธีการ ต่าง ๆ เพื่ออธิบายและเปรียบเทียบกระบวนการเหล่านั้น

ภาษาโปรแกรมสามารถอธิบายได้ในแง่ของกระบวนทัศน์ ภาษาบางภาษาสนับสนุนเพียงกระบวนทัศน์เดียว ตัวอย่างเช่นSmalltalkสนับสนุนการเขียนโปรแกรมเชิงวัตถุ และHaskellสนับสนุนการเขียนโปรแกรมเชิงฟังก์ชัน ภาษาโปรแกรมส่วนใหญ่สนับสนุนหลายกระบวนทัศน์ ตัวอย่างเช่น โปรแกรมที่เขียนด้วยC++ , Object PascalหรือPHPสามารถเป็นแบบเชิงกระบวนการ ล้วนๆ เป็น แบบเชิงวัตถุล้วนๆหรืออาจมีส่วนประกอบของทั้งสองกระบวนทัศน์ หรืออื่นๆ ก็ได้

เมื่อใช้ภาษาโปรแกรมที่รองรับหลายรูปแบบการเขียนโปรแกรม นักพัฒนาจะเลือกใช้ส่วนประกอบของรูปแบบการเขียนโปรแกรมนั้นๆ แต่การเลือกนี้อาจไม่ได้คำนึงถึงรูปแบบการเขียนโปรแกรมโดยตรงเสมอไป นักพัฒนามักใช้คุณสมบัติของภาษาตามที่ภาษานั้นมีให้ และเท่าที่นักพัฒนารู้จัก การจัดหมวดหมู่โค้ด ที่ได้ ตามรูปแบบการเขียนโปรแกรมมักเป็นกิจกรรมทางวิชาการที่ทำในภายหลัง

ภาษาโปรแกรมที่จัดอยู่ในประเภทกระบวนทัศน์เชิงคำสั่งมีคุณลักษณะหลักสองประการ คือ ระบุลำดับการทำงานของคำสั่งต่างๆ ด้วยโครงสร้างที่ควบคุมลำดับนั้นอย่างชัดเจน และอนุญาตให้มีผลข้างเคียงได้ กล่าวคือ สถานะสามารถเปลี่ยนแปลงได้ ณ จุดเวลาหนึ่งภายในหน่วยโค้ดหนึ่ง แล้วอ่านค่ากลับได้ในภายหลัง ณ จุดเวลาอื่นภายในหน่วยโค้ดอื่น การสื่อสารระหว่างหน่วยโค้ดนั้นไม่ได้ระบุไว้อย่างชัดเจน

ในทางตรงกันข้าม ภาษาในรูปแบบประกาศจะไม่ระบุลำดับในการดำเนินการ แต่จะจัดเตรียมการดำเนินการที่มีอยู่จำนวนหนึ่งในระบบ พร้อมกับเงื่อนไขที่อนุญาตให้แต่ละการดำเนินการดำเนินการได้[ 7 ] การนำแบบจำลองการดำเนินการของภาษาไปใช้จะติดตามว่าการดำเนินการใดบ้างที่สามารถดำเนินการได้อย่างอิสระ และเลือกลำดับโดยอิสระ ดูเพิ่มเติมได้ที่ การเปรียบเทียบภาษาการ เขียน โปรแกรมหลายรูปแบบ

ใน การเขียนโปรแกรม เชิงวัตถุโค้ดจะถูกจัดระเบียบเป็นวัตถุซึ่งประกอบด้วยสถานะที่เป็นของและ (โดยปกติ) ถูกควบคุมโดยโค้ดของวัตถุนั้น ภาษาเชิงวัตถุส่วนใหญ่ก็เป็นภาษาเชิงคำสั่งด้วยเช่นกัน

ในการเขียนโปรแกรมเชิงวัตถุ โปรแกรมจะถูกมองว่าเป็นชุดของวัตถุที่โต้ตอบกัน ในการเขียนโปรแกรมเชิงฟังก์ชันโปรแกรมจะถูกมองว่าเป็นลำดับของการประเมินฟังก์ชันที่ไม่มีสถานะ เมื่อเขียนโปรแกรมคอมพิวเตอร์หรือระบบที่มีโปรเซสเซอร์จำนวนมาก ในการเขียนโปรแกรมเชิงกระบวนการ โปรแกรมจะถูกมองว่าเป็นชุดของกระบวนการที่ทำงานพร้อมกันซึ่งกระทำกับ โครงสร้างข้อมูล เชิงตรรกะ ที่ ใช้ร่วมกัน

รูปแบบการเขียนโปรแกรมหลายรูปแบบเป็นที่รู้จักกันดีทั้งในด้านเทคนิคที่ ห้ามใช้และเทคนิค ที่ สนับสนุนตัวอย่างเช่น การเขียนโปรแกรมเชิงฟังก์ชันบริสุทธิ์ไม่อนุญาตให้ใช้ผลข้างเคียงในขณะที่การเขียนโปรแกรมเชิงโครงสร้างไม่อนุญาตให้ ใช้โครงสร้าง gotoส่วนหนึ่งเป็นเพราะเหตุนี้ รูปแบบการเขียนโปรแกรมใหม่จึงมักถูกมองว่าเป็นแบบยึดติดกับหลักการหรือเข้มงวดเกินไปโดยผู้ที่คุ้นเคยกับรูปแบบเก่า[ 8 ]อย่างไรก็ตาม การหลีกเลี่ยงเทคนิคบางอย่างสามารถทำให้เข้าใจพฤติกรรมของโปรแกรมได้ง่ายขึ้น และพิสูจน์ทฤษฎีบทเกี่ยวกับความถูกต้องของโปรแกรมได้

รูปแบบการเขียนโปรแกรมยังสามารถเปรียบเทียบได้กับแบบจำลองการเขียนโปรแกรมซึ่งช่วยให้สามารถเรียกใช้แบบจำลองการทำงาน ได้ โดยใช้เพียง API เท่านั้น แบบจำลองการเขียนโปรแกรมยังสามารถจำแนกออกเป็นรูปแบบต่างๆ ได้ตามคุณลักษณะของแบบจำลองการทำงานด้วย

สำหรับการประมวลผลแบบขนานการใช้แบบจำลองการเขียนโปรแกรมแทนภาษาเป็นเรื่องปกติ เหตุผลก็คือ รายละเอียดของฮาร์ดแวร์แบบขนานจะรั่วไหลเข้าไปในนามธรรมที่ใช้ในการเขียนโปรแกรมฮาร์ดแวร์ ทำให้โปรแกรมเมอร์ต้องแมปรูปแบบในอัลกอริทึมไปยังรูปแบบในแบบจำลองการทำงาน (ซึ่งถูกแทรกเข้ามาเนื่องจากการรั่วไหลของฮาร์ดแวร์เข้าไปในนามธรรม) ผลที่ตามมาคือ ไม่มีภาษาการเขียนโปรแกรมแบบขนานภาษาใดที่เหมาะสมกับปัญหาการคำนวณทั้งหมด ดังนั้น การใช้ภาษาแบบลำดับพื้นฐานและแทรกการเรียกใช้ API ไปยังแบบจำลองการทำงานแบบขนานผ่านแบบจำลองการเขียนโปรแกรมจึงสะดวกกว่า แบบจำลองการเขียนโปรแกรมแบบขนานดังกล่าวสามารถจำแนกได้ตามนามธรรมที่สะท้อนถึงฮาร์ดแวร์ เช่นหน่วยความจำร่วมหน่วยความจำแบบกระจายที่มีการส่งข้อความแนวคิดของตำแหน่งที่มองเห็นได้ในโค้ด และอื่นๆ สิ่งเหล่านี้สามารถพิจารณาได้ว่าเป็นรูปแบบของกระบวนทัศน์การเขียนโปรแกรมที่ใช้ได้เฉพาะกับภาษาและแบบจำลองการเขียนโปรแกรมแบบขนานเท่านั้น

การวิจารณ์

นักวิจัยภาษาโปรแกรมบางคนวิจารณ์แนวคิดเรื่องกระบวนทัศน์ในการจำแนกประเภทของภาษาโปรแกรม เช่น Harper [ 9 ]และ Krishnamurthi [ 10 ] พวกเขาโต้แย้งว่าภาษาโปรแกรมหลายภาษาไม่สามารถจำแนกได้อย่างเคร่งครัดให้อยู่ในกระบวนทัศน์เดียว แต่รวมคุณสมบัติจากหลายกระบวนทัศน์ไว้ด้วยกัน ดู การเปรียบเทียบภาษา โปรแกรม หลายกระบวนทัศน์

ประวัติศาสตร์

วิธีการเขียนโปรแกรมที่แตกต่างกันได้พัฒนาขึ้นตามกาลเวลา การจำแนกประเภทของแต่ละวิธีนั้นมักจะถูกอธิบายไว้ในขณะที่วิธีนั้นได้รับการพัฒนาขึ้นเป็นครั้งแรก แต่บ่อยครั้งที่ไม่ได้ถูกอธิบายจนกระทั่งเวลาผ่านไปนานแล้วในภายหลัง วิธี การเขียน โปรแกรมแบบมีโครงสร้าง (structured programming)ซึ่งได้รับการสนับสนุนมาตั้งแต่ช่วงกลางทศวรรษ 1960 แนวคิดของกระบวนทัศน์การเขียนโปรแกรมนั้นมีมาอย่างน้อยตั้งแต่ปี 1978 ใน การบรรยาย รางวัล Turing AwardของRobert W. Floydในหัวข้อThe Paradigms of Programmingซึ่งอ้างถึงแนวคิดของกระบวนทัศน์ที่Thomas Kuhn ใช้ ในหนังสือThe Structure of Scientific Revolutions (1962) [ 11 ]ภาษาการเขียนโปรแกรมในยุคแรกๆ ไม่มีกระบวนทัศน์การเขียนโปรแกรมที่กำหนดไว้อย่างชัดเจน และบางครั้งโปรแกรมก็ใช้คำสั่ง goto อย่างกว้างขวาง ซึ่งการใช้คำสั่ง goto อย่างแพร่หลายทำให้เกิดโค้ดสปาเก็ตตี้ที่ยากต่อการเข้าใจและบำรุงรักษา สิ่งนี้จึงนำไปสู่การพัฒนากระบวนทัศน์การเขียนโปรแกรมแบบมีโครงสร้างที่ไม่อนุญาตให้ใช้คำสั่ง goto แต่ให้ใช้เฉพาะโครงสร้างการเขียนโปรแกรมที่มีโครงสร้างมากขึ้นเท่านั้น[ 12 ]

ภาษาและกระบวนทัศน์

รหัสเครื่อง

รหัสเครื่องเป็นระดับต่ำสุดของการเขียนโปรแกรมคอมพิวเตอร์ เนื่องจากเป็นคำสั่งเครื่องที่กำหนดพฤติกรรมในระดับนามธรรมที่ต่ำที่สุดเท่าที่จะเป็นไปได้สำหรับคอมพิวเตอร์ เนื่องจากเป็นวิธีการเขียนโค้ดที่กำหนดรายละเอียดมากที่สุด จึงถูกจัดอยู่ในประเภทของการเขียนโปรแกรมเชิงคำสั่ง (imperative)

บางครั้งมันถูกเรียกว่าภาษา โปรแกรมรุ่นแรก

การประกอบ

ภาษาแอสเซมบลีได้นำเอาตัวย่อมาใช้แทนคำสั่งเครื่องและที่อยู่หน่วยความจำภาษาแอสเซมบลีจัดอยู่ในประเภทภาษาเชิงคำสั่ง และบางครั้งเรียกว่าภาษา โปรแกรมรุ่นที่สอง

ในทศวรรษ 1960 ภาษาแอสเซมบลีได้รับการพัฒนาขึ้นเพื่อรองรับการคัดลอกไลบรารีและการสร้างมาโครแบบมีเงื่อนไขที่ค่อนข้างซับซ้อน รวมถึงความสามารถในการประมวลผลล่วงหน้า การเรียกใช้ซับรูทีนตัวแปรภายนอก และส่วนทั่วไป (โกลบอล) ซึ่งช่วยให้สามารถนำโค้ดกลับมาใช้ซ้ำได้อย่างมาก และแยกออกจากรายละเอียดเฉพาะของฮาร์ดแวร์ผ่านการใช้ตัวดำเนินการเชิงตรรกะ เช่น READ/WRITE/GET/PUT ภาษาแอสเซมบลีถูกใช้และยังคงถูกใช้ในระบบที่สำคัญต่อเวลา และมักใช้ในระบบฝังตัวเนื่องจากให้การควบคุมการทำงานของเครื่องได้มากที่สุด

ภาษาเชิงกระบวนการ

ภาษาเชิงขั้นตอนหรือที่เรียกว่าภาษาโปรแกรมรุ่นที่สามเป็นภาษาโปรแกรมระดับสูง กลุ่มแรกๆ โดยมีคำศัพท์เฉพาะที่เกี่ยวข้องกับปัญหาที่กำลังแก้ไข ตัวอย่างเช่น

  • ภาษาโปรแกรมเชิงธุรกิจทั่วไป ( COBOL ) – ใช้คำศัพท์เช่นไฟล์ย้ายและคัดลอก
  • FORTRAN (Formula Translation ) – เป็นภาษาที่ใช้ ศัพท์ ทางคณิตศาสตร์โดยได้รับการพัฒนาขึ้นเพื่อแก้ปัญหาทางวิทยาศาสตร์และวิศวกรรมเป็นหลัก
  • ภาษาอัลโกริธมิก ( ALGOL ) – มุ่งเน้นที่จะเป็นภาษาที่เหมาะสมสำหรับการกำหนดอัลกอริธึมโดยใช้ศัพท์ทางคณิตศาสตร์ และมุ่งเป้าไปที่ปัญหาทางวิทยาศาสตร์และวิศวกรรม เช่นเดียวกับ FORTRAN
  • ภาษาโปรแกรมมิ่งหมายเลขหนึ่ง ( PL/I ) – ภาษาโปรแกรมมิ่งแบบผสมผสานระหว่างเชิงพาณิชย์และวิทยาศาสตร์ที่ใช้งานได้ทั่วไปและรองรับตัวชี้ (pointers )
  • ภาษา BASIC (All purpose Symbolic Instruction Code ) สำหรับผู้เริ่มต้น – ถูกพัฒนาขึ้นเพื่อให้ผู้คนจำนวนมากขึ้นสามารถเขียนโปรแกรมได้
  • C  – ภาษาโปรแกรมอเนกประสงค์ ซึ่งได้รับการพัฒนาขึ้นครั้งแรกโดยเดนนิส ริตชีระหว่างปี 1969 ถึง 1973 ที่ห้องปฏิบัติการ AT&T Bell Labs

ภาษาเหล่านี้จัดอยู่ในประเภทของกระบวนทัศน์เชิงขั้นตอน โดยจะควบคุมกระบวนการทีละขั้นตอนที่โปรแกรมคอมพิวเตอร์ปฏิบัติตามโดยตรง ดังนั้น ประสิทธิภาพและประสิทธิผลของโปรแกรมดังกล่าวจึงขึ้นอยู่กับทักษะของโปรแกรมเมอร์เป็นอย่างมาก

การเขียนโปรแกรมเชิงวัตถุ

เพื่อเป็นการปรับปรุงภาษาโปรแกรมเชิงขั้นตอน จึง ได้มีการสร้างภาษา โปรแกรมเชิงวัตถุ (OOP) ขึ้นมา เช่นSimula , Smalltalk , C++ , Eiffel , Python , PHP , JavaและC#ในภาษาเหล่านี้ข้อมูลและเมธอดสำหรับจัดการข้อมูลจะอยู่ในหน่วยโค้ดเดียวกันที่เรียกว่าวัตถุ การ ห่อ หุ้ม นี้ทำให้มั่นใจได้ว่าวิธีเดียวที่วัตถุจะเข้าถึงข้อมูลได้คือผ่านทางเมธอดของวัตถุที่บรรจุข้อมูลนั้น ดังนั้น การทำงานภายในของวัตถุจึงสามารถเปลี่ยนแปลงได้โดยไม่ส่งผลกระทบต่อโค้ดที่ใช้งานวัตถุนั้น

มีข้อโต้แย้งเกิดขึ้นจากAlexander Stepanov , Richard Stallman [ 13 ]และโปรแกรมเมอร์คนอื่นๆ เกี่ยวกับประสิทธิภาพของกระบวนทัศน์ OOP เมื่อเทียบกับกระบวนทัศน์เชิงกระบวนการ ความจำเป็นที่วัตถุทุกชิ้นจะต้องมีเมธอดแบบเชื่อมโยงทำให้ผู้ที่สงสัยบางคนมองว่า OOP เกี่ยวข้องกับซอฟต์แวร์ที่บวมการพยายามแก้ไขปัญหานี้เกิดขึ้นผ่านทางโพลีมอร์ฟิซึม

แม้ว่าภาษา OOP ส่วนใหญ่จะเป็นภาษารุ่นที่สาม แต่ก็เป็นไปได้ที่จะสร้างภาษาแอสเซมบลีเชิงวัตถุ ภาษาแอสเซมบลีระดับสูง (HLA) เป็นตัวอย่างหนึ่งของภาษาที่รองรับชนิดข้อมูลขั้นสูงและการเขียนโปรแกรมภาษาแอสเซมบลีเชิงวัตถุอย่างเต็มที่ แม้ว่าจะมีต้นกำเนิดมาจากยุคแรกก็ตาม ดังนั้น รูปแบบการเขียนโปรแกรมที่แตกต่างกันจึงอาจมองได้ว่าเป็นเหมือนแรงบันดาลใจของผู้สนับสนุนมากกว่าที่จะแสดงถึงความก้าวหน้าจากระดับหนึ่งไปอีกระดับหนึ่ง การเปรียบเทียบประสิทธิภาพของรูปแบบการเขียนโปรแกรมที่แข่งขันกันอย่างแม่นยำมักทำได้ยากขึ้นเนื่องจากคำศัพท์ใหม่และแตกต่างกันที่ใช้กับเอนทิตีและกระบวนการที่คล้ายคลึงกัน รวมถึงความแตกต่างในการใช้งานมากมายในแต่ละภาษา

ภาษาเชิงประกาศ

โปรแกรมเชิงประกาศ (Declarative programming)อธิบายว่าปัญหาคืออะไร ไม่ใช่ว่าจะแก้ปัญหาอย่างไร โครงสร้างของโปรแกรมจะอยู่ในรูปของชุดคุณสมบัติที่จะค้นหาในผลลัพธ์ที่คาดหวัง ไม่ใช่ในรูปของขั้นตอนที่จะต้องปฏิบัติตาม เมื่อได้รับฐานข้อมูลหรือชุดกฎ คอมพิวเตอร์จะพยายามหาคำตอบที่ตรงกับคุณสมบัติที่ต้องการทั้งหมด ตัวอย่างของภาษาเชิงประกาศ ได้แก่ ภาษา SQL ซึ่งเป็น ภาษารุ่นที่สี่ และตระกูลภาษาเชิงฟังก์ชันและภาษาโปรแกรมเชิงตรรกะ

การเขียนโปรแกรมเชิงฟังก์ชันเป็นส่วนย่อยของการเขียนโปรแกรมเชิงประกาศ โปรแกรมที่เขียนโดยใช้แนวคิดนี้ใช้ฟังก์ชันซึ่งเป็นบล็อกของโค้ดที่ออกแบบมาให้ทำงานเหมือนฟังก์ชันทางคณิตศาสตร์ภาษาโปรแกรมเชิงฟังก์ชันไม่สนับสนุนการเปลี่ยนแปลงค่าของตัวแปรผ่านการกำหนดค่าแต่จะใช้การเรียกซ้ำ (recursion)แทน เป็นอย่างมาก

แนวคิดการเขียนโปรแกรมเชิงตรรกะมองว่าการคำนวณเป็นการให้เหตุผลอัตโนมัติเหนือชุดความรู้ ข้อเท็จจริงเกี่ยวกับขอบเขตของปัญหาจะถูกแสดงออกมาในรูปของสูตรตรรกะ และโปรแกรมจะถูกดำเนินการโดยการใช้กฎการอนุมานกับสูตรเหล่านั้นจนกว่าจะพบคำตอบของปัญหา หรือจนกว่าจะพิสูจน์ได้ว่าชุดสูตรนั้นไม่สอดคล้องกัน

รูปแบบอื่นๆ

การเขียนโปรแกรมเชิงสัญลักษณ์เป็นกระบวนทัศน์ที่อธิบายโปรแกรมที่สามารถจัดการสูตรและส่วนประกอบของโปรแกรมเป็นข้อมูลได้[ 4 ]ดังนั้นโปรแกรมจึงสามารถปรับเปลี่ยนตัวเองได้อย่างมีประสิทธิภาพ และดูเหมือนว่าจะ "เรียนรู้" ทำให้เหมาะสำหรับแอปพลิเคชันต่างๆ เช่นปัญญาประดิษฐ์ระบบผู้เชี่ยวชาญ การประมวล ผลภาษาธรรมชาติและเกมคอมพิวเตอร์ ภาษาที่รองรับกระบวนทัศน์นี้ได้แก่LispและProlog [ 14 ]

โครงสร้าง การเขียนโปรแกรมที่สามารถหาอนุพันธ์ได้จะจัดโครงสร้างโปรแกรมเพื่อให้สามารถหาอนุพันธ์ได้ ตลอดทั้ง โปรแกรมโดยปกติผ่านการหาอนุพันธ์อัตโนมัติ[ 15 ] [ 16 ]

การเขียนโปรแกรมเชิงวรรณกรรมซึ่งเป็นรูปแบบหนึ่งของการเขียนโปรแกรมเชิงคำสั่งจะจัดโครงสร้างโปรแกรมให้เป็นเว็บที่เน้นมนุษย์เป็นศูนย์กลาง เช่นเดียวกับ บทความ ไฮเปอร์เท็กซ์ กล่าวคือ เอกสารประกอบเป็นส่วนสำคัญของโปรแกรม และโครงสร้างของโปรแกรมนั้นเป็นไปตามตรรกะของการอธิบายร้อยแก้ว มากกว่าความสะดวกของคอมไพเลอร์

เทคนิค การเขียนโปรแกรมเชิงสัญลักษณ์เช่นการเขียนโปรแกรมแบบสะท้อน (reflection) ซึ่งช่วยให้โปรแกรมสามารถอ้างอิงถึงตัวเองได้ อาจถูกพิจารณาว่าเป็นกระบวนทัศน์การเขียนโปรแกรมอย่างหนึ่งได้เช่นกัน อย่างไรก็ตาม นี่เป็นเพียงการเข้ากันได้กับกระบวนทัศน์หลักๆ ดังนั้นจึงไม่ใช่กระบวนทัศน์ที่แท้จริงในตัวของมันเอง

ดูเพิ่มเติม

  • การจำแนกประเภทของกระบวนทัศน์การเขียนโปรแกรมหลัก
  • รูปแบบการเขียนโปรแกรมพัฒนาและได้รับการยอมรับได้อย่างไร?
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Programming_paradigm&oldid=1350371559 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ รูปแบบการเขียนโปรแกรม

รูปแบบการเขียนโปรแกรมคือวิธีการคิดและโครงสร้างระดับสูงในการดำเนินการโปรแกรมคอมพิวเตอร์ภาษาโปรแกรมสามารถจำแนกได้ว่ารองรับรูปแบบการเขียนโปรแกรมหนึ่งรูปแบบหรือหลายรูปแบบ

ภาพรวม

รูปแบบการเขียนโปรแกรมมาจาก งานวิจัย ทางวิทยาศาสตร์คอมพิวเตอร์ เกี่ยวกับแนวทางปฏิบัติที่มีอยู่ใน การพัฒนาซอฟต์แวร์ ผลการวิจัยช่วยให้สามารถอธิบายและเปรียบเทียบแนวทางการเขียนโปรแกรมและภาษาที่ใช้ในการเขียนโปรแกรมได้ เพื่อเป็นข้อมูลประกอบ งานวิจัยในสาขาอื่น ๆ...

การวิจารณ์

นักวิจัยภาษาโปรแกรมบางคนวิจารณ์แนวคิดเรื่องกระบวนทัศน์ในการจำแนกประเภทของภาษาโปรแกรม เช่น Harper [ 9 ] และ Krishnamurthi [ 10 ] พวกเขาโต้แย้งว่าภาษาโปรแกรมหลายภาษาไม่สามารถจำแนกได้อย่างเคร่งครัดให้อยู่ในกระบวนทัศน์เดียว...

ประวัติศาสตร์

วิธีการเขียนโปรแกรมที่แตกต่างกันได้พัฒนาขึ้นตามกาลเวลา การจำแนกประเภทของแต่ละวิธีนั้นมักจะถูกอธิบายไว้ในขณะที่วิธีนั้นได้รับการพัฒนาขึ้นเป็นครั้งแรก แต่บ่อยครั้งที่ไม่ได้ถูกอธิบายจนกระทั่งเวลาผ่านไปนานแล้วในภายหลัง วิธี การเขียน โปรแกรมแบบมีโครงสร้าง...