باگ (Bug)
- بهدست: مدیر
- دستهبندی: علوم کامپیوتر و الگوریتم

باگ (Bug): در فناوری اطلاعات (IT) ، باگ (Bug) به یک خطا، عیب یا نقص در هر برنامه کامپیوتری یا یک سیستم سخت افزاری اشاره دارد. یک باگ نتایج غیرمنتظره ای ایجاد می کند یا باعث می شود یک سیستم رفتار غیر منتظره ای داشته باشد. به طور خلاصه، باگ باعث ایجاد رفتار یا حاصل شدن نتایجی می شود که برنامه یا سیستم برای آن طراحی نشده است. باگ خطا در سورس کد است که باعث می شود برنامه نتایج غیرمنتظره ای تولید کند یا به طور کلی از کار بیفتد. اشکالات رایانه می توانند بر عملکرد برنامه تأثیر بگذارند، بنابراین توسعه دهندگان باید قبل از فروخته شدن نرم افزار به مشتریان از سالم بودن آنها اطمینان حاصل کنند.
اکثر باگ ها به دلیل خطاها و اشتباهاتی است که توسعه دهندگان هنگام ساخت سورس کد یا طراحی کلی یا طراحی اجزا و سیستم عامل های مورد استفاده برنامه های مورد نظر مرتکب می شوند.برخی از آنها نتیجه خطاهایی در ترجمه بین زبان های مختلف است که توسط کامپایلرها ایجاد می شود که کد نادرست یا ناخوانا تولید می کند.
باگ ها اغلب پس از عَرضه یک محصول یا در طول آزمایشات بتا شناسایی می شوند. هنگامی که این اتفاق می افتد، کاربران باید راهی برای جلوگیری از استفاده از کد باگ یا دریافت پَچ از توسعه دهندگان نرم افزار پیدا کنند.
اولین باگ کامپیوتری چه بود؟
اولین باگ کامپیوتر در ۹ سپتامبر ۱۹۴۷ گزارش شد. این یک باگ نرم افزاری که امروزه اکثر ما با آن آشنا هستیم,نبود. اولین ایراد کامپیوتری یک پروانه واقعی بود که بین رلههای – سوییچی که به وسیله یک سیگنال الکتریکی فعال میشود در رله با استفاده از یک سیگنال نسبتا پایین (که رله را فعال میکند) میتوان سیگنال قوی تری را کنترل نمود- کامپیوتر Harvard Mark IIگیر کرد و باعث اختلال در عملکرد آن شد.
در آن زمان، بیشتر اتاقهای کامپیوتر گرما را برای حشرات، مانند مگسها و پروانهها فراهم میکردند. و هنگامی که موجودات روی اجزای داخلی کامپیوتر لانه کردند، جریان رسانی به مدارها را کوتاه کردند که باعث خرابی دستگاهها شد.
چه کسی اولین باگ (Bug) کامپیوتر را پیدا کرد؟
گریس موری هاپر کسی بود که اولین باگ کامپیوتری منتسب به شب پره را ثبت کرد که باعث ایجاد مشکلات فنی در رایانه Harvard Mark II شد.Mark II یکی از اولین کامپیوترها بود و سریعتر از مدل قبلی خود، Mark I عمل می کرد.
در حالی که این اولین باری نبود که از اصطلاح “اشکال کامپیوتری” یا “باگ کامپیوتری” استفاده می شد,کشف هاپر اولین نمونه واقعی از یک باگ در رایانه بود. هنگامی که همکاران هاپر در هاروارد به باز کردن چندین سخت افزار کامپیوتری برای مشخص کردن علت واقعی خطاها پرداختند، هر کدام یک شب پره را در رله های کامپیوتر ها پیدا کردند. تیم مجبور شد باگ را به معنای واقعی کلمه از دستگاه حذف کند. هنگامی که گروه دستگاه را “اشکال زدایی” کرد، هاپر این اتفاق را در دفتر خاطرات خود پست کرد. از آن زمان به بعد، اصطلاح “اشکال کامپیوتری” رایج شد و تا کنون استفاده می شود.
بیش از هفت دهه بعد، پروانه واقعی را در کامپیوتر پیدا نخواهید کرد اما باگ های کامپیوتری یا نرم افزاری هنوز فراوانند.
انواع باگ های کامپیوتری چیست؟
باگ های کامپیوتری،اشکال مختلفی دارند. برخی از رایج ترین آنها هستند:
- سینتکسی( Syntax bugs): زمانی که قواعد مربوط به نوشتار زبان برنامهنویسی رعایت نشوند با باگ سینتکسی مواجه میشویم. مثلا از عملگر، حروف و یا کاراکتر اشتباهی در کدها استفاده شود.
- منطقی (Logic bugs): در شرایطی که منطق نرمافزار اشتباه پیادهسازی شده باشد، برای مثال اجرای نرم افزار در یک چرخه (Loop) بینهایت قرار گیرد.
- محاسباتیگر (Arithmetic bugs) : محاسبات ریاضی در نرمافزار با خطا رو به رو شوند، مثلا عددی تقسیم بر صفر شود و یا نتیجه نهایی موردانتظار دارای خطای محاسباتی باشد.
- کار تیمی (Teamwork): ایجاد اختلاف و خطا در کدنویسی برنامهنویسان به دلیل کدنویسی تیمی، مثلا تفاوت در نامگذاری و مستندسازی نرمافزار.
- تعامل (Interfacing bugs): نرمافزار در تعامل با بخشهای دیگر نرمافزاری و سختافزاری دچار خطا شود مانند استفاده از Api نادرست.
- چند رشته ای (Multi-threading): زمانی که اجرای thread ها در نرمافزارها دچار مشکل میشوند. مثلا جایی که وظیفه A تا زمانی که وظیفه B تمام نشده باشد، ادامه نخواهد یافت، اما در عین حال، وظیفه B نمیتواند ادامه یابد تا زمانی که کار A تمام شود.
انواع دیگر باگهای رایانه عبارتند از: برنامهنویسی و اشکالات عملکرد و نقض دسترسی. برخی از باگ های غیرمعمول رایانه به نام کاشفان خود نامگذاری شده اند، مانند Heisenbugs، Bohr bugs، Schroedinbugs و Mandelbugs.
چگونه از شر باگ های رایانه خلاص شوید؟
در حالی که امروز مجبور نیستید باگ های واقعی را در سخت افزار رایانه خود حذف کنید، ممکن است همچنان نیاز به حذف یک یا دو باگ نرم افزاری برای جلوگیری از مشکلات و مشکلات داشته باشید. با به روز رسانی آنتی ویروس و برنامه های ضد بدافزار می توان رایانه خود را از شر اشکالات خلاص کرد.
با این حال، حذف برخی از باگ های کامپیوتری سخت تر از سایرین است. خوشبختانه، برنامه هایی مانند Microsoft Malicious Removal Tool (MRT) می توانند کار را انجام دهند.
چگونه یک باگ (Bug) را از رایانه خود پاک کنیم؟
در حالی که یک باگ کامپیوتری معمولاً نوعی خطای کدگذاری است، مردم گاهی آن ها را با نرم افزارهای مخرب مانند ویروس ها یا سایر بدافزارها اشتباه می گیرند.
فهمیدن اینکه رایانه شما به ویروس آلوده شده است می تواند برای اکثر کاربران رایانه یک کابوس باشد. برخورد با آنها نه تنها آزاردهنده است، بلکه حذف کامل آنها از رایانه شما زمان بر است، علاوه بر این ممکن است برای اطلاعات شخصی یا مالی شما خطرناک باشد.
به همین دلیل، ضروری است که حداقل برخی از آنتی ویروس ها و برنامه های جاسوسی را روی رایانه خود نصب کنید. همچنین بسیار مهم است که آنها را به روز نگه داشته و مطمئن شوید که به طور معمول و خودکار فایل های شما را برای تهدیدات احتمالی اسکن می کنند.در مقابل، باگ ها خطاهایی در کد هستند و تمایلی به انتقال از یک کامپیوتر به کامپیوتر دیگر مانند ویروس ندارند. اکثر اشکالات ناشی از اشتباهاتی در طراحی برنامه یا سورس کد آن یا استفاده از کدهای نادرست ایجاد شده است. با این حال، باگ های نرمافزاری میتوانند باعث شوند برنامهها به گونهای رفتار کنند که سازنده نرمافزار هرگز در نظر نداشته است.
در حالی که بعضی باگ ها (Bug) نسبتاً بی ضرر هستند، برخی از باگ های نرم افزاری می توانند تهدیداتی به اندازه ویروس ها ایجاد کنند. اشکالات ممکن است باعث از کار افتادن برنامه یا مسدود کردن رایانه شوند. آنها همچنین می توانند خطاهایی را ایجاد کنند که ممکن است اثرات دومینو وار داشته باشند. برخی از باگها میتوانند بر امنیت تأثیر بگذارند و ممکن است، برای مثال، مجرمان سایبری را قادر به دسترسی غیرمجاز به یک سیستم کنند.مجرمان سایبری پس از ورود، می توانند بدافزار نصب کنند یا اطلاعات خصوصی را سرقت کنند.
برای کاربران رایانه، باگ ها معمولاً با استفاده از نرم افزار آنتی ویروس قابل یافتن نیستند یا رفع نمی شوند. آنها اغلب با اعمال یک “پچ”، یک قطعه کد که خطا را تصحیح می کند، رفع می شوند. اینها معمولاً باید از سازنده دانلود شوند. این کار اکنون معمولاً به صورت خودکار و با “به روز رسانی” انجام می شود. برای مشکلات پایدارتر، گاهی اوقات لازم است که سیستم عامل را حذف نصب (Uninstall) کنید و سپس یک نسخه ی کم باگتر را دوباره نصب کنید.
برای توسعه دهندگان نرم افزار، باگ ها (Bug) مشکل سازتر هستند. در حالی که تغییرات مورد نیاز برای رفع آنها اغلب کوچک هستند و ممکن است شامل تغییر تنها چند خط کد باشد، فرآیند شناسایی دقیق خطوطی که باید اصلاح شوند می تواند بسیار زمان بر باشد.در سال ۲۰۱۵، محققان MIT نرم افزاری به نام CodePhage توسعه دادند که هدف آن تسهیل این فرآیند با تعمیر خودکار باگ های نرم افزار بود. این نرم افزار بدون نیاز به دسترسی به کد منبع، کد را از برنامه های دیگر قرض می گیرد و حتی می تواند در زبان های برنامه نویسی مختلف کار کند. این می تواند هزاران ساعت زمان برنامه نویسی را برای توسعه دهندگان صرفه جویی کند و منچر به ساخت نرم افزار بسیار پایدارتری شود.
اگرچه معمولاً به اندازه ویروس ها یا بدافزارها مخرب یا حذف آنها دشوار نیست، اما باگ ها می توانند در آینده نیز مشکلاتی ایجاد کنند. بسیاری از برنامه نویسان,باگ Y2K را در سال ۱۹۹۹ با استفاده از یک اصلاح به نام “windowing” “به سرعت اصلاح کردند، که تمام تاریخ های ۰۰ تا ۲۰ را به جای دهه ۱۹۰۰ در نظر می گرفت. مشکل این است که وقتی سال ۲۰۲۰ فرا رسید، برخی از این رایانه ها هنوز در حال استفاده بودند و اکنون به جای استفاده از تاریخ ۲۰۲۰، به سال ۱۹۲۰ بازگشتند.
WWE 2K20، یک بازی ویدیویی کشتی حرفهای، در نیمهشب ۱ ژانویه ۲۰۲۰ کار خود را متوقف کرد، اگرچه توسعهدهندگان بازی توانستند در عرض ۲۴ ساعت یک راه حل قابل دانلود را ارائه کنند.نرمافزار دیگری به نام Splunk که به دنبال خطاهای سیستمهای کامپیوتری مورد استفاده اکثر شرکتهای برتر میگردد نیز در برابر مشکل پنجرهسازی آسیبپذیر است، اما این شرکت توانست در عرض چند روز یک پچ ایجاد کرده و مشکل را برطرف کنند.
در آخر, از آنجایی که باگ های نرم افزاری ناخواسته و اجتناب ناپذیر هستند، حتی شرکت های بزرگ نیز بودجه خاصی را برای شناسایی و رفع آنها اختصاص می دهند.به هرحل,هیچ کس نمی خواهد از نرم افزاری که دارای باگ است استفاده کند. به این ترتیب، باگ رایانه ای که با یک پروانه بی گناه شروع شد، به منبع درآمد خوبی برای هزاران نفر تبدیل شده است.
بدون دیدگاه