برمجة أمرية: الفرق بين النسختين

من ويكيبيديا، الموسوعة الحرة
[مراجعة غير مفحوصة][مراجعة غير مفحوصة]
تم حذف المحتوى تمت إضافة المحتوى
CipherBot (نقاش | مساهمات)
روبوت: قوالب الصيانة؛ +{{يتيمة}}; تغييرات تجميلية
CipherBot (نقاش | مساهمات)
روبوت: قوالب الصيانة؛ - {{يتيمة}}; تغييرات تجميلية
سطر 1: سطر 1:
{{يتيمة|تاريخ=مايو_2011}}
البرمجة الأمرية
البرمجة الأمرية
في [[علم الحاسوب]] ، تشير البرمجة الأمرية إلى [[نمط برمجة]] يصف عملية الحوسبة من حيث العبارات التي تغير حالة البرنامج. وإلى حد كبير، بالطريقة ذاتها التي تعبّر صيغة الأمر في اللغات الطبيعية[[لغة طبيعية]] عن الأوامر المراد تنفيذها، تحدد البرامج الأمرية تسلسلاتٍ من الأوامر للحاسوب لتنفيذها.
في [[علم الحاسوب]] ، تشير البرمجة الأمرية إلى [[نمط برمجة]] يصف عملية الحوسبة من حيث العبارات التي تغير حالة البرنامج. وإلى حد كبير، بالطريقة ذاتها التي تعبّر صيغة الأمر في اللغات الطبيعية[[لغة طبيعية]] عن الأوامر المراد تنفيذها، تحدد البرامج الأمرية تسلسلاتٍ من الأوامر للحاسوب لتنفيذها.
ويُستخدم هذا المصطلح على عكس البرمجة التصريحية، التي تعبّر عما ينبغي للبرنامج إنجازه دون وصف كيفية ذلك من حيث تسلسلات الإجراءات المطلوب اتخاذها. وتعتبر [[برمجة وظيفية]] و[[برمجة منطقية]] أمثلة لنهج أكثر تصريحية.
ويُستخدم هذا المصطلح على عكس البرمجة التصريحية، التي تعبّر عما ينبغي للبرنامج إنجازه دون وصف كيفية ذلك من حيث تسلسلات الإجراءات المطلوب اتخاذها. وتعتبر [[برمجة وظيفية]] و[[برمجة منطقية]] أمثلة لنهج أكثر تصريحية.
==البرمجة الأمرية والإجرائية والتصريحية==
==البرمجة الأمرية والإجرائية والتصريحية==
البرمجة الإجرائية عبارة عن برمجة أمرية يُبنى فيها البرنامج من واحد أو أكثر من الإجراءات (وتُعرف أيضًا باسم روتينات فرعية أو وظائف). وغالبًا ما تستخدم المصطلحات كمترادفات، لكن استخدام الإجراءات له تأثير كبير على كيفية ظهور البرامج الأمرية وكيفية بنائها. وتُعرف البرمجة الإجرائية للغاية باسم البرمجة الهيكلية، وفيها تكون تغيرات الحالة متمركزة في الإجراءات أو قاصرة على معاملات برمجية صريحة ومردودات من الإجراءات. ومن عقد الستينيات فصاعدًا، تم تعزيز [[برمجة مهيكلة]] والبرمجة التركيبية بصفة عامة كأساليب لتحسين القابلية للصيانة والجودة العامة للبرامج الأمرية. وتعتبر [[برمجة كائنية التوجه]] امتدادًا لهذا النهج.[بحاجة للاستشهاد[
البرمجة الإجرائية عبارة عن برمجة أمرية يُبنى فيها البرنامج من واحد أو أكثر من الإجراءات (وتُعرف أيضًا باسم روتينات فرعية أو وظائف). وغالبًا ما تستخدم المصطلحات كمترادفات، لكن استخدام الإجراءات له تأثير كبير على كيفية ظهور البرامج الأمرية وكيفية بنائها. وتُعرف البرمجة الإجرائية للغاية باسم البرمجة الهيكلية، وفيها تكون تغيرات الحالة متمركزة في الإجراءات أو قاصرة على معاملات برمجية صريحة ومردودات من الإجراءات. ومن عقد الستينيات فصاعدًا، تم تعزيز [[برمجة مهيكلة]] والبرمجة التركيبية بصفة عامة كأساليب لتحسين القابلية للصيانة والجودة العامة للبرامج الأمرية. وتعتبر [[برمجة كائنية التوجه]] امتدادًا لهذا النهج.[بحاجة للاستشهاد[
ويمكن اعتبار البرمجة الإجرائية خطوة نحو البرمجة التصريحية. وبمجرد النظر للأسماء، يمكن للمُبرمج في الغالب ذكر أنواع معامِلات ومردودات الإجراءات (والتعليقات ذات الصلة) وتحديد الإجراء المعين الذي يُفترض تنفيذه – دون النظر بالضرورة إلى كيفية تحقيق الإجراء لهذه النتيجة. وفي الوقت ذاته، ثمة برنامج كامل لا يزال أمريًا نظرًا لأنه "يحدد" العبارات المطلوب تنفيذها وترتيب تنفيذها إلى حد كبير.
ويمكن اعتبار البرمجة الإجرائية خطوة نحو البرمجة التصريحية. وبمجرد النظر للأسماء، يمكن للمُبرمج في الغالب ذكر أنواع معامِلات ومردودات الإجراءات (والتعليقات ذات الصلة) وتحديد الإجراء المعين الذي يُفترض تنفيذه – دون النظر بالضرورة إلى كيفية تحقيق الإجراء لهذه النتيجة. وفي الوقت ذاته، ثمة برنامج كامل لا يزال أمريًا نظرًا لأنه "يحدد" العبارات المطلوب تنفيذها وترتيب تنفيذها إلى حد كبير.
والبرمجة التصريحية عبارة عن أسلوب برمجة غير أمري تصف فيه البرامج نتائج البرنامج، دون إدراج الأمر صراحةً أو الخطوات التي يتعين القيام بها لتحقيق النتائج. وتتسم لغات البرمجة الوظيفية و[[برمجة منطقية]] بأسلوب البرمجة التصريحية.
والبرمجة التصريحية عبارة عن أسلوب برمجة غير أمري تصف فيه البرامج نتائج البرنامج، دون إدراج الأمر صراحةً أو الخطوات التي يتعين القيام بها لتحقيق النتائج. وتتسم لغات البرمجة الوظيفية و[[برمجة منطقية]] بأسلوب البرمجة التصريحية.
وفي اللغة الوظيفية الصرفة مثل Haskell، تكون كل الوظائف بدون أضرار، ولا تمثل تغييرات الحالة إلا وظائف تقوم بتحويل الحالة. ورغم أن اللغات الوظيفية الصرفة ليست أمرية، إلا أنها تيسر في الغالب من وصف تأثير إحدى الوظائف كسلسة من الخطوات. وثمة لغات وظيفية أخرى مثل Lisp وOCaml وErlang[[إرلانج]] تدعم مزيجًا من البرمجة الإجرائية والوظيفية.
وفي اللغة الوظيفية الصرفة مثل Haskell، تكون كل الوظائف بدون أضرار، ولا تمثل تغييرات الحالة إلا وظائف تقوم بتحويل الحالة. ورغم أن اللغات الوظيفية الصرفة ليست أمرية، إلا أنها تيسر في الغالب من وصف تأثير إحدى الوظائف كسلسة من الخطوات. وثمة لغات وظيفية أخرى مثل Lisp وOCaml وErlang[[إرلانج]] تدعم مزيجًا من البرمجة الإجرائية والوظيفية.
وفي لغات البرمجة المنطقية، تتكون البرامج من عبارات منطقية، ويقوم البرنامج بالتنفيذ عن طريق البحث عن براهين للعبارات. وكما في لغات البرمجة الوظيفية، ثمة بعض لغات البرمجة المنطقية مثل Prolog و[[لغة استعلام]] قواعد البيانات مثل SQL [[إس كيو إل]] ، في حيث تكون تصريحية من حيث المبدأ، تدعم أيضًا نمط البرمجة الإجرائي.
وفي لغات البرمجة المنطقية، تتكون البرامج من عبارات منطقية، ويقوم البرنامج بالتنفيذ عن طريق البحث عن براهين للعبارات. وكما في لغات البرمجة الوظيفية، ثمة بعض لغات البرمجة المنطقية مثل Prolog و[[لغة استعلام]] قواعد البيانات مثل SQL [[إس كيو إل]] ، في حيث تكون تصريحية من حيث المبدأ، تدعم أيضًا نمط البرمجة الإجرائي.
وقد كانت العديد من لغات البرمجة الأمرية (مثل Fortran [[فورتران]] وBASIC [[بيسيك]] وC[[سي (لغة برمجة)]]) عمليات تجريد للغة التجميع.
وقد كانت العديد من لغات البرمجة الأمرية (مثل Fortran [[فورتران]] وBASIC [[بيسيك]] وC[[سي (لغة برمجة)]]) عمليات تجريد للغة التجميع.
==نظرة عامة==
==نظرة عامة==
يعد تنفيذ المكونات المادية لكل الحواسب تقريبًا تنفيذًا أمريًا؛<ref group=ملاحظات>[[Reconfigurable computing]] is a notable exception</ref> [الملاحظة 1] كما روعي في تصميم كل المكونات المادية للحاسوب تقريبًا تنفيذ لغة الآلة التي تمثل لغة الحاسوب الأصلية وتُكتب بالأسلوب الأمري. ومن هذا المنظور منخفض المستوى، تُعرف حالة البرنامج على أنها مكونات الذاكرة، والعبارات هي التعليمات الموجودة في [[لغة الآلة]] الأصلية للحاسوب. وتستخدم اللغات الأمرية من المستوى الأعلى متغيرات وعبارات أكثر تعقيدًا، لكنها لا تزل تتبع نفس النمط. وفي حين أن الوصفات والقوائم المرجعية للعمليات ليست من برامج الحاسوب، إلا أنها أيضًا مفاهيم معروفة تشبه في الأسلوب البرمجة الأمرية؛ حيث تمثل كل خطوة أمرًا، وتتحدد الحالة ماديًا. ونظرًا لأن الأفكار الرئيسية للبرمجة الأمرية معروفة نظريًا ومجسدة مباشرة في المكونات المادية للحاسوب؛ لذا تكون معظم لغات الحاسوب بالأسلوب الأمري.
يعد تنفيذ المكونات المادية لكل الحواسب تقريبًا تنفيذًا أمريًا؛<ref group=ملاحظات>[[Reconfigurable computing]] is a notable exception</ref> [الملاحظة 1] كما روعي في تصميم كل المكونات المادية للحاسوب تقريبًا تنفيذ لغة الآلة التي تمثل لغة الحاسوب الأصلية وتُكتب بالأسلوب الأمري. ومن هذا المنظور منخفض المستوى، تُعرف حالة البرنامج على أنها مكونات الذاكرة، والعبارات هي التعليمات الموجودة في [[لغة الآلة]] الأصلية للحاسوب. وتستخدم اللغات الأمرية من المستوى الأعلى متغيرات وعبارات أكثر تعقيدًا، لكنها لا تزل تتبع نفس النمط. وفي حين أن الوصفات والقوائم المرجعية للعمليات ليست من برامج الحاسوب، إلا أنها أيضًا مفاهيم معروفة تشبه في الأسلوب البرمجة الأمرية؛ حيث تمثل كل خطوة أمرًا، وتتحدد الحالة ماديًا. ونظرًا لأن الأفكار الرئيسية للبرمجة الأمرية معروفة نظريًا ومجسدة مباشرة في المكونات المادية للحاسوب؛ لذا تكون معظم لغات الحاسوب بالأسلوب الأمري.
وتؤدي عبارات التخصيص، في النمط الأمري، وظيفة على المعلومات الموجودة في الذاكرة وتقوم بحفظ النتائج في الذاكرة لاستخدامها لاحقًا. وبالإضافة لذلك، تسمح اللغات الأمرية عالية المستوى بتقييم التعبيرات المعقدة، التي قد تتألف من مجموعة من العمليات الحسابية [[حسابيات]] وتقييمات الدوال وتحويل قيم النتائج إلى الذاكرة. ويسمح ربط العبارات (كما في while loops وdo while loops وfor loops) بتنفيذ تسلسل من العبارات مرات عديدة. ويمكن للحلقات إما تنفيذ العبارات التي تحتوي عليها لعدد محدد من المرات، أو يمكنها تنفيذها بشكل متكرر إلى أن يحدث تغير في بعض الحالات. وتسمح العبارات المتفرعة المشروطة بإنجاز تسلسل من العبارات ليتم تنفيذه فحسب إذا تم استيفاء بعض الشروط. وخلاف ذلك، يتم تخطي العبارات ويستمر تسلسل التنفيذ من العبارات التي تليها. وتسمح العبارات المتفرعة غير المشروطة بنقل تسلسل التنفيذ إلى جزء معين من البرنامج. ويتضمن ذلك القفزة (تُسمى "goto" في عدة لغات) وswitch والبرنامج الفرعي أو الإجراء، طلب (والذي عادة ما يعود للعبارة التالية بعد الطلب).
وتؤدي عبارات التخصيص، في النمط الأمري، وظيفة على المعلومات الموجودة في الذاكرة وتقوم بحفظ النتائج في الذاكرة لاستخدامها لاحقًا. وبالإضافة لذلك، تسمح اللغات الأمرية عالية المستوى بتقييم التعبيرات المعقدة، التي قد تتألف من مجموعة من العمليات الحسابية [[حسابيات]] وتقييمات الدوال وتحويل قيم النتائج إلى الذاكرة. ويسمح ربط العبارات (كما في while loops وdo while loops وfor loops) بتنفيذ تسلسل من العبارات مرات عديدة. ويمكن للحلقات إما تنفيذ العبارات التي تحتوي عليها لعدد محدد من المرات، أو يمكنها تنفيذها بشكل متكرر إلى أن يحدث تغير في بعض الحالات. وتسمح العبارات المتفرعة المشروطة بإنجاز تسلسل من العبارات ليتم تنفيذه فحسب إذا تم استيفاء بعض الشروط. وخلاف ذلك، يتم تخطي العبارات ويستمر تسلسل التنفيذ من العبارات التي تليها. وتسمح العبارات المتفرعة غير المشروطة بنقل تسلسل التنفيذ إلى جزء معين من البرنامج. ويتضمن ذلك القفزة (تُسمى "goto" في عدة لغات) وswitch والبرنامج الفرعي أو الإجراء، طلب (والذي عادة ما يعود للعبارة التالية بعد الطلب).
==هيكل الكتلة==
==هيكل الكتلة==
المادة الرئيسية: )برمجة) الكتلة
المادة الرئيسية: )برمجة) الكتلة
في أوائل تطوير لغات البرمجة عالية المستوى، أتاح تقديم الكتلة بناء البرامج حيث يمكن معالجة مجموعة من العبارات والتصريحات كما لو كانت عبارة واحدة. وقد أتاح ذلك، إلى جانب تقديم الوظائف الفرعية، التعبير عن الهياكل المعقدة من خلال تحلل هرمي إلى هياكل إجرائية أصغر.
في أوائل تطوير لغات البرمجة عالية المستوى، أتاح تقديم الكتلة بناء البرامج حيث يمكن معالجة مجموعة من العبارات والتصريحات كما لو كانت عبارة واحدة. وقد أتاح ذلك، إلى جانب تقديم الوظائف الفرعية، التعبير عن الهياكل المعقدة من خلال تحلل هرمي إلى هياكل إجرائية أصغر.
==الخلفية التاريخية==
==الخلفية التاريخية==
كانت أولى لغات الأوامر هي لغات الآلة للحواسب الأصلية. وفي هذه اللغات، كانت التعليمات بسيطة للغاية، مما جعل تنفيذ المكونات المادية للحاسوب أسهل، لكنها أعاقت إنشاء برامج معقدة. وكانت لغة FORTRAN [[فورتران]] - التي طورها جون باكوس في شركة آي بي إم بدءًا من عام 1954 - أول لغة برمجة رئيسية للتغلب على العقبات التي شكلتها لغة الآلة في إنشاء برامج معقدة. كما كانت FORTRAN لغة مترجمة أتاحت متغيرات معينة ومصطلحات معقدة وبرامج فرعية والعديد من الخصائص الأخرى المعروفة الآن في اللغات الأمرية. وقد شهد العقدان التاليان تطورًا في عدد من لغات البرمجة الأمرية عالية المستوى الرئيسية الأخرى. وفي أواخر الخمسينيات والستينيات، تم تطوير لغة ALGOL كي تسمح بالتعبير عن الخوارزميات الرياضية بسهولة أكبر، كما قامت بوظيفة اللغة المستهدفة لنظام التشغيل لبعض الحواسب. كما مثلت كلا من لغتيّ COBOL (1960) وBASIC (1964) محاولتين لجعل البرامج اللغوية البرمجية أشبه باللغة الإنجليزية. وفي السبعينيات، تم تطوير لغة البرمجة Pascal [[باسكال (لغة برمجة)]]بواسطة نيكولاس ويرث، وقام دينيس ريتشي بإنشاء لغة البرمجة C خلال عمله في مختبرات بل. ثم توصل ويرث إلى تصميم اللغتين Modula-2 وOberon. ولتلبية احتياجات وزارة دفاع الولايات المتحدة، بدأ جون إشبيا وفريق من شركة هانيويل في تصميم لغة البرمجة Ada في عام 1978، بعد مشروع امتد لأربع سنوات لتحديد متطلبات اللغة. وقد تم نشر المواصفات لأول مرة في عام 1983 مع تنقيحات في عام 1995 و2005/2006.
كانت أولى لغات الأوامر هي لغات الآلة للحواسب الأصلية. وفي هذه اللغات، كانت التعليمات بسيطة للغاية، مما جعل تنفيذ المكونات المادية للحاسوب أسهل، لكنها أعاقت إنشاء برامج معقدة. وكانت لغة FORTRAN [[فورتران]] - التي طورها جون باكوس في شركة آي بي إم بدءًا من عام 1954 - أول لغة برمجة رئيسية للتغلب على العقبات التي شكلتها لغة الآلة في إنشاء برامج معقدة. كما كانت FORTRAN لغة مترجمة أتاحت متغيرات معينة ومصطلحات معقدة وبرامج فرعية والعديد من الخصائص الأخرى المعروفة الآن في اللغات الأمرية. وقد شهد العقدان التاليان تطورًا في عدد من لغات البرمجة الأمرية عالية المستوى الرئيسية الأخرى. وفي أواخر الخمسينيات والستينيات، تم تطوير لغة ALGOL كي تسمح بالتعبير عن الخوارزميات الرياضية بسهولة أكبر، كما قامت بوظيفة اللغة المستهدفة لنظام التشغيل لبعض الحواسب. كما مثلت كلا من لغتيّ COBOL (1960) وBASIC (1964) محاولتين لجعل البرامج اللغوية البرمجية أشبه باللغة الإنجليزية. وفي السبعينيات، تم تطوير لغة البرمجة Pascal [[باسكال (لغة برمجة)]]بواسطة نيكولاس ويرث، وقام دينيس ريتشي بإنشاء لغة البرمجة C خلال عمله في مختبرات بل. ثم توصل ويرث إلى تصميم اللغتين Modula-2 وOberon. ولتلبية احتياجات وزارة دفاع الولايات المتحدة، بدأ جون إشبيا وفريق من شركة هانيويل في تصميم لغة البرمجة Ada في عام 1978، بعد مشروع امتد لأربع سنوات لتحديد متطلبات اللغة. وقد تم نشر المواصفات لأول مرة في عام 1983 مع تنقيحات في عام 1995 و2005/2006.
وشهد عام 1980 نموًا سريعًا في الاهتمام بالبرمجة كائنية التوجه. كانت تلك اللغات أمرية في الأسلوب، لكنها أضافت مزايا لدعم الكائنات. كما شهد العقدان الآخران من القرن العشرين تطورًا لعدد كبير من لغات البرمجة تلك. لغة البرمجة Smalltalk-80، صاحب فكرتها الأصلية هو آلان كاي في عام 1969، وتم إصدارها في عام 1980 بواسطة مركز أبحاث زيروكس بالو ألتو. واستخلاصًا من المفاهيم في لغة برمجة كائنية التوجه أخرى— Simula (التي تعتبر لغة البرمجة كائنية التوجه الأولى في العالم، والتي جرى تطويرها في أواخر الستينيات) —قام بيارن ستوستروب بتصميم لغة البرمجة C++، وهي من لغات البرمجة كائنية التوجه التي تعتمد على لغة البرمجة C. وقد تم أول تطبيق للغة البرمجة C++[[سي++ (لغة برمجة)]] في عام 1985. وفي أواخر الثمانينيات والتسعينيات، كانت اللغات الأمرية الملحوظة التي تعتمد علي المفاهيم كائنية التوجه هي لغة Perl التي صدرت عام 1987 بواسطة لاري وول، ولغة Python التي صدرت عام 1990 بواسطة جايدو فان روسم ولغة PHP [[بي إتش بي]] التي صدرت عام 1994 بواسطة راسموس ليدروف؛ وصدرت للغة Java لأول مرة عام 1994 بواسطة شركة[[صن ميكروسيستمز]] وصدرت لغة Ruby[[روبي (لغة برمجة)]] عام 1995 بواسطة يوكيهيرو "ماتز" ماتسوموتو. ويعد برنامج NET platform (2002)، من شركة مايكروسوفت، في جوهره برنامجًا أمريًا مثلما هي لغاته الأساسية المستهدفة، VB.NET وC#.
وشهد عام 1980 نموًا سريعًا في الاهتمام بالبرمجة كائنية التوجه. كانت تلك اللغات أمرية في الأسلوب، لكنها أضافت مزايا لدعم الكائنات. كما شهد العقدان الآخران من القرن العشرين تطورًا لعدد كبير من لغات البرمجة تلك. لغة البرمجة Smalltalk-80، صاحب فكرتها الأصلية هو آلان كاي في عام 1969، وتم إصدارها في عام 1980 بواسطة مركز أبحاث زيروكس بالو ألتو. واستخلاصًا من المفاهيم في لغة برمجة كائنية التوجه أخرى— Simula (التي تعتبر لغة البرمجة كائنية التوجه الأولى في العالم، والتي جرى تطويرها في أواخر الستينيات) —قام بيارن ستوستروب بتصميم لغة البرمجة C++، وهي من لغات البرمجة كائنية التوجه التي تعتمد على لغة البرمجة C. وقد تم أول تطبيق للغة البرمجة C++[[سي++ (لغة برمجة)]] في عام 1985. وفي أواخر الثمانينيات والتسعينيات، كانت اللغات الأمرية الملحوظة التي تعتمد علي المفاهيم كائنية التوجه هي لغة Perl التي صدرت عام 1987 بواسطة لاري وول، ولغة Python التي صدرت عام 1990 بواسطة جايدو فان روسم ولغة PHP [[بي إتش بي]] التي صدرت عام 1994 بواسطة راسموس ليدروف؛ وصدرت للغة Java لأول مرة عام 1994 بواسطة شركة[[صن ميكروسيستمز]] وصدرت لغة Ruby[[روبي (لغة برمجة)]] عام 1995 بواسطة يوكيهيرو "ماتز" ماتسوموتو. ويعد برنامج NET platform (2002)، من شركة مايكروسوفت، في جوهره برنامجًا أمريًا مثلما هي لغاته الأساسية المستهدفة، VB.NET وC#.
ويشمل تصنيف: لغات البرمجة الإجرائية لغات برمجة أمرية إضافية.
ويشمل تصنيف: لغات البرمجة الإجرائية لغات برمجة أمرية إضافية.
==ملاحظات==
==ملاحظات==
سطر 49: سطر 48:


{{DEFAULTSORT:Imperative Programming}}
{{DEFAULTSORT:Imperative Programming}}
[[rue:Імператівне проґрамованя]]


[[تصنيف:أنماط برمجة]]
[[تصنيف:أنماط برمجة]]
سطر 74: سطر 72:
[[ro:Programare imperativă]]
[[ro:Programare imperativă]]
[[ru:Императивное программирование]]
[[ru:Императивное программирование]]
[[rue:Імператівне проґрамованя]]
[[sh:Imperativno programiranje]]
[[sh:Imperativno programiranje]]
[[sr:Императивно програмирање]]
[[sr:Императивно програмирање]]

نسخة 02:52، 2 يونيو 2011

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

البرمجة الأمرية والإجرائية والتصريحية

البرمجة الإجرائية عبارة عن برمجة أمرية يُبنى فيها البرنامج من واحد أو أكثر من الإجراءات (وتُعرف أيضًا باسم روتينات فرعية أو وظائف). وغالبًا ما تستخدم المصطلحات كمترادفات، لكن استخدام الإجراءات له تأثير كبير على كيفية ظهور البرامج الأمرية وكيفية بنائها. وتُعرف البرمجة الإجرائية للغاية باسم البرمجة الهيكلية، وفيها تكون تغيرات الحالة متمركزة في الإجراءات أو قاصرة على معاملات برمجية صريحة ومردودات من الإجراءات. ومن عقد الستينيات فصاعدًا، تم تعزيز برمجة مهيكلة والبرمجة التركيبية بصفة عامة كأساليب لتحسين القابلية للصيانة والجودة العامة للبرامج الأمرية. وتعتبر برمجة كائنية التوجه امتدادًا لهذا النهج.[بحاجة للاستشهاد[ ويمكن اعتبار البرمجة الإجرائية خطوة نحو البرمجة التصريحية. وبمجرد النظر للأسماء، يمكن للمُبرمج في الغالب ذكر أنواع معامِلات ومردودات الإجراءات (والتعليقات ذات الصلة) وتحديد الإجراء المعين الذي يُفترض تنفيذه – دون النظر بالضرورة إلى كيفية تحقيق الإجراء لهذه النتيجة. وفي الوقت ذاته، ثمة برنامج كامل لا يزال أمريًا نظرًا لأنه "يحدد" العبارات المطلوب تنفيذها وترتيب تنفيذها إلى حد كبير. والبرمجة التصريحية عبارة عن أسلوب برمجة غير أمري تصف فيه البرامج نتائج البرنامج، دون إدراج الأمر صراحةً أو الخطوات التي يتعين القيام بها لتحقيق النتائج. وتتسم لغات البرمجة الوظيفية وبرمجة منطقية بأسلوب البرمجة التصريحية. وفي اللغة الوظيفية الصرفة مثل Haskell، تكون كل الوظائف بدون أضرار، ولا تمثل تغييرات الحالة إلا وظائف تقوم بتحويل الحالة. ورغم أن اللغات الوظيفية الصرفة ليست أمرية، إلا أنها تيسر في الغالب من وصف تأثير إحدى الوظائف كسلسة من الخطوات. وثمة لغات وظيفية أخرى مثل Lisp وOCaml وErlangإرلانج تدعم مزيجًا من البرمجة الإجرائية والوظيفية. وفي لغات البرمجة المنطقية، تتكون البرامج من عبارات منطقية، ويقوم البرنامج بالتنفيذ عن طريق البحث عن براهين للعبارات. وكما في لغات البرمجة الوظيفية، ثمة بعض لغات البرمجة المنطقية مثل Prolog ولغة استعلام قواعد البيانات مثل SQL إس كيو إل ، في حيث تكون تصريحية من حيث المبدأ، تدعم أيضًا نمط البرمجة الإجرائي. وقد كانت العديد من لغات البرمجة الأمرية (مثل Fortran فورتران وBASIC بيسيك وCسي (لغة برمجة)) عمليات تجريد للغة التجميع.

نظرة عامة

يعد تنفيذ المكونات المادية لكل الحواسب تقريبًا تنفيذًا أمريًا؛[ملاحظات 1] [الملاحظة 1] كما روعي في تصميم كل المكونات المادية للحاسوب تقريبًا تنفيذ لغة الآلة التي تمثل لغة الحاسوب الأصلية وتُكتب بالأسلوب الأمري. ومن هذا المنظور منخفض المستوى، تُعرف حالة البرنامج على أنها مكونات الذاكرة، والعبارات هي التعليمات الموجودة في لغة الآلة الأصلية للحاسوب. وتستخدم اللغات الأمرية من المستوى الأعلى متغيرات وعبارات أكثر تعقيدًا، لكنها لا تزل تتبع نفس النمط. وفي حين أن الوصفات والقوائم المرجعية للعمليات ليست من برامج الحاسوب، إلا أنها أيضًا مفاهيم معروفة تشبه في الأسلوب البرمجة الأمرية؛ حيث تمثل كل خطوة أمرًا، وتتحدد الحالة ماديًا. ونظرًا لأن الأفكار الرئيسية للبرمجة الأمرية معروفة نظريًا ومجسدة مباشرة في المكونات المادية للحاسوب؛ لذا تكون معظم لغات الحاسوب بالأسلوب الأمري. وتؤدي عبارات التخصيص، في النمط الأمري، وظيفة على المعلومات الموجودة في الذاكرة وتقوم بحفظ النتائج في الذاكرة لاستخدامها لاحقًا. وبالإضافة لذلك، تسمح اللغات الأمرية عالية المستوى بتقييم التعبيرات المعقدة، التي قد تتألف من مجموعة من العمليات الحسابية حسابيات وتقييمات الدوال وتحويل قيم النتائج إلى الذاكرة. ويسمح ربط العبارات (كما في while loops وdo while loops وfor loops) بتنفيذ تسلسل من العبارات مرات عديدة. ويمكن للحلقات إما تنفيذ العبارات التي تحتوي عليها لعدد محدد من المرات، أو يمكنها تنفيذها بشكل متكرر إلى أن يحدث تغير في بعض الحالات. وتسمح العبارات المتفرعة المشروطة بإنجاز تسلسل من العبارات ليتم تنفيذه فحسب إذا تم استيفاء بعض الشروط. وخلاف ذلك، يتم تخطي العبارات ويستمر تسلسل التنفيذ من العبارات التي تليها. وتسمح العبارات المتفرعة غير المشروطة بنقل تسلسل التنفيذ إلى جزء معين من البرنامج. ويتضمن ذلك القفزة (تُسمى "goto" في عدة لغات) وswitch والبرنامج الفرعي أو الإجراء، طلب (والذي عادة ما يعود للعبارة التالية بعد الطلب).

هيكل الكتلة

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

الخلفية التاريخية

كانت أولى لغات الأوامر هي لغات الآلة للحواسب الأصلية. وفي هذه اللغات، كانت التعليمات بسيطة للغاية، مما جعل تنفيذ المكونات المادية للحاسوب أسهل، لكنها أعاقت إنشاء برامج معقدة. وكانت لغة FORTRAN فورتران - التي طورها جون باكوس في شركة آي بي إم بدءًا من عام 1954 - أول لغة برمجة رئيسية للتغلب على العقبات التي شكلتها لغة الآلة في إنشاء برامج معقدة. كما كانت FORTRAN لغة مترجمة أتاحت متغيرات معينة ومصطلحات معقدة وبرامج فرعية والعديد من الخصائص الأخرى المعروفة الآن في اللغات الأمرية. وقد شهد العقدان التاليان تطورًا في عدد من لغات البرمجة الأمرية عالية المستوى الرئيسية الأخرى. وفي أواخر الخمسينيات والستينيات، تم تطوير لغة ALGOL كي تسمح بالتعبير عن الخوارزميات الرياضية بسهولة أكبر، كما قامت بوظيفة اللغة المستهدفة لنظام التشغيل لبعض الحواسب. كما مثلت كلا من لغتيّ COBOL (1960) وBASIC (1964) محاولتين لجعل البرامج اللغوية البرمجية أشبه باللغة الإنجليزية. وفي السبعينيات، تم تطوير لغة البرمجة Pascal باسكال (لغة برمجة)بواسطة نيكولاس ويرث، وقام دينيس ريتشي بإنشاء لغة البرمجة C خلال عمله في مختبرات بل. ثم توصل ويرث إلى تصميم اللغتين Modula-2 وOberon. ولتلبية احتياجات وزارة دفاع الولايات المتحدة، بدأ جون إشبيا وفريق من شركة هانيويل في تصميم لغة البرمجة Ada في عام 1978، بعد مشروع امتد لأربع سنوات لتحديد متطلبات اللغة. وقد تم نشر المواصفات لأول مرة في عام 1983 مع تنقيحات في عام 1995 و2005/2006. وشهد عام 1980 نموًا سريعًا في الاهتمام بالبرمجة كائنية التوجه. كانت تلك اللغات أمرية في الأسلوب، لكنها أضافت مزايا لدعم الكائنات. كما شهد العقدان الآخران من القرن العشرين تطورًا لعدد كبير من لغات البرمجة تلك. لغة البرمجة Smalltalk-80، صاحب فكرتها الأصلية هو آلان كاي في عام 1969، وتم إصدارها في عام 1980 بواسطة مركز أبحاث زيروكس بالو ألتو. واستخلاصًا من المفاهيم في لغة برمجة كائنية التوجه أخرى— Simula (التي تعتبر لغة البرمجة كائنية التوجه الأولى في العالم، والتي جرى تطويرها في أواخر الستينيات) —قام بيارن ستوستروب بتصميم لغة البرمجة C++، وهي من لغات البرمجة كائنية التوجه التي تعتمد على لغة البرمجة C. وقد تم أول تطبيق للغة البرمجة C++سي++ (لغة برمجة) في عام 1985. وفي أواخر الثمانينيات والتسعينيات، كانت اللغات الأمرية الملحوظة التي تعتمد علي المفاهيم كائنية التوجه هي لغة Perl التي صدرت عام 1987 بواسطة لاري وول، ولغة Python التي صدرت عام 1990 بواسطة جايدو فان روسم ولغة PHP بي إتش بي التي صدرت عام 1994 بواسطة راسموس ليدروف؛ وصدرت للغة Java لأول مرة عام 1994 بواسطة شركةصن ميكروسيستمز وصدرت لغة Rubyروبي (لغة برمجة) عام 1995 بواسطة يوكيهيرو "ماتز" ماتسوموتو. ويعد برنامج NET platform (2002)، من شركة مايكروسوفت، في جوهره برنامجًا أمريًا مثلما هي لغاته الأساسية المستهدفة، VB.NET وC#. ويشمل تصنيف: لغات البرمجة الإجرائية لغات برمجة أمرية إضافية.

ملاحظات

المراجع

  • Pratt, Terrence W. and Marvin V. Zelkowitz. Programming Languages: Design and Implementation, 3rd ed. Englewood Cliffs, N.J.: Prentice Hall, 1996.
  • Sebesta, Robert W. Concepts of Programming Languages, 3rd ed. Reading, Mass.: Addison-Wesley Publishing Company, 1996.

انظر أيضًا

  • لغة توصيف البنية
  • التماسك
  • منهج التصميم البنائي، طريقة منهجية لإنشاء نظم الذكاء الاصطناعي التركيبية واسعة النطاق
  • هندسة البرمجيات القائمة على المكونات
  • التزاوج
  • ديفيد برناس
  • إخفاء المعلومات (التغليف)
  • المكتبة (حوسبة)
  • قائمة خصائص جودة النظام
  • القصاصات (برمجة)
  • البرمجة التركيبية

Originally based on the article 'Imperative programming' by Stan Seibert, from Nupedia, licensed under the GNU Free Documentation License.

قالب:Programming language
وسوم <ref> موجودة لمجموعة اسمها "ملاحظات"، ولكن لم يتم العثور على وسم <references group="ملاحظات"/> أو هناك وسم </ref> ناقص