ما هي أشهر نماذج البرمجة

هناك العديد من الطرق المختلفة لكتابة البرامج في عالم البرمجة، وتُعرف هذه الطرق المختلفة باسم  النماذج Paradigms ولكل منها فلسفته الخاصة حول كيفية كتابة البرامج، وأدواته الخاصة التي تساعد المبرمجين على تحقيق أهدافهم.
في هذا المقال، أقدم لك في مقال اليوم لمحة عامة عن نماذج البرمجة والمفاهيم الأساسية لكل نموذج، وسأقدم أمثلة على كيفية تطبيقها في البرمجة.

 ما هي نماذج البرمجة Programming Paradigms 

نماذج البرمجة

نماذج البرمجة أو أساليب البرمجة Programming Paradigms  هي طرق ومنهجيات متبعة في كتابة وتنظيم الشيفرات البرمجية ضمن المشاريع البرمجة وهي توفر إرشادات لحل المشكلات وتؤثر على طريقة تفكير المبرمج عند تطوير التطبيقات والبرامج. 

هناك العديد من نماذج البرمجة كما هو موضح في الصورة التالية:

وسأركز في مقال اليوم على أشهر 5 طرق أو نماذج برمجية تستخدم في عالم البرمجة:

  1. البرمجة الحتمية Imperative Programming
  2. البرمجة الإجرائية Procedural Programming
  3. البرمجة الكائنية التوجه OOP
  4. البرمجة الوظيفية Functional Programming
  5. البرمجة المنطقية Logic Programming
لنناقش كل نوع من هذه الأنواع بمزيد من التفصيل ونتعرف على أهم لغات البرمجة التي تعتمدها: 

ما هي أنواع البرمجة

1.البرمجة الحتمية

هذا النموذج البرمجي يعتمد على مبدأ تحديد سلسلة التعليمات التي على الحاسوب أن يتبعها لحل مشكلة ما بالتفصيل وبالخطوات الواضحة وهو نموذج البرمجة الأكثر شيوعًا وتعتمده الكثير من نماذج البرمجة الفرعية مثل البرمجة الإجرائية Procedural Programming ومن لغات البرمجة التي تعتمده البرمجة  لغة C ولغة جافا Java وغيرها من اللغات.

عندما تكتب البرامج بشكل يركز على توجيه الكمبيوتر على كيفية تنفيذ مجموعة من الخطوات أو الأوامر وتشدد على وصف الخطوات التي يجب على البرنامج تنفيذها بشكل دقيق فأنت تتبع هذا النمط البرمجي.


2. البرمجة الإجرائية 

هي الطريقة التقليدية لكتابة البرامج حيث تركز البرمجة الإجرائية على تحديد الخطوات التي يجب على البرنامج اتباعها لتنفيذ مهمة معينة وتقسم البرنامج إلى أجزاء أصغر تسمى الإجراءات أو الوظائف. كل إجراء أو وظيفة مسؤول عن تنفيذ مهمة محددة.

تستخدم البرمجة الإجرائية مجموعة من المفاهيم الأساسية، بما في ذلك:

المتغيرات: هي وحدات تخزين البيانات.
العمليات: هي تعليمات لمعالجة البيانات.
الشروط: هي تعليمات لتحديد ما إذا كان يجب تنفيذ خطوة معينة.
الدوال: هي مجموعات من التعليمات التي يمكن استخدامها لإعادة استخدام التعليمات.
أمثلة على البرمجة الإجرائية

فيما يلي مثال بسيط على البرمجة الإجرائية:
#include <stdio.h>

// تعريف الدالة الرئيسية
int main() {
    // متغيرات لتخزين بيانات المستخدم
    char name[50];
    int age;

    // طلب بيانات من المستخدم
    printf("الرجاء إدخال اسمك: ");
    scanf("%s", name);

    printf("الرجاء إدخال عمرك: ");
    scanf("%d", &age);

    // عرض بيانات المستخدم
    printf("\nمرحبًا، %s!\n", name);
    printf("عمرك هو %d سنة.\n", age);

    // إشارة إلى نجاح البرنامج
    return 0;
}

استخدامت هنا لغة البرمجة C لكتابة برنامج بسيط يطلب من المستخدم إدخال اسمه وعمره، ثم يعرض هذه البيانات. يستخدم البرنامج الدالة printf لطباعة الرسائل على الشاشة والدالة scanf لاستلام إدخالات المستخدم وهو يتبع نهج البرمجة الإجرائية حيث يتم تنظيم البرنامج وفق سلسلة من الإجراءات التي تنفيذ بتسلسل محدد.

كما تلاحظ في الكود أعلاه فهذا الأسلوب يقسم المشكلات البرمجية إلى أجزاء أصغر وأكثر قابلية للإدارة بحيث يمكن للمبرمج فهمها وتعديلها بسهولة أكبر. في هذا المنهج البرمجي تقسم الشيفرات البرمجية إلى كتل أو اجزاء منفصلة تسمى الإجراءات أو الطرق البرمجية أو الروتينات الفرعية وهي تؤدي مهام جزئية محددة وتعمل كل الإجراءات مع بعضها لحل المشكلة. من أبرز لغات البرمجة التي تدعم أسلوب الإجرائية نذكر لغة باسكال وفورتران وسي.


3.البرمجة كائنية التوجه

تستخدم  البرمجة كائنية التوجه أو البرمجة بالكائنات OOP مفاهيم الأصناف أو الفئات classes والكائنات أو الأغراض objects لحل المشكلات البرمجية بطريقة تشابه مفاهيم العالم الحقيقي حيث أن الأصناف هي عبارة عن نموذج او مخطط عام لوصف خصائص أو بيانات الكائنات وطرق أو سلوك الكائنات. بعدها يتم إنشاء الكائنات لتكون بمثابة أمثلة أو حالات من الأصناف. ومن أبرز لغات البرمجة التي تعتمد هذا الأسلوب نذكر جافا وبايثون و++C.

إليك مثالًا على البرمجة كائنية التوجه بلغة بايثون

# تعريف الكلاس الخاص بالطالب

class Student:

    # دالة البناء (المُهيأ) لتهيئة الكائن

    def __init__(self, name, age, grade):

        self.name = name

        self.age = age

        self.grade = grade


    # دالة لعرض معلومات الطالب

    def display_student_info(self):

        print(f"الطالب {self.name}، عمره {self.age} سنة، ودرجته {self.grade}.")


# البرنامج الرئيسي

if __name__ == "__main__":

    # إنشاء كائنات من الكلاس

    student1 = Student("أحمد", 20, "جيد")

    student2 = Student("سارة", 22, "ممتاز")


    # عرض معلومات الطلاب باستخدام دوال الكائنات

    student1.display_student_info()

    student2.display_student_info()

في هذا المثال، تم تعريف كلاس أو صنف برمجي يسمى Student، والذي يحتوي على بعض المتغيرات الخاصة (المتغيرات التي تنتمي إلى الكائن) ودوال (تُعرف على أنها أساليب في سياق الكائنات). الدالة __init__ تستخدم لتهيئة الكائن عند إنشائه، وتقوم بتعيين قيم معينة للمتغيرات الخاصة. الدالة display_student_info تقوم بعرض معلومات الطالب.

أنشأنا كائنات (student1 و student2) من Student، واستخدام الدوال الخاصة بالكائنات لعرض معلومات الطلاب.

4.البرمجة الوظيفية

يستخدم نموذج البرمجة الوظيفية وظائف صرفة لبناء التطبيقات والبرنامج وفي هذا الأسلوب يمكنك تمرير الوظائف كوسائط لوظائف أخرى أو إرجاعها كنتائج لنتفيذ وظائف أخرى أو إسنادها كقيم إلى متغيرات.
من أمثلة لغات البرمجة الوظيفية لغة هاكسل Haskell ولغة #F و Lisp كما تعتمدها لغات أخرى مثل جافا سكريبت وبايثون إلى جانب النماذج الأخرى. 

إليك مثالًا على هذا النوع من البرمجة بلغة بايثون:

# دالة لحساب مربع العدد

def calculate_square(number):

    return number ** 2


# دالة لحساب مجموع مربعين

def calculate_sum_of_squares(num1, num2):

    square1 = calculate_square(num1)

    square2 = calculate_square(num2)

    return square1 + square2


# البرنامج الرئيسي

if __name__ == "__main__":

    # الحصول على إدخال المستخدم

    num1 = float(input("الرجاء إدخال العدد الأول: "))

    num2 = float(input("الرجاء إدخال العدد الثاني: "))


    # حساب مجموع مربعين باستخدام الدوال

    result = calculate_sum_of_squares(num1, num2)


    # عرض النتيجة

    print(f"مجموع مربع {num1} و {num2} هو: {result}")


يستخدم  هذا المثال البرمجة الوظيفية حيث يتم تعريف دوال لأداء مهام محددة. تقوم الدالة calculate_square بحساب مربع العدد الممرر إليها، وتستخدم الدالة calculate_sum_of_squares الدالة السابقة لحساب مربعين وجمعهما. يتم استدعاء هذه الدوال من البرنامج الرئيسي لحساب وعرض النتيجة.

4. البرمجة المنطقية

البرمجة المنطقية هينوع من البرمجة اللامركزية Declarative Programming والتي تركز على توصيف ما يجب فعله دون التركيز على كيفية القيام به. بدلاً من كتابة سلسلة من التعليمات لتنفيذ مهمة معينة، يتم توفير وصف للعلاقات والقواعد التي يجب أن يتبعها النظام لتحقيق الهدف.

يعتمد هذا النموذج البرمجي على تطبيق القواعد المنطقية لاستخلاص النتائج المطلوبة. هذا يعني أن البرنامج يتم تعريفه من خلال مجموعة من الحقائق والقواعد التي تستخدمها الآلة لحل المشلات المطلوبة.
من أشهر الأمثلة على لغات البرمجة المنطقية  لغة برولوغ Prolog وميركوري Mercur وSQL

على سبيل المثال لاحظ المثال التالي:

-- استعلام SQL لاسترجاع أسماء الطلاب الذين حققوا درجات أعلى من 90

SELECT student_name

FROM grades

WHERE score > 90;


في هذا المثال استخدمت لغة SQL لوصف البيانات التي يجب استرجاعها، وليس لتوجيه الكمبيوتر على كيفية تحقيق ذلك. يتولى نظام إدارة قواعد البيانات (مثل MySQL أو PostgreSQL) تنفيذ هذا الاستعلام بطريقة مناسبة.

تجعل البرمجة المنطقية الكود أكثر قراءةً وصيانةً، وقد يكون الشيفرة أقل تفصيلاً وأقل عرضة للأخطاء في بعض الحالات.


الخلاصة 

نماذج البرمجة هي أساليب أو أسس تستخدم في تصميم وكتابة البرمجيات كل نموذج له مزاياه وعيوبه، واختيار النموذج المناسب يعتمد على طبيعة المشروع ومتطلباته.وقد تحتاج بعض المشاريع البرمجية للاستفادة من أكثر من  نموذج هذه النماذج بنفس الوقت وتعرف المشاريع متعددة النماذج.










Next Post Previous Post
No Comment
Add Comment
comment url