ⓘ اثر جانبی, علوم رایانه. در علوم رایانه، اگر یک عملیات، تابع یا عبارت بتواند مقدار متغیرهای حالت را خارج از دامنهٔ خود تغییر دهد؛ دارای اثر جانبی است. به‌عبارت د ..

                                     

ⓘ اثر جانبی (علوم رایانه)

در علوم رایانه، اگر یک عملیات، تابع یا عبارت بتواند مقدار متغیرهای حالت را خارج از دامنهٔ خود تغییر دهد؛ دارای اثر جانبی است. به‌عبارت دیگر عملیات شامل یک اثر قابل مشاهده، علاوه‌بر بازگرداندن مقدار به تابع فراخوانی‌کننده است. داده‌های حالت که "بیرون" از عملیات به‌روز می‌شوند، ممکن است "داخل" یک شیء حالت‌دار یا یک سیستم گسترده‌تر مقدار بگیرند. مثال‌هایی از اثر جانبی شامل مقداردهی یک متغیر غیر محلی، مقداردهی یک متغیر محلی استاتیک، تغییر مقدار یک آرگومان ورودی قابل تغییر است که به‌وسیلهٔ ارجاع به تابع پاس داده شده باشد. همچنین انجام عملیات ورودی/خروجی یا فراخوانی سایر توابع دارای اثر جانبی، از مثال‌های این مفهوم به‌شمار می‌روند. در صورت وجود اثر جانبی، ممکن است رفتار یک برنامه به تاریخچه بستگی داشته باشد. یعنی ترتیب ارزیابی اهمیت دارد. درک و اشکال زدایی یک تابع با اثر جانبی، مستلزم آگاهی از زمینه و تاریخچه‌های احتمالی آن است.

میزان استفاده از اثر جانبی به زبان برنامه‌نویسی بستگی دارد. در برنامه‌نویسی دستوری استفاده از اثر جانبی جهت به‌روزرسانی حالت سیستم متداول است. در مقابل، در برنامه‌نویسی اعلانی اغلب وضعیت سیستم، بدون به‌وجود آمدن اثرات جانبی، گزارش می‌شود.

در برنامه‌نویسی تابعی اثر جانبی به‌ندرت استفاده می‌شود. عدم وجود اثر جانبی، انجام درستی‌یابی صوری یک برنامه را آسان‌تر می‌کند. زبانهای کاربردی مانند Standard ML، Scheme و اسکالا عوارض جانبی را ممنوع نمی‌کنند، اما برای برنامه‌نویسان این زبان‌ها، خودداری از ایجاد اثر جانبی مرسوم است. ربان تابعی هسکل اثرات جانبی مانند عملیات ورودی/خروجی و دیگر محاسبات حالت‌دار را با استفاده از مونادها مشخص می‌کند.

برنامه نویسان زبان اسمبلی باید از اثرات جانبی پنهان آگاه باشند - دستورالعمل‌هایی که بخش‌هایی از حالت پردازنده را تغییر می‌دهد و در دستورالعمل ذکر نشده‌اند. یک مثال کلاسیک از یک اثر جانبی پنهان یک دستورالعمل حسابی است که به‌طور ضمنی کدهای وضعیت را تغییر می‌دهد یک اثر جانبی پنهان در حالی که صریحاً یک ثبات را تغییر می‌دهد اثر آشکار. یکی از اشکالات بالقوه یک مجموعه دستورالعمل با عوارض جانبی پنهان این است که اگر تعداد زیادی از دستورالعمل‌ها اثر جانبی روی یک حالت مشترک داشته باشند، ممکن است منطق موردنیاز برای به‌روزرسانی آن حالت مانند کد وضعیت به یک تنگنا در کارایی تبدیل شود. این مشکل به‌خصوص در برخی از پردازنده‌های طراحی شده با بهینه‌سازی خط لوله از سال ۱۹۹۰ یا با اجرای خارج ترتیب رایج است. چنین پردازنده‌ای ممکن است برای تشخیص اثرات جانبی پنهان نیاز به مدارات بیشتری داشته باشد؛ یا در صورتی که نتیجهٔ عملیات به اثرات جانبی متکی باشد، حتی ممکن است خط لوله را متوقف کند.

                                     

1. شفافیت مرجع

عدم وجود اثر جانبی شرط لازم برای شفافیت مرجع است، اما کافی نیست. شفافیت مرجع به این معنی است که می‌توان یک عبارت مانند فراخوانی تابع را با مقدار آن جایگزین کرد. این امر مستلزم این است که این عبارت سره باشد، به این معنی که این عبارت باید قطعی بوده همیشه برای همان ورودی مقدار یکسانی داشته باشد و اثر جانبی نداشته باشد.

                                     

2. اثر جانبی موقتی

معمولاً هنگام بحث دربارهٔ اثر جانبی و شفافیت مرجع، اثرات جانبی ناشی از مدت زمان لازم برای اجرای عملیات فعلی نادیده گرفته می‌شود. همچنین در مواردی مانند "زمانبندی سخت‌افزار" یا "تست" ، عملیات دارای اثر جانبی، به‌طور ویژه به دلیل اثر جانبی موقتی آن‌ها به برنامه اضافه می‌شوند. مانند sleep5000 یا

‪ ‬این دستورها وضعیت را تغییر نمی‌دهند با این حال صرفاً برای اتلاف زمانی که جهت اجرای آن‌ها نیاز است، استفاده می‌شود.

                                     

3. تکرارشوندگی

تابع f با اثر جانبی، تحت ترکیب متوالی f; f "تکرار شونده" است اگر بعد از دو بار فراخوانی با مقادیر یکسان، اثر جانبی نداشته، و فراخوانی دوم مقداری برابر با فراخوانی اول داشته باشد. با فرض این که میان دو فراخوانی، هیچ تابع دیگری صدا زده نشده‌است

به عنوان نمونه کد پایتون زیر را در نظر بگیرید:

در اینجا، تابع setx تکرارشونده است زیرا فراخوانی دوم به setx با همان مقادیر حالت مشهود برنامه را تغییر نمی‌دهد: x در اولین فراخوانی مقدار ۵ داشت، و در فراخوانی دوم باز هم مقدار ۵ می‌گیرد. توجه داشته باشید که این مفهوم، با تکرارشوندگی تحت ترکیب توابع f ∘ f متفاوت است. به عنوان تابع، قدر مطلق تحت ترکیب تکرار شونده است:

                                     

4. مثال

یکی از مثال‌های متداول اثر جانبی، عملکرد اپراتور واگذاری در C++ است. به عنوان مثال، تابع انتساب، عملوند راست را برمی‌گرداند در حالی که تأثیر جانبی روی مقداردهی به یک متغیر دارد. این ویژگی به مقداردهی‌های چندگانه کمک می‌کند:

به دلیل این که وابستگی عملگر انتساب، راست به چپ است، این عبارت هم‌ارز عبارت زیر است:

در حالی که نتیجهٔ انتساب عدد ۳ به متغیر j ، بعداً به متغیر i اختصاص می‌یابد. این برای برنامه‌نویسان مبتدی سردرگم‌کننده است.

با

                                     
  • دستگاه جانبی یا دستگاه جنبی به انگلیسی: Peripheral دستگاهی است که به رایانه وصل شده و ظرفیت و کاربری آن را بالا می برد اما قطعه اصلی رایانه به حساب
  • اثر جانبی به انگلیسی: Side effect در علوم رایانه یک رویه یا عبارت هنگامی گفته می شود که دارای اثر جانبی که به علاوه بازگرداندن مقدار حالتی را تغییر
  • درگاه موازی در اتصال چاپگر به رایانه کاربرد دارد و این درگاه به درگاه چاپگر شناخته شده است و برای اتصال پویش گر به رایانه این درگاه سریع تر از درگاه سریال
  • ریاضی فرض می شدند. تاریخچه رایانه نیز به همین موضوع استوار است. اولین رایانه دستگاه محاسبه چرتکه نام دارد. چرتکه رایانه ای بود که انسان ها در گذشته
  • سخت افزار رایانه به انگلیسی: Computer Hardware اجزاء فیزیکی قابل لمس رایانه که از اجزاء الکترونیکی یا الکترومکانیکی تشکیل شده باشد. سخت افزار رایانه در واقع
  • Interface در علوم رایانه یک نقطه تعامل است با نرم افزار سخت افزار رایانه شخصی یا دستگاه جانبی مانند نمایشگر یا یک صفحه کلید. برخی از رابط های رایانه مانند
  • در علوم رایانه یک منبع یا منبع سیستمی به هر جزء فیزیکی یا مجازی با محدودیت دسترسی در یک سیستم رایانه ای اطلاق میگردد. بنابراین هر قطعه متصل به یک رایانه
  • در علوم رایانه به هر وسیله که توانایی نگهداری اطلاعات را داشته باشد حافظه می گویند. حافظه یکی از قسمت های ضروری و اساسی یک رایانه به شمار می رود. همان طور
  • لوح رایانه یا ت بل ت به انگلیسی: Tablet PC یک رایانه قابل حمل شبیه رایانسک نوت بوک یا یک دستگاه لوح مانند است که دارای یک نمایشگر لمسی یا قلمی است