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

البرمجة الإجرائية هي نموذج برمجي ، يُصنف ضمن البرمجة الإجرائية ، [ 1 ] ويتضمن تنفيذ سلوك برنامج الحاسوب كإجراءات (تُعرف أيضًا بالدوال أو الروتينات الفرعية) تستدعي بعضها بعضًا. البرنامج الناتج عبارة عن سلسلة من الخطوات تُشكل تسلسلًا هرميًا من الاستدعاءات للإجراءات المكونة له.

ظهرت أولى لغات البرمجة الإجرائية الرئيسية في الفترة ما بين عامي 1957 و1964 تقريبًا ، بما في ذلك فورتران ، وألغول ، وكوبول ، وبي إل/آي، وبيسيك . [ 2 ] ونُشرت لغتا باسكال وسي في الفترة ما بين عامي 1970 و1972 تقريبًا .

توفر معالجات الحاسوب دعمًا ماديًا للبرمجة الإجرائية من خلال سجل المكدس وتعليمات استدعاء الإجراءات والعودة منها. يتوفر دعم مادي لأنواع أخرى من البرمجة، مثل أجهزة Lisp أو معالجات Java ، لكن لم تُكلل أي محاولة بالنجاح التجاري.

ممارسات التنمية

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

النمطية والنطاق

تتمثل المعيارية في تنظيم إجراءات البرنامج في وحدات منفصلة - لكل منها غرض محدد ومفهوم.

إن تقليل نطاق المتغيرات والإجراءات يمكن أن يحسن جودة البرمجيات عن طريق تقليل العبء المعرفي للإجراءات والوحدات.

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

مشاركة

بما أن الإجراء يمكن أن يحدد واجهة محددة جيدًا وأن يكون مكتفيًا ذاتيًا، فإنه يدعم إعادة استخدام التعليمات البرمجية - وخاصة من خلال مكتبة البرامج .

مقارنة مع نماذج البرمجة الأخرى

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

تُصنف البرمجة الإجرائية على أنها برمجة حتمية ، لأنها تتضمن إصدار أوامر مباشرة بالتنفيذ.

تُعدّ اللغات الإجرائية فئة فرعية من اللغات الإجرائية، إذ تتضمن مفاهيم الكتل والنطاق ، بينما تصف اللغات الإجرائية مفهومًا أكثر عمومية لا يتطلب هذه الميزات. تستخدم اللغات الإجرائية عادةً كلمات محجوزة لتعريف الكتل، مثل `goto` و` branch`، لتنفيذ تدفق التحكم ، بينما تستخدم اللغات الإجرائية غير المهيكلة (مثل لغة التجميع ) جداول `goto` و` branch` لهذا الغرض.ifwhilefor

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

يُصنف البرمجة الكائنية التوجه (OOP) أيضًا ضمن البرمجة الإجرائية، وهي تتضمن تقسيم تنفيذ البرنامج إلى كائنات تُعرِّف السلوك (الأساليب) والبيانات (العناصر) عبر واجهة محددة جيدًا. في المقابل، تُعنى البرمجة الإجرائية بتقسيم تنفيذ البرنامج إلى متغيرات ، وهياكل بيانات ، وروتينات فرعية . ومن الفروق المهمة أن البرمجة الإجرائية تتضمن إجراءات للتعامل مع هياكل البيانات، بينما تجمع البرمجة الكائنية التوجه بينهما. فالكائن هو هيكل بيانات والسلوك المرتبط به. [ 3 ]

تدعم بعض لغات البرمجة الكائنية مفهوم الفئة الذي يسمح بإنشاء كائن بناءً على تعريف.

تختلف التسمية بين الاثنين، على الرغم من تشابه دلالاتهما:

إجرائيالبرمجة الكائنية
إجراءطريقة
سِجِلّهدف
وحدةفصل
إجراء الاتصالرسالة

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

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

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

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

  • بينما تُصمّم لغات البرمجة الإجرائية تنفيذ البرنامج كسلسلة من الأوامر الإجرائية التي قد تُغيّر ضمنيًا الحالة المشتركة، تُصمّم لغات البرمجة الوظيفية التنفيذ كتقييم لتعبيرات معقدة لا تعتمد على بعضها البعض إلا من حيث الوسائط وقيم الإرجاع. لهذا السبب، يمكن أن يكون للبرامج الوظيفية ترتيب تنفيذ حرّ، وقد لا تُتيح اللغات سوى تحكم محدود في ترتيب تنفيذ أجزاء البرنامج المختلفة؛ على سبيل المثال، تُقيّم وسائط استدعاء إجراء في لغة Scheme بترتيب عشوائي.
  • تدعم لغات البرمجة الوظيفية (وتستخدم بكثافة) الدوال من الدرجة الأولى والدوال المجهولة والإغلاقات ، على الرغم من أن هذه المفاهيم قد تم تضمينها أيضًا في اللغات الإجرائية على الأقل منذ Algol 68 .
  • تميل لغات البرمجة الوظيفية إلى الاعتماد على تحسين استدعاء الذيل والوظائف ذات الرتبة العليا بدلاً من بنيات التكرار الإجرائية.

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

توجد بعض لغات البرمجة الوظيفية المتخصصة (مثل Unlambda ) التي تتجنب مبادئ البرمجة الهيكلية لجعلها صعبة البرمجة (وبالتالي مليئة بالتحديات). تُعد هذه اللغات استثناءً من القاعدة المشتركة بين لغات البرمجة الإجرائية والوظيفية.

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

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

مع ذلك، فإن أسلوب الاستدلال العكسي ، الذي يُطبَّق بواسطة حل SLD ، والمستخدم لحل المشكلات في لغات البرمجة المنطقية مثل برولوج ، يُعامل البرامج كإجراءات لاختزال الهدف. وبالتالي، فإن العبارات من الشكل التالي:

H  :- B 1 , …, B n .

لها تفسير مزدوج، سواء كإجراءات

لإثبات/حل H ، أثبت/حل B1 و ... و Bn

وكنتيجة منطقية لذلك:

B 1 و … و B n يستلزم H .

يستخدم مبرمج المنطق الماهر التفسير الإجرائي لكتابة برامج فعالة وكفؤة، ويستخدم التفسير التصريحي للمساعدة في ضمان صحة البرامج.

انظر أيضاً

مراجع

  1. "نماذج البرمجة" .
  2. "مرحباً بكم في IEEE Xplore 2.0: استخدام لغات البرمجة الإجرائية للتحكم في أنظمة الإنتاج". وقائع المؤتمر السابع لـ IEEE حول تطبيقات الذكاء الاصطناعي . IEEE . doi : 10.1109/CAIA.1991.120848 . S2CID 58175293 . 
  3. ستيفنسون، جوزيف (أغسطس 2013). "البرمجة الإجرائية مقابل البرمجة الكائنية التوجه" . neonbrand.com . تم الاطلاع عليه بتاريخ 19 أغسطس 2013 .