في هذه الصفحة
المقدمة
الـ Paradigm أو المذهب هو منهج يلتزم فيه أصحابه بمبادئ محددة، ويمتازون فيه بخصائص عن غيرهم، ولغات البرمجة المتعددة تجمعها خصائص مشتركة من حيث التنظيم وكيفية كتابة البرامج وتسلسلها.
والـ Paradigms المشهورة هم أربعة، وإن كانت تتفاوت في رواجها واستعمالاتها، وهي: الـ Procedural أو ما يعرف بالمذهب الإجرائي، , والـ Logic أو ما يعرف بمذهب المناطِقة، والـ Functional أو ما يعرف بمذهب الدوال، والـ Object Oriented أو ما يعرف بمذهب الكائنات.
وقد عرضت لكل منها بإيجاز، وآثرت التركيز على ما يختص به كل مذهب دون غيره، أو يشتهر به، ونقتصر في هذا المقال على المذهب الإجرائي أي الـ Procedural Paradigm.
Procedural Paradigm - المذهب الإجرائي
مدار هذا المنهج على كتابة برامج تسلسلية تخلو من هيكل تنظيمي جامع، تبدأ من الأعلى للأسفل، مع بساطة في معجم اللغة، وأقصد بالمعجم هنا مكتبة اللغة الأساسية المحتوية على العمليات الشائعة، كالجمع والضرب، وإنشاء المصفوفات، والشروط والحلقات.
واخترت لغة Mary لضرب الأمثلة، وهي إحدى لغات Assembly، وهي لغة وسيطة بين لغة الآلة واللغات الحديثة، تستخدم في نظم التشغيل وفي النظم المدمجة كالساعات الذكية، وغير ذلك مما يحتاج إلى التواصل مع المعالج مباشرة لا من وراء حجاب.
إن النصوص البرمجية في Mary تبدو هكذا:
عمليات متسلسلة على قيم معرفة، وربما تأتي من المستخدم نفسه، ولكي نجري أي عملية على متغير ما، يلزمنا أن نضعه في حاوية تسمى -Accumulator-، وهو الهدف من الأمر -Load-، وضعت قيمة المتغير -X- في الحاوية أولا، ثم أضفت إليها ثلاثة، فصار المجموع خمسة.
ولنلق نظرة على ما بداخل الحاوية بعد تنفيذ كل سطر:
كي أجري عملية الجمع البدهية 2+3، وضعت الاثنين في الحاوية أولًا، ثم أضفت إليها ثلاثة، وانتهى البرنامج بطباعة المجموع على الشاشة.
ولعلك قد تقول: إنني أرى مثل هذا في كل لغة أعرفها، وهذا صحيح، فإن النهج الإجرائي موجود ضمنيا في كل اللغات على اختلاف الـ Paradigms الخاصة بها، يبدأ البرنامج من الأعلى للأسفل منحدِرًا، ولكن هنا قد لا تجد ما اعتدت عليه، فليس في ماري من عمليات الرياضيات إلا الجمع والطرح، دون الضرب والقسمة، وكل عملية تنفذها بسطر واحد في لغاتك، تُكتب بأسطر عديدة في ماري.
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉
عملية الضرب - Multiplication Operation
ولنذكر الضرب الرياضي مثالًا:
كيف تضرب عددين ببعضهما إن لم تكن عملية الضرب متاحة؟
ما الضرب إلا جمع مكرر، فإن قولي (5 ×3) يُراد به جمع الخمسة ثلاث مرات، أو جمع الثلاثة خمس مرات، وهو ما قمنا بعمله في المثال السابق، فقد استخدمت عملية الجمع لإجراء الضرب.
وكيف أكرر عملية الجمع بدون استخدام الـ Loops أي (الحلقات)؟
إن الحلقات أو الـ Loops في لغات البرمجة الحديثة تختصر علينا عملية التكرار، وهي قائمة على ثلاثة أمور:
- متغير للعد
- شرط الاستمرار في الحلقة
- مقدار التغير بعد كل دورة
ولن نبتعد عن هذا الأساس، لكننا سننفذه بطريقة أكثر تفصيلًا، نحتاج فيها إلى متغير ثالث لتخزين النتيجة، وحيلتنا هي إضافة خمسة إلى النتيجة، مع طرح واحد من المتغير الثاني -Y-، ونكرر هذه العملية حتى تصبح قيمة هذا المتغير صفرًا، ونستخدم الأمر -Store- لوضع قيمة في متغير ما
وإليك توضيحًا مرئيًا لموجز ما يحدث في الحاوية خلال عمليات الجمع والطرح والتخزين:
آلية التكرار - Loop and Jump
بقي أن نوضح آلية التكرار، وهي تحتاج إلى الأمر -Jump-، وهو يُستخدَم للانتقال من سطر إلى آخر، للأعلى أو للأسفل، وقد تبادرني بالسؤال:
ألم تقل إن البرنامج ينحدر للأسفل فحسب؟ ليس الأمر على إطلاقه، فقد نضطر للعودة إلى سطر سابق كما في حالة التكرار المذكورة، وإن كان الأصل هو النزول.
عندما أنفذ الأمر -Jump-، فإنه يعيدني إلى الموضع الذي حددته له، وتكون على هذه الشاكلة:
وهكذا نبقى في هذا البرنامج أبدًا، لولا وجود شرط الاستمرار، والشروط في ماري ثلاثة فحسب، فليس بإمكاننا التحقق إلا من هذه الحالات الثلاث:
- هل الحاوية فيها عدد سالب؟
- هل الحاوية تساوي صفرًا؟
- هل الحاوية فيها عدد موجب؟
ذكرت لك أننا سنتوقف حالما تصبح قيمة المتغير -Y- صفرًا، لذا سنستخدم الشرط الثاني، والأمر المعد للشروط في ماري هو -skipcond-، ومعناه أننا سنتجاوز السطر التالي للشرط في حال تحققه، والسطر التالي هو ما يجعلنا نبقى في دائرة التكرار، وعند تجاوزه نخرج من الدائرة.