[ تعرٌف على ] تأثير جانبي (علم الحاسوب)
تم النشر اليوم [dadate] | تأثير جانبي (علم الحاسوب)
Idempotence
يقال أن الدالة f مع التأثيرات الجانبية تكون idempotent تحت التركيب التتابعي f; f؛ إذا قمنا باستدعاء الدالة مرتين بنفس القيم فيعتبر الاستدعاء الثاني ليس لديه أي تاثيرات جانبية وسيقوم بارجاع نفس القيمة (بافتراض انه ليس هناك أي اجراءات بين نهاية الاستدعاء الأول وبداية الاستدعاء الثاني).قالب:Citation needed span فعلى سبيل المثال، انظر إلى كود بايثون التالي:
x = 0 def setx(n):
global x
x = n setx(5)
setx(5) هنا setx عبارة عن idempotent لأن الاستدعاء الثاني إلى setx (ببنفس ال ارقيومنت) لا يغير حالة البرنامج المرئي: x تم تعيينه بالفعل على 5 في الاستدعاء الأول، ويتم تعيينه مرة أخرى إلى 5 في الاستدعاء الثاني، وبالتالي حافظ على نفس القيمة. لاحظ أن هذا يختلف عن idempotence تحت تركيب الوظيفة f ∘ f. على سبيل المثال، القيمة المطلقة هي idempotent تحت تركيب الدالة: def abs(n):
if n < 0:
return -n
else:
return n abs(-5) == abs(abs(-5)) == abs(5) == 5
على سبيل المثال
أحد البراهين الشائعة لسلوك التأثير الجانبي هو عامل التعيين في سي++. على سبيل المثال، تعيد عملية التعيين المعامل الذي على اليمين ولها تأثير جانبي لتعيين تلك القيمة لمتغير. وهذا يسمح نحويا بتعدد التعيين: int i, j;
i = j = 3; لأن المشغل right associates ، فهذا يعادل int i, j;
i = (j = 3); // j = 3 returns 3, which then gets assigned to i حيث يتم تعيين نتيجة تعيين 3 إلى j ثم يتم تعيينها في i. هذا قد يسبب تشويش للمبرمجين المبتدئين. while (b == 10) {} // tests if b evaluates to 10 مع while (b = 10) {} // = returns 10 which automatically casts to true so the test is always true
الآثار الجانبية المؤقتة
عادةً ما يتم تجاهل الآثار الجانبية الناتجة عن الوقت المستغرق لتنفيذ العملية عند مناقشة التأثيرات الجانبية والشفافية المرجعية. هناك بعض الحالات، مثل توقيت الأجهزة أو الاختبار، حيث يتم إدراج العمليات خصيصًا لتأثيراتها الجانبية المؤقتة، على سبيل المثالsleep(5000) أو for (int i = 0; i < 10000; ++i) {};لا تغير هذه التعليمات الحالة الا انها تأخذ مقدار من الوقت لإكمالها.
شفافية مرجعية
إن غياب الآثار الجانبية شرط ضروري، ولكنه غير كاف، للشفافية المرجعية. الشفافية المرجعية تعني أنه يمكن استبدال تعبير (مثل استدعاء دالة) بقيمته. وهذا يتطلب أن يكون التعبير عديم الحالة، أي أن التعبير يجب أن يكون نقيًا (ليس له آثار جانبية) وحتمية أي (يعطي دائمًا نفس القيمة لنفس المدخلات). ويمكن لوظيفة بدون آثار جانبية أن ترجع قيمًا مختلفة وفقًا لتاريخها أو بيئتها، على سبيل المثال إذا كان ناتجها يعتمد على قيمة متغير ثابت محلي أو متغير شامل النطاق على التوالي.
شرح مبسط
في علم الكمبيوتر، يقال ان دالة أو تعبير لها آثار جانبية إذا غيرت بعض الحالات خارج نطاقها أو لديها تفاعل ملحوظ مع دوال الاتصال الخاصة بها أو بالعالم الخارجي إلى جانب إرجاع قيمة.على سبيل المثال، قد تقوم دالة معينة بتعديل متغير شامل المجال أو متغير ثابت، أو تعديل إحدى المتغيرات الوسيطة، أو رفع استثناء، أو كتابة البيانات إلى شاشة أو ملف، أو قراءة البيانات من لوحة مفاتيح أو ملف، أو استدعاء وظائف أخرى ذات تأثير جانبي. في وجود آثار جانبية، قد يعتمد سلوك البرنامج على التاريخ. والذي هو، ترتيب مسائل التقييم. يتطلب فهم وتصحيح دالة ذات تأثيرات جانبية معرفة السياق وتاريخه المحتمل.[1][2] ويقال إن الدالة أو التعبير -دون تأثيرات جانبية- تكون نقية.
التعليقات
لم يعلق احد حتى الآن .. كن اول من يعلق بالضغط هنا