Programming paradigms หรือ กระบรวนทัศน์การเขียนโปรแกรม คือการแก้ปัญหาโดยใช้ภาษาคอมพิวเตอร์ตามลักษณะการทำงาน/ฟีเจอร์ของแต่ละภาษา กระบรวนทัศน์การเขียนโปรแกรมสามารถแบ่งหลักๆออกได้เป็น 2 กลุ่ม คือ
- imperative programming paradigm
- declarative programming paradigm
imperative programming paradigm
หรือ การเขียนโปรแกรมเชิงคำสั่ง มีลักษณะการทำงานจะใกล้เคียงกับ machine architecture โดยอยู่บนพื้นฐานสถาปัตยกรรมของ Von Neumann ทำงานโดยการเปลี่ยนสถานะของโปรแกรมผ่านคำสั่งที่ได้รับมอบหมายทีละขั้นตอน เป้าหมายหลักของการทำงานคือการออกสั่งคอมพิวเตอร์ด้วย “วิธีให้ได้มา” ซึ่งสิ่งที่ต้องการ กระบรวนทัศน์นี้จะประกอบไปด้วยคำสั่งหลายคำสั่งและหลังจากประมวลผลแล้วผลลัพธ์ที่ได้จะถูกบันทึก
การเขียนโปรแกรมเชิงคำสั่งแบบออกเป็น 3 ประเภทย่อย คือ
procedural programming paradigm
กระบรวนทัศน์นี้ไม่มีความแตกต่างใดๆจาก imperative paradigm เลย มุ่งเน้นไปที่ขั้นตอนที่เป็นรากฐานของ machine model มีความสามารถในการนำโค๊ดมาใช้ซ้ำ มีชุดของขั้นตอนการคำนวณในการดำเนินการ
ตัวอย่างภาษาในกระบรวนทัศน์นี้ C, C++, Java, ColdFusion, Pascal
Object oriented programming (OOP) เป็นโปรแกรมที่ถูกเขียนขึ้นโดยใช้ชุดของคลาสและวัตถุ (classes and objects) ในการสื่อสาร entity ที่เล็กที่สุดและการคำนวณทั้งหมดจะใช้กับวัตถุเท่านั้น ให้นำหนักไปที่ข้อมูลมากกว่าวิธีการ โปรแกรมชนิดนี้สามารถใช้แก้ปัญหาในชีวิตจริงได้เกือบทุกประเภท
ตัวอย่างภาษา Simula, Java, C++, Objective-C, Visual Basic .NET, Python, Ruby, Smalltalk
parallel processing approach หรือการประมวลผลแบบขนาน คือการประมวลผลคำสั่งของโปรแกรมโดยแบ่งหน่วยประมวลผลออกเป็นหลายหน่วย ระบบของการประมวลผลแบบขนานมีหน่วยประมวลผลหลายหน่วย มีวัตถุประสงค์ในการใช้เวลารันโปรแกรมให้น้อยลง
ภาษาที่มี libraries รองรับการประมวลผลแบบขนาน เช่น C, C++ และ .NET
declarative programming paradigm
หรือการเขียนโปรแกรมเชิงประกาศ เป็นกระบรวนทัศน์การเขียนโปรแกรมที่บอกคอมพิวเตอร์ถึง “สิ่งที่ต้องการ” แต่ไม่ต้องระบุวิธีการให้ได้มาซึ่งสิ่งนั้น
การเขียนโปรแกรมเชิงประกาศแบ่งออกเป็น 3 ประเภทย่อย คือ
logic programming paradigms หรือการเขียนโปรแกรมเชิงตรรกะ เป็นการคำนวณแบบนามธรรม ภาษาที่เป็นเชิงตรรกะจะเป็นชุดประโยคของตรรกะ ข้อเท็จจริง และกฏ สำหรับนำมาใช้ในการแก้ปัญหาต่างๆ อาจกล่าวได้ว่าผลลัพธ์ที่ได้จากการคำนวณคือข้อพิสูจน์ทางคณิตศาสตร์
ตัวอย่างภาษาในกระบรวนทัศน์นี้ เช่น Prolog, Mercury, ASP, Datalog
functional programming paradigms หรือการเขียนโปรแกรมเชิงฟังก์ชั่น เป็นการเขียนโปรแกรมที่มีรากฐานมาจากคณิตศาสตร์และเป็นภาษาที่เป็นอิสระ หลักการสำคัญของกระบรวนทัศน์นี้คือการประมวลผลชุดฟังก์ชั่นทางคณิตศาสตร์ จะตรงกันข้ามกับการเขียนโปรแกรมเชิงคำสั่ง โดยการเปลี่ยนสถานะของโปรแกรมจะเป็นการเปลี่ยนผ่านฟังก์ชั่น ไม่ใช้คำสั่ง จุดเด่นสำหรับการเขียนโปรแกรมเชิงฟังก์ชั่นมีดังนี้
- pure function คือ ฟังก์ชั่นแบบไม่ซับซ้อน
- first-class function คือ การกำหนดให้ตัวแปรให้เป็นฟังก์ชั่น หรือการทำ anonymous function เจอได้บ่อยในการเขียนภาษา JavaScript
- high-order function คือ ฟังก์ชั่นที่มีค่า return เป็นฟังก์ชั่น ภาษาที่ใช้ฟังก์ชั่นนี้ที่เห็นได้อย่างชัดเจน เช่น JavaScript
- closures คือ การเรียกใช้ global variables มาใช้ใน block scope ของฟังก์ชั่นได้
- immutable state คือ การรักษาไว้ซึ่งสถานะของตัวแปรเดิม เช่นในภาษา OCaml หากเรา assign ตัวแปรไปแล้ว จากนั้น reassign มันด้วยค่าใหม่ ตัวแปรนั้นยังคงมีค่าเดิมที่ assign ไปในตอนแรก
ตัวอย่างภาษาในกระบรวนทัศน์นี้ เช่น JavaScript, Haskwell, Scala, Erlang, Lisp, ML, Clojure
Database/Data driven programming approach คือ วิธีการเขียนโปรแกรมที่ขึ้นอยู่กับข้อมูล คำสั่งที่ใช้ในการเขียนขึ้นอยู่กับข้อมูลที่มีมากกว่าการเขียนโปรแกรมแบบหลายขั้นตอน ฐานข้อมูลเป็นหัวใจสำคัญของระบบข้อมูลทางธุรกิจ การเขียนโปรแกรมแบบนี้สามารถสร้างไฟล์ การเข้าถึงข้อมูล อัพเดท เรียกดูข้อมูล และรายงานฟัก์ชั่น
ภาษาที่ใช้พัฒนาแอพพลิเคชั่นสำหรับฐานข้อมูลโดยเฉพาะ เช่น SQL