الجافاسكريبت كما لم تعرفها من قبل! 1# الأنماط البرمجية

الأنماط البرمجية

إعداد نصر جلال (@sniperadmin)


حقوق ملكية الصورة Image by vectorjuice


الفهرس:

  1. مقدمة
  2. الأنماط البرمجية

أهلا عائلة كورتابز :smile:، بعد المقدمة البسيطة التي تستهل رحلة طويلة من الموضوعات والنقاشات وورش العمل

سنبدأ بالتعرف (من وجهة نظر اصطلاحية) على الأوجه أو الأنماط أو النماذج البرمجية.

النموذج البرمجي

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

ولكن بغض النظر عن النمط الفردي للبرنامج ، فإن الصورة الكبيرة دائمًا تكون واضحة للوهلة الأولى في أي برنامج.

تشمل النماذج البرمجية ثلاث أساليب أساسية:

  1. أسلوب البرمجة الإجرائية Procedural Programming Style
    يتم ترتيب الكود في شكل خطي من أعلى إلى أسفل، كل سطر به عملية أو عدة عمليات برمجية
    عادة ما يتم جمعها معًا في وحدات برمجية صغيرة ذات صلة تسمى الإجراءات.
    مثال:
let a = 1
let b = 2
let c = a + b
console.log(c)
  1. أسلوب برمجة التوجه الكائني Object Oriented Programming Style
    يتميز هذا الأسلوب بجمع المنطق والبيانات في وحدات تسمى الفئات classes
    مثال:
class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
}
  1. أسلوب البرمجة الوظيفية Functional Programming Style
    ينظم هذا الأسلوب الكود في دوال حسابية (الحسابات البحتة بدلاً من الإجراءات).

النماذج ليس بالضرورة أن تكون صحيحة ولا خاطئة. إنما هي توجهات تصوغ كيفية تعامل المبرمجين مع المشكلات
والحلول ، وكيفية هيكلة الكود الخاص بهم والحفاظ عليه.

تميل بعض اللغات بشدة نحو نموذج واحد. فلغة C إجرائية بحتة، Java / C ++ موجهة بالكامل تقريبًا لأسلوب برمجة التوجه الكائني Object Oriented Programming Style، ولغة هاسكل تتبع أسلوب البرمجة الوظيفية Functional Programming Style.

لكن العديد من اللغات تدعم أيضًا أنماط التعليمات البرمجية التي يمكن أن تأتي من نماذج مختلفة وحتى مزجها ومطابقتها. لذا
تُعرف باسم “اللغات متعددة النماذج multi-paradigm languages” التي توفر مرونة مطلقة. في بعض الحالات ، يمكن أن يحتوي برنامج واحد على نموذج أو أكثر

جافا سكريبت هي بالتأكيد لغة متعددة النماذج. يمكنك دمج أكثر من أسلوب أو استخدام الأساليب الثلاثة المذكورة أعلاه.

التوافقية الأمامية والخلفية Backwards & Forwards

أحد أكثر المبادئ الأساسية التي توجه JavaScript هو الحفاظ على التوافق مع الإصدارات السابقة (Backwards Compatibility). كثيرون ينخدعون من الآثار المترتبة على هذا المصطلح ، وغالبًا ما يخلطون معه بمصطلح مشابه: (التوافق المستقبلي Forwards Compatibility).

التوافقية مع الاصدارات السابقة Backwards Compatibility
التوافق مع الإصدارات السابقة يعني أنه بمجرد قبول شيء ما على أنه كود جافاسكريبت مستوفي لشروط الفكرة الخاصة بشركة أو برنامج، فلن يكون هناك تغيير في المستقبل في اللغة التي تجعل هذا الكود غير صالح.

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

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

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

في الحلقة القادمة سنتعرف أكثر على إصدارات اللغة وسنطبق بالكود لدعم الفهم لمبدأي التوافقية السابق ذكرهما بشكل مفصل