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 หรือการเขียนโปรแกรมเชิงฟังก์ชั่น เป็นการเขียนโปรแกรมที่มีรากฐานมาจากคณิตศาสตร์และเป็นภาษาที่เป็นอิสระ หลักการสำคัญของกระบรวนทัศน์นี้คือการประมวลผลชุดฟังก์ชั่นทางคณิตศาสตร์ จะตรงกันข้ามกับการเขียนโปรแกรมเชิงคำสั่ง โดยการเปลี่ยนสถานะของโปรแกรมจะเป็นการเปลี่ยนผ่านฟังก์ชั่น ไม่ใช้คำสั่ง จุดเด่นสำหรับการเขียนโปรแกรมเชิงฟังก์ชั่นมีดังนี้

  1. pure function คือ ฟังก์ชั่นแบบไม่ซับซ้อน
  2. first-class function คือ การกำหนดให้ตัวแปรให้เป็นฟังก์ชั่น หรือการทำ anonymous function เจอได้บ่อยในการเขียนภาษา JavaScript
  3. high-order function คือ ฟังก์ชั่นที่มีค่า return เป็นฟังก์ชั่น ภาษาที่ใช้ฟังก์ชั่นนี้ที่เห็นได้อย่างชัดเจน เช่น JavaScript
  4. closures คือ การเรียกใช้ global variables มาใช้ใน block scope ของฟังก์ชั่นได้
  5. immutable state คือ การรักษาไว้ซึ่งสถานะของตัวแปรเดิม เช่นในภาษา OCaml หากเรา assign ตัวแปรไปแล้ว จากนั้น reassign มันด้วยค่าใหม่ ตัวแปรนั้นยังคงมีค่าเดิมที่ assign ไปในตอนแรก

ตัวอย่างภาษาในกระบรวนทัศน์นี้ เช่น JavaScript, Haskwell, Scala, Erlang, Lisp, ML, Clojure

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

ภาษาที่ใช้พัฒนาแอพพลิเคชั่นสำหรับฐานข้อมูลโดยเฉพาะ เช่น SQL