اگر شما هم علاقمند به دنیای برنامه نویسی باشید و یا در این حوزه مشغول به فعالیت باشید، حتما اصطلاح باگ را شنیده اید. باگ یکی از اصطلاحات عجیب و پرکاربرد در دنیای برنامه نویسی است که تقریبا هیچ برنامه نویسی وجود ندارد که در طی فرآیند برنامه نویسی به باگ بر نخورد. با ما تا انتهای این مقاله همراه باشید تا با مفهوم باگ بیشتر آشنا شده و انواع مختلف آن را بررسی کنیم.

باگ در لغت

باگ در لغت به معنای اشکال نرم افزاری است. باگ به نوعی از خطا یا اشتباه در یک سیستم گفته می‌شود که در پی آن، نرم افزار یا سیستم عملکردی ناقص یا اشتباه داشته باشد و یا به طور کل اجرا نشود. البته لازم به ذکر است که معنای تحت اللفظی باگ، حشره است.

تاریخچه باگ

باگ باگ نرم افزاری گری هاپرتاریخچه باگ مطابق با منابع موجود در فضای مجازی به سال ۱۹۴۵ باز می‌گردد. در سال ۱۹۴۵ و در دانشگاه هاروارد، هنگام عیب یابی یک ماشین حساب به نام MARK II، کلمه باگ به کار برده شده است. اولین کسی که از کلمه باگ برای اشکال در آن زمان استفاده کرد، خانمی به نام گریس هاپر است که در نیروی دریایی کار می‌کرده است. گریس هارپر ریاضی دان آمریکایی بود که به در جهان به عنوان اولین بانوی نرم افزار و نخسیتین مادر و مدرس برنامه نویسی کامپیوتر شناخته می‌شود. از مهم ترین فعالیت های خانم هاپر می‌توان به اختراع اولین زبان برنامه نویسی برای رایانه های MARK I و MARK II اشاره کرد. همچنین هاپر نخستین مترجم کامپایلر نیز هست. گریس هاپر از موفق ترین زنان دنیا است.

 

گفته می‌شود که در آن هنگام که ماشین حساب MARK II کار نمی‌کرد، بعد از مدت طولانی جست و جو برای حل مشکل متوجه می‌شوند که یک سوسک بین کنتاکتورهای رله شماره ۷۰ گیر کرده است. از این رو می‌توان گفت اولین استفاده از باگ دقیقا در معنای اصلی آن بوده است.

 

 

درست است که منابع مختلف استفاده از کلمه باگ را به خانم هاپر و رویداد بالا نسبت می‌دهند؛ اما لازم است بدانید که در قبل از آن هم از باگ استفاده می‌شده است. در سال ۱۸۷۸ ادیسون در نامه ای خطاب به دوستش باگ را اشتباهاتی کوچک که خودشان را نشان میدهند و برای حل آن‌ها به ماه‌ها تلاش، سختی و مطالعه لازم است؛ معرفی کرده است. این نوع تعریف ادیسون از باگ نشان دهنده این است که باگ در زمان‌های قبل از ۱۸۷۸ نیز وجود داشته است و ادیسون صرفا این موضوع را نقل کرده است.

انواع باگ

حال که با مفهوم باگ نرم افزاری و تاریخچه مفصل آن آشنا شدیم، لازم است تا با انواع باگ نیز آشنا شویم. وجود باگ در یک نرم افزار به این معناست که کد نویسی نیز می‌تواند با نقص همراه باشد و همانطور که در ابتدای مقاله عنوان شد، تقریبا هر برنامه نویسی در طول سابقه حرفه ای برنامه نویسی خود با انواع باگ رو به رو شده است. این باگ‌ها انواع مختلفی دارند که در ذیل به آن‌ها خواهیم پرداخت:

باگ باگ نرم افزاری

سینتکسی

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

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

محاسباتی

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

منابع

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

کار تیمی

در بسیاری از پروژه‌های بزرگ، چند برنامه نویس به صورت همزمان مشغول کد نویسی هستند. در خلال این کار تیمی و در بعضی موارد مشکلاتی اعم از تفاوت در نام گذاری و یا مستندسازی برنامه نویسان ایجاد می‌شود. به این خطاها باگ کار تیمی گفته می‌شود.

تعامل

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

چند رشته‌ای

آخرین نوع باگ که در این مقاله بررسی خواهیم کرد، باگ چند رشته ای نام دارد. باگ چند رشته ای را به صورت زیر تعریف می‌کنند:
زمانی که اجرای thread‌ها در نرم‌افزارها دچار مشکل می‌شوند. مثلا جایی که وظیفه A تا زمانی که وظیفه B تمام نشده باشد، ادامه نخواهد یافت، اما در عین حال، وظیفه B نمی‌تواند ادامه یابد تا زمانی که کار A تمام شود.

 

باگ باگ نرم افزاری

وجود باگ در یک برنامه چه خطراتی را در پی خواهد داشت؟

حال که با باگ برنامه نویسی، تاریخچه باگ و انواع باگ آشنا شدیم، بد نیست تا نگاهی به بد ترین باگ‌های تاریخ بیاندازیم که خسارات جبران ناپذیری را موجب شده اند.

۱- در ۴ ژوئن ۱۹۹۶ موشک آریان ۵ موتورهای خود را روشن کرد و شروع به دور شدن از ساحل گویان فرانسه شد. بعد از ۳۷ ثانیه موشک با ۹۰ درجه در جهت نادرست چرخید و دو ثانیه بعد در ارتفاع ۴ کیلو متری از سطح زمین، تقویت کننده‌ها شکافته شده و از پایه اصلی جدا شدند. این موضوع باعث شد خودتخریبی موشک فعال شدن و ۳۷۰ میلیون دلار در آتشی عظیم از هیدروژن مایع نابود شد. خطایی که در این پروژه رخ داد، یک خطای عمل وند بود.

۲- مورد بعدی از خطاهای بزرگ که خسارات جبران ناپذیری را شکل داده اند، مربوط به شرکت سرمایه گذاری نایت است. در یکم آگوست ۲۰۱۲ بروزرسانی نرم افزاری را بر روی سرور‌های عملیاتی خود دیپلوی کردند. حدود ساعت ۸ صبح تعداد ۹۷ ایمیل هشدار برای کارکنان رسید که حاکی از وجود یک پیکربندی نادرست در برنامه بود. ساعت ۹ صبح بورس نیویورک باز شد و شرکت نایت دستورالعمل خرید و فروش دارایی‌های خود را اعلام کرد. ۴۵ دقیقه بعد ایراد نرم افزاری کار خود را کرد و سرور‌های شرکت نایت ۴ میلیون معامله ایجاد کردند که در آن‌ها ۴۶۰ میلیون دلار هزینه شد و شرکت در آستانه ورشکستگی رفت. در پی این اتفاق سهم‌های بورس نیویورک جهشی بیش از ۳۰۰ درصدی داشتند. در آخر کار این شرکت به علت نقض قوانینی مختلف از سمت سازمان بورس ۱۲ میلیون دلار جریمه شد.

برای کسب اطلاعات بیشتر در مورد این نوع خطاها و مشاهده موارد بیشتر به لینک زیر مراجعه کنید:

https://www.bugsnag.com/blog/bug-day-ariane-5-disaster

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *