fbpx
วิกิพีเดีย

กระบวนทัศน์การเขียนโปรแกรม

กระบวนทัศน์การเขียนโปรแกรม (อังกฤษ: Programming paradigm) คือ วิธีแยกประเภทภาษาโปรแกรมโดยใช้คุณลักษณ์ในการเขียนโปรแกรมคอมพิวเตอร์ โดยใช้ภาษานั้น ๆ ภาษาโปรแกรมที่มีทั้งหมด สามารถแยกเป็นกระบวนทัศน์ต่าง ๆ ได้หลากหลายแบบ การแยกภาษาโปรแกรมเป็นกระบวนทัศน์หลาย ๆ กระบวนทัศน์ อาจทำการจำแนกได้อาศัยความแตกต่างในกระบวนการใช้โมเดลคำสั่ง (Execution model) เพื่อทำให้โปรแกรมทำตามชุดคำสั่งที่วางเอาไว้ หรือ อาจจำแนกเป็นกระบวนทัศน์ได้ตามวิธีการในการเขียนโค้ดที่แตกต่างกันไปในแต่ละภาษาโปรแกรม เช่น การเขียนโค้ดโดยเสมือนว่าเป็นวัตถุที่จับต้องได้ และในบางกรณีอาจจำแนกกระบวนทัศน์ได้โดยใช้หลักภาษาที่ใช้ในการเขียนโปรแกรม (Syntax)

กระบวนทัศน์การเขียนโปรแกรมสามารถแยกได้โดยทั่วไปดังนี้ (ในวิทยาการคอมพิวเตอร์มีการจำแนกกระบวนทัศน์การเขียนโปรแกรมไว้มากกว่าที่กล่าวไว้ด้านล่าง):

  • การเขียนโปรแกรมเชิงคำสั่ง (imperative programming) โปรแกรมเมอร์จะสั่งให้คอมพิวเตอร์เปลี่ยนสถานะด้วยคำสั่งเป็นขั้นตอน
    • การเขียนโปรแกรมเชิงกระบวนการ (procedural programming) จัดมัดกลุ่มคำสั่งให้กลายเป็นกระบวนการ (คำสั่งหลายคำสั่ง -> กระบวนการ)
    • การเขียนโปรแกรมเชิงวัตถุ (object-oriented programming) จับมัดกลุ่มคำสั่งกับสถานะโปรแกรมที่รันอยู่ มีจุดประสงค์เพื่อทำให้โค้ดโปรแกรมมีลักษณะเหมือนวัตถุที่จับต้องได้ในชีวิตจริง

ภาพรวม

กระบวนทัศน์การเขียนโปรแกรมเป็นภาวะนามธรรมของระบบคอมพิวเตอร์ ตัวอย่างเช่น ตัวแบบของฟอน นอยแมน (Von Neumann architecture) เป็นกระบวนทัศน์สำหรับคอมพิวเตอร์แบบลำดับ สำหรับการคำนวณแบบคู่ขนานมีกระบวนทัศน์ที่เป็นไปได้หลายกระบวนทัศน์ซึ่งมีหลายวิธีการที่โปรเซสเซอร์สามารถติดต่อกันได้ วิธีการพื้นฐานเช่น การใช้หน่วยความจำร่วมกัน การส่งข้อมูลให้กับหน่วยความจำอื่น หรือใช้ทั้งสองวิธีร่วมกัน ภาษาโปรแกรมหนึ่ง ๆ สามารถรองรับกระบวนทัศน์การเขียนโปรแกรมหลายกระบวนทัศน์ ตัวอย่างเช่น ภาษา 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# F# และอีกภาษาหนึ่งคือ Oz ซึ่งเป็นภาษาในกลุ่มตรรกะ และสามารถเขียนโปรแกรมได้ทั้งแบบฟังก์ชัน เชิงวัตถุ และการทำงานพร้อมกัน รวมถึงกระบวนทัศน์การโปรแกรมอื่น ๆ ด้วย Oz ถูกออกแบบมามากกว่า10 ปี เพื่อที่รวมกระบวนทัศน์การโปรแกรมแบบต่าง ๆ อย่างกลมกลืน กระบวนทัศน์การโปรแกรมได้จัดเตรียมวิธีการและโครงสร้างสำหรับการประมวลผลโปรแกรมสำหรับผู้เขียนโปรแกรม

กระบวนท, ศน, การเข, ยนโปรแกรม, งก, ามภาษา, ในบทความน, ไว, ให, านและผ, วมแก, ไขบทความศ, กษาเพ, มเต, มโดยสะดวก, เน, องจากว, เด, ยภาษาไทยย, งไม, บทความด, งกล, าว, กระน, ควรร, บสร, างเป, นบทความโดยเร, วท, งกฤษ, programming, paradigm, แยกประเภทภาษาโปรแกรมโดยใช, ณล,. lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisudkrabwnthsnkarekhiynopraekrm xngkvs Programming paradigm khux withiaeykpraephthphasaopraekrmodyichkhunlksninkarekhiynopraekrmkhxmphiwetxr 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 phaphrwm aekikhkrabwnthsnkarekhiynopraekrmepnphawanamthrrmkhxngrabbkhxmphiwetxr twxyangechn twaebbkhxngfxn nxyaemn Von Neumann architecture epnkrabwnthsnsahrbkhxmphiwetxraebbladb sahrbkarkhanwnaebbkhukhnanmikrabwnthsnthiepnipidhlaykrabwnthsnsungmihlaywithikarthiopressesxrsamarthtidtxknid withikarphunthanechn karichhnwykhwamcarwmkn karsngkhxmulihkbhnwykhwamcaxun hruxichthngsxngwithirwmkn phasaopraekrmhnung samarthrxngrbkrabwnthsnkarekhiynopraekrmhlaykrabwnthsn twxyangechn phasa C hrux Object Pascal samarthichekhiynidthngaebbkaropraekrmechingkrabwnkar aelakaropraekrmechingwtthu hruxthngsxngaebbinopraekrmediywkn phuxxkaebbsxftaewr aelaphuekhiynopraekrmcaepnphutdsinicwaopraekrmcaekhiynaebbid karekhiynopraekrmechingwtthu phuekhiynopraekrmcamxngopraekrminlksnathiepnkarthanganrwmknkhxngwtthu inkhnathikaropraekrmechingfngkchncamxngkarthangankhxngopraekrminlksnaladbkhxngkarpraeminfngkchnaebbimmisthana emuxekhiynopraekrmkhxmphiwetxr hruxrabbihpramwlphlaebbhlayopressesxr karopraekrmechingkrabwnngan phuekhiynopraekrmcamxngaexphliekhchninlksnaestkhxngkrabwnnganthithaphrxm kn sungthanganbnokhrngsrangkhxmulthiichrwmknthangtrrka echnediywkbklumkhxngwiswkrrmsxftaewrthitangknthisnbsnunwithikarthiaetktangkn phasaopraekrmaetlaphasaksnbsnunkrabwnthsnkarekhiynopraekrmthiaetktangkn phasaopraekrmbangphasathukxxkaebbmasahrbkrabwnthsnkaropraekrmkrabwnthsnediyw echn Smalltalk snbsnunechphaakarekhiynopraekrmechingwtthu Haskell snbsnunephiyngkarekhiynopraekrmechingfngkchn epntn inkhnathiphasaopraekrmxun snbsnunkrabwnthsnkaropraekrmhlaykrabwnthsn echn Object Pascal C Java C Visual Basic Common Lisp Scheme Perl Python Ruby Oz and F krabwnthsnkaropraekrmhlaykrabwnthsnepnthirukndiwamiethkhnikhxairbangthihayipaelamiethkhnikhxairbangthithaid twxyangechn krabwnthsnkarekhiynopraekrmechingfngkchn imyxmihmikarich side effects swnkarekhiynopraekrmechingokhrngsrangimyxmihmikhasng goto dwyehtuphlni krabwnthsnkaropraekrmihm mkphicarnahlkyud hruxekhmngwdmak odyyuxthuxtamkrabwnthsnkxnhna karhlikeliyngethkhnikhthiaennxnsamarththaihkarphisucnthvsdiekiywkbkhwamthuktxngkhxngopraekrmhruxkarthakhwamekhaicphvtikrrmkhxngmnthaidngaykhunphasaopraekrmhlaykrabwnthsn aekikhduephim List of multi paradigm programming languagesphasaopraekrmhlaykrabwnthsnepnphasaopraekrmthisnbsnunkrabwnthsnkarekhiynopraekrmmakkwahnungkrabwnthsn echnphasa Leda sungsrangkhunody Timothy Budd ekhaidisaenwkhidkbphasadngni aenwkhidkhxngphasaopraekrmhlaykrabwnthsn khuxkarcdetriymkrxbngansahrbphuekhiynopraekrmihsamarthekhiynopraekrmidhlaywithi samarthrwmkrabwnthsnkarekhiynopraekrmtang idxyangxisra cudmunghmaykhxngphasani khuxkaryxmihphuekhiynopraekrmichekhruxngmuxthidithisudsahrbngankhxngekha karyxmrbwaimmikrabwnthsnkaropraekrmidthiaekidthukpyhadwywithikarthingaythisudhruxmiprasiththiphaphmakthisud phasaopraekrmxikphasahnungthiruckkndi khux C F aelaxikphasahnungkhux Oz sungepnphasainklumtrrka aelasamarthekhiynopraekrmidthngaebbfngkchn echingwtthu aelakarthanganphrxmkn rwmthungkrabwnthsnkaropraekrmxun dwy Oz thukxxkaebbmamakkwa10 pi ephuxthirwmkrabwnthsnkaropraekrmaebbtang xyangklmklun krabwnthsnkaropraekrmidcdetriymwithikaraelaokhrngsrangsahrbkarpramwlphlopraekrmsahrbphuekhiynopraekrmekhathungcak https th wikipedia org w index php title krabwnthsnkarekhiynopraekrm amp oldid 9175830, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม