لغة برمجة صارمة

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

وصف

لغة البرمجة الصارمة هي لغة برمجة تستخدم نموذج برمجة صارم ، حيث لا تسمح للمستخدم إلا بتعريف الدوال الصارمة (الدوال التي يجب تقييم جميع معاملاتها قبل استدعائها). أما لغة البرمجة غير الصارمة فتسمح للمستخدم بتعريف دوال غير صارمة، وبالتالي قد تسمح بالتقييم الكسول . [ 1 ]

إن عدم التشدد له عدة عيوب حالت دون انتشاره على نطاق واسع:

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

غالباً ما ترتبط لغات البرمجة الصارمة بالتقييم الفوري ، بينما ترتبط اللغات غير الصارمة بالتقييم المؤجل ، ولكن توجد استراتيجيات تقييم أخرى ممكنة في كلتا الحالتين. ويُستخدم مصطلحا "لغة البرمجة الفورية" و"لغة البرمجة المؤجلة" كمرادفين لمصطلحي "لغة البرمجة الصارمة" و"لغة البرمجة غير الصارمة" على التوالي.

أمثلة

معظم لغات البرمجة الشائعة الاستخدام اليوم صارمة. ومن الأمثلة على ذلك C# ، و Java ، وPerl (جميع إصداراتها، أي حتى الإصدارين 5 و7)، و Python ، و Ruby ، و Common Lisp ، و ML . تتضمن بعض لغات البرمجة الصارمة ميزات تحاكي خاصية الكسل. فمثلاً، تحتوي Raku ( المعروفة سابقًا باسم Perl 6) على قوائم كسولة، و Python على دوال توليد ، و Julia توفر نظامًا للماكرو لإنشاء دوال غير صارمة ، وكذلك Scheme .

ومن الأمثلة على اللغات غير الصارمة: Haskell و R و Miranda و Clean . [ 6 ]

امتداد

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

الاقتباسات

  1. سكوت 2006 ، ص 541.
  2. لوت، ستيفن (2015). برمجة بايثون الوظيفية . برمنغهام، المملكة المتحدة: دار نشر باكت. ص  35. ISBN 978-1-78439-699-2يركز بايثون على التقييم الصارم
  3. "برمجة راكو/القوائم الكسولة والخلاصات - ويكي بوكس، كتب مفتوحة لعالم مفتوح" . en.wikibooks.org . تم الاطلاع عليه بتاريخ 9 فبراير 2021 .
  4. لوت، ستيفن (2015). برمجة بايثون الوظيفية . برمنغهام، المملكة المتحدة: دار نشر باكت. ص 35. ISBN  978-1-78439-699-2دالة المولد غير صارمة. [...] يمكننا الاستفادة من دوال المولد لإنشاء تقييم كسول .
  5. إينيس، مايك ج. (2021-02-06)، MikeInnes/Lazy.jl ، تم الاطلاع عليه بتاريخ 2021-02-09
  6. كلوت وهول 1998 ، ص 25-26.
  7. "تصنيف امتدادات لغة هاسكل" . جيست . 5 فبراير 2019. تم الاطلاع عليه بتاريخ 5 يوليو 2026 .

مراجع

  • سكوت، مايكل لي (2006) [1999]، ماكفادين، نيت؛ وآخرون  (محررون)، براغماتية لغات البرمجة ، المجلد  2، نشرته دينيس بينروز ( الطبعة الثانية  )، سان فرانسيسكو: مورغان كوفمان، ISBN 9780126339512، OCLC 551774322 ، تم الاطلاع عليه بتاريخ 21 نوفمبر 2014 
  • كلوت، صوفي؛ هول، ريك؛ وآخرون  ، محررون. (1998) [1997]، لغات برمجة قواعد البيانات ، سلسلة محاضرات في علوم الحاسوب، المجلد  1369، برلين؛ هايدلبرغ: سبرينغر، ISBN 9783540648239ISSN 0302-9743 ، OCLC 873553545 ، تم الاطلاع عليه بتاريخ 21 نوفمبر 2014