ลิงก์ข้ามภาษาในบทความนี้ มีไว้ให้ผู้อ่านและผู้ร่วมแก้ไขบทความศึกษาเพิ่มเติมโดยสะดวก เนื่องจากวิกิพีเดียภาษาไทยยังไม่มีบทความดังกล่าว กระนั้น ควรรีบสร้างเป็นบทความโดยเร็วที่สุด |
กระบวนทัศน์การเขียนโปรแกรม (อังกฤษ: Programming paradigm) เป็นวิธีแยกประเภทภาษาโปรแกรมโดยใช้คุณลักษณ์ในการเขียนโปรแกรมคอมพิวเตอร์ โดยใช้ภาษานั้น ๆ ภาษาโปรแกรมที่มีทั้งหมด สามารถแยกเป็นกระบวนทัศน์ต่าง ๆ ได้หลากหลายแบบ การแยกภาษาโปรแกรมเป็นกระบวนทัศน์หลาย ๆ กระบวนทัศน์ อาจทำการจำแนกได้อาศัยความแตกต่างในกระบวนการใช้โมเดลคำสั่ง (Execution model) เพื่อทำให้โปรแกรมทำตามชุดคำสั่งที่วางเอาไว้ หรือ อาจจำแนกเป็นกระบวนทัศน์ได้ตามวิธีการในการเขียนโค้ดที่แตกต่างกันไปในแต่ละภาษาโปรแกรม เช่น การเขียนโค้ดโดยเสมือนว่าเป็นวัตถุที่จับต้องได้ และในบางกรณีอาจจำแนกกระบวนทัศน์ได้โดยใช้หลักภาษาที่ใช้ในการเขียนโปรแกรม (Syntax)
กระบวนทัศน์การเขียนโปรแกรมสามารถแยกได้โดยทั่วไปดังนี้ (ในวิทยาการคอมพิวเตอร์มีการจำแนกกระบวนทัศน์การเขียนโปรแกรมไว้มากกว่าที่กล่าวไว้ด้านล่าง):
- การเขียนโปรแกรมเชิงคำสั่ง (imperative programming) โปรแกรมเมอร์จะสั่งให้คอมพิวเตอร์เปลี่ยนสถานะด้วยคำสั่งเป็นขั้นตอน
- การเขียนโปรแกรมเชิงกระบวนการ (procedural programming) จัดมัดกลุ่มคำสั่งให้กลายเป็นกระบวนการ (คำสั่งหลายคำสั่ง -> กระบวนการ)
- การเขียนโปรแกรมเชิงวัตถุ (object-oriented programming) จับมัดกลุ่มคำสั่งกับสถานะโปรแกรมที่รันอยู่ มีจุดประสงค์เพื่อทำให้โค้ดโปรแกรมมีลักษณะเหมือนวัตถุที่จับต้องได้ในชีวิตจริง
- การเขียนโปรแกรมเชิงประกาศ (declarative programming)
- การเขียนโปรแกรมเชิงฟังก์ชัน (functional programming)
- การเขียนโปรแกรมเชิงตรรกะ (logic programming)
- การเขียนโปรแกรมเชิงคณิตศาสตร์ (mathematical programming)
ภาพรวม
กระบวนทัศน์การเขียนโปรแกรมเป็นภาวะนามธรรมของระบบคอมพิวเตอร์ ตัวอย่างเช่น (Von Neumann architecture) เป็นกระบวนทัศน์สำหรับคอมพิวเตอร์แบบลำดับ สำหรับมีกระบวนทัศน์ที่เป็นไปได้หลายกระบวนทัศน์ซึ่งมีหลายวิธีการที่โปรเซสเซอร์สามารถติดต่อกันได้ วิธีการพื้นฐานเช่น การใช้หน่วยความจำร่วมกัน การส่งข้อมูลให้กับหน่วยความจำอื่น หรือใช้ทั้งสองวิธีร่วมกัน ภาษาโปรแกรมหนึ่ง ๆ สามารถรองรับ ตัวอย่างเช่น ภาษา หรือ Object Pascal สามารถใช้เขียนได้ทั้งแบบ และการโปรแกรมเชิงวัตถุ หรือทั้งสองแบบในโปรแกรมเดียวกัน ผู้ออกแบบซอฟต์แวร์ และผู้เขียนโปรแกรมจะเป็นผู้ตัดสินใจว่าโปรแกรมจะเขียนแบบใด การเขียนโปรแกรมเชิงวัตถุ ผู้เขียนโปรแกรมจะมองโปรแกรมในลักษณะที่เป็นการทำงานร่วมกันของวัตถุ ในขณะที่จะมองการทำงานของโปรแกรมในลักษณะลำดับของการประเมินฟังก์ชันแบบไม่มีสถานะ เมื่อเขียนโปรแกรมคอมพิวเตอร์ หรือระบบให้ประมวลผลแบบหลายโปรเซสเซอร์ ผู้เขียนโปรแกรมจะมองแอพลิเคชันในลักษณะเซตของกระบวนงานที่ทำพร้อม ๆ กัน ซึ่งทำงานบนโครงสร้างข้อมูลที่ใช้ร่วมกันทางตรรกะ เช่นเดียวกับกลุ่มของวิศวกรรมซอฟต์แวร์ที่ต่างกันที่สนับสนุนวิธีการที่แตกต่างกัน ภาษาโปรแกรมแต่ละภาษาก็สนับสนุนกระบวนทัศน์การเขียนโปรแกรมที่แตกต่างกัน ภาษาโปรแกรมบางภาษาถูกออกแบบมาสำหรับกระบวนทัศน์การโปรแกรมกระบวนทัศน์เดียว (เช่น Smalltalk สนับสนุนเฉพาะการเขียนโปรแกรมเชิงวัตถุ สนับสนุนเพียงการเขียนโปรแกรมเชิงฟังก์ชัน เป็นต้น) ในขณะที่ภาษาโปรแกรมอื่น ๆ สนับสนุนกระบวนทัศน์การโปรแกรมหลายกระบวนทัศน์ (เช่น Object Pascal, C++, Java, C#, Visual Basic, ,, Perl, Python, Ruby, and F#) กระบวนทัศน์การโปรแกรมหลายกระบวนทัศน์เป็นที่รู้กันดีว่ามีเทคนิคอะไรบ้างที่หายไปและมีเทคนิคอะไรบ้างที่ทำได้ ตัวอย่างเช่น กระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชัน ไม่ยอมให้มีการใช้ ส่วนไม่ยอมให้มีคำสั่ง ด้วยเหตุผลนี้ กระบวนทัศน์การโปรแกรมใหม่ มักพิจารณาหลักยึด หรือเข้มงวดมาก โดยยึอถือตามกระบวนทัศน์ก่อนหน้า การหลีกเลี่ยงเทคนิคที่แน่นอนสามารถทำให้การพิสูจน์ทฤษฎีเกี่ยวกับความถูกต้องของโปรแกรมหรือการทำความเข้าใจพฤติกรรมของมันทำได้ง่ายขึ้น
ภาษาโปรแกรมหลายกระบวนทัศน์
ภาษาโปรแกรมหลายกระบวนทัศน์เป็นภาษาโปรแกรมที่สนับสนุนกระบวนทัศน์การเขียนโปรแกรมมากกว่าหนึ่งกระบวนทัศน์ เช่นภาษา ซึ่งสร้างขึ้นโดย เขาได้ใส่แนวคิดกับภาษาดังนี้ "แนวคิดของภาษาโปรแกรมหลายกระบวนทัศน์ คือการจัดเตรียมกรอบงานสำหรับผู้เขียนโปรแกรมให้สามารถเขียนโปรแกรมได้หลายวิธี สามารถรวมกระบวนทัศน์การเขียนโปรแกรมต่าง ๆ ได้อย่างอิสระ" จุดมุ่งหมายของภาษานี้ คือการยอมให้ผู้เขียนโปรแกรมใช้เครื่องมือที่ดีที่สุดสำหรับงานของเขา การยอมรับว่าไม่มีกระบวนทัศน์การโปรแกรมใดที่แก้ได้ทุกปัญหาด้วยวิธีการที่ง่ายที่สุดหรือมีประสิทธิภาพมากที่สุด ภาษาโปรแกรมอีกภาษาหนึ่งที่รู้จักกันดี คือ C# F# และอีกภาษาหนึ่งคือ ซึ่งเป็นภาษาในกลุ่มตรรกะ และสามารถเขียนโปรแกรมได้ทั้ง เชิงวัตถุ และ รวมถึงกระบวนทัศน์การโปรแกรมอื่น ๆ ด้วย Oz ถูกออกแบบมามากกว่า10 ปี เพื่อที่รวมกระบวนทัศน์การโปรแกรมแบบต่าง ๆ อย่างกลมกลืน กระบวนทัศน์การโปรแกรมได้จัดเตรียมวิธีการและโครงสร้างสำหรับการประมวลผลโปรแกรมสำหรับผู้เขียนโปรแกรม
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisud krabwnthsnkarekhiynopraekrm xngkvs Programming paradigm epnwithiaeykpraephthphasaopraekrmodyichkhunlksninkarekhiynopraekrmkhxmphiwetxr odyichphasann phasaopraekrmthimithnghmd samarthaeykepnkrabwnthsntang idhlakhlayaebb karaeykphasaopraekrmepnkrabwnthsnhlay krabwnthsn xacthakarcaaenkidxasykhwamaetktanginkrabwnkarichomedlkhasng Execution model ephuxthaihopraekrmthatamchudkhasngthiwangexaiw hrux xaccaaenkepnkrabwnthsnidtamwithikarinkarekhiynokhdthiaetktangknipinaetlaphasaopraekrm echn karekhiynokhdodyesmuxnwaepnwtthuthicbtxngid aelainbangkrnixaccaaenkkrabwnthsnidodyichhlkphasathiichinkarekhiynopraekrm Syntax krabwnthsnkarekhiynopraekrmsamarthaeykidodythwipdngni inwithyakarkhxmphiwetxrmikarcaaenkkrabwnthsnkarekhiynopraekrmiwmakkwathiklawiwdanlang karekhiynopraekrmechingkhasng imperative programming opraekrmemxrcasngihkhxmphiwetxrepliynsthanadwykhasngepnkhntxn karekhiynopraekrmechingkrabwnkar procedural programming cdmdklumkhasngihklayepnkrabwnkar khasnghlaykhasng gt krabwnkar karekhiynopraekrmechingwtthu object oriented programming cbmdklumkhasngkbsthanaopraekrmthirnxyu micudprasngkhephuxthaihokhdopraekrmmilksnaehmuxnwtthuthicbtxngidinchiwitcringkarekhiynopraekrmechingprakas declarative programming karekhiynopraekrmechingfngkchn functional programming karekhiynopraekrmechingtrrka logic programming karekhiynopraekrmechingkhnitsastr mathematical programming phaphrwmkrabwnthsnkarekhiynopraekrmepnphawanamthrrmkhxngrabbkhxmphiwetxr twxyangechn Von Neumann architecture epnkrabwnthsnsahrbkhxmphiwetxraebbladb sahrbmikrabwnthsnthiepnipidhlaykrabwnthsnsungmihlaywithikarthiopressesxrsamarthtidtxknid withikarphunthanechn karichhnwykhwamcarwmkn karsngkhxmulihkbhnwykhwamcaxun hruxichthngsxngwithirwmkn phasaopraekrmhnung samarthrxngrb twxyangechn phasa C hrux Object Pascal samarthichekhiynidthngaebb aelakaropraekrmechingwtthu hruxthngsxngaebbinopraekrmediywkn phuxxkaebbsxftaewr aelaphuekhiynopraekrmcaepnphutdsinicwaopraekrmcaekhiynaebbid karekhiynopraekrmechingwtthu phuekhiynopraekrmcamxngopraekrminlksnathiepnkarthanganrwmknkhxngwtthu inkhnathicamxngkarthangankhxngopraekrminlksnaladbkhxngkarpraeminfngkchnaebbimmisthana emuxekhiynopraekrmkhxmphiwetxr hruxrabbihpramwlphlaebbhlayopressesxr phuekhiynopraekrmcamxngaexphliekhchninlksnaestkhxngkrabwnnganthithaphrxm kn sungthanganbnokhrngsrangkhxmulthiichrwmknthangtrrka echnediywkbklumkhxngwiswkrrmsxftaewrthitangknthisnbsnunwithikarthiaetktangkn phasaopraekrmaetlaphasaksnbsnunkrabwnthsnkarekhiynopraekrmthiaetktangkn phasaopraekrmbangphasathukxxkaebbmasahrbkrabwnthsnkaropraekrmkrabwnthsnediyw echn Smalltalk snbsnunechphaakarekhiynopraekrmechingwtthu snbsnunephiyngkarekhiynopraekrmechingfngkchn epntn inkhnathiphasaopraekrmxun snbsnunkrabwnthsnkaropraekrmhlaykrabwnthsn echn Object Pascal C Java C Visual Basic Perl Python Ruby and F krabwnthsnkaropraekrmhlaykrabwnthsnepnthirukndiwamiethkhnikhxairbangthihayipaelamiethkhnikhxairbangthithaid twxyangechn krabwnthsnkarekhiynopraekrmechingfngkchn imyxmihmikarich swnimyxmihmikhasng dwyehtuphlni krabwnthsnkaropraekrmihm mkphicarnahlkyud hruxekhmngwdmak odyyuxthuxtamkrabwnthsnkxnhna karhlikeliyngethkhnikhthiaennxnsamarththaihkarphisucnthvsdiekiywkbkhwamthuktxngkhxngopraekrmhruxkarthakhwamekhaicphvtikrrmkhxngmnthaidngaykhunphasaopraekrmhlaykrabwnthsnphasaopraekrmhlaykrabwnthsnepnphasaopraekrmthisnbsnunkrabwnthsnkarekhiynopraekrmmakkwahnungkrabwnthsn echnphasa sungsrangkhunody ekhaidisaenwkhidkbphasadngni aenwkhidkhxngphasaopraekrmhlaykrabwnthsn khuxkarcdetriymkrxbngansahrbphuekhiynopraekrmihsamarthekhiynopraekrmidhlaywithi samarthrwmkrabwnthsnkarekhiynopraekrmtang idxyangxisra cudmunghmaykhxngphasani khuxkaryxmihphuekhiynopraekrmichekhruxngmuxthidithisudsahrbngankhxngekha karyxmrbwaimmikrabwnthsnkaropraekrmidthiaekidthukpyhadwywithikarthingaythisudhruxmiprasiththiphaphmakthisud phasaopraekrmxikphasahnungthiruckkndi khux C F aelaxikphasahnungkhux sungepnphasainklumtrrka aelasamarthekhiynopraekrmidthng echingwtthu aela rwmthungkrabwnthsnkaropraekrmxun dwy Oz thukxxkaebbmamakkwa10 pi ephuxthirwmkrabwnthsnkaropraekrmaebbtang xyangklmklun krabwnthsnkaropraekrmidcdetriymwithikaraelaokhrngsrangsahrbkarpramwlphlopraekrmsahrbphuekhiynopraekrm