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

🔻باگ چیست دیباگ کردن BUG Debugging نقص نرم افزاری

🔻باگ یا Bug چیست ؟


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

🔻تاریخچه Bug
گفته می شود که این اصطلاح اولین بار توسط خانم Grace Murray Hopper به کار گرفته شده است. خانم Grace Hopper به عنوان یکی از اولین برنامه نویسان زن شناخته می شود. زمانی که Grace Hopper در دانشگاه هاروارد در حال اشکال زدایی دیباگ کردن یا debugging کامپیوتر Mark II بوده است، از این لغت به معنای خطا و اشکال استفاده کرده است. زیرا زمانی که خانم Hopper به همراه تعدادی از متخصصین در حال بررسی کامپیوتر Mark II بوده اند، متوجه شدند که اختلال در عملکرد این کامپیوتر به دلیل وجود یک سوسک در آن ایجاد شده است. بنابراین در آنجا از اصطلاح Bug به معنای نقص نرم افزاری استفاده کردند.


more  دیباگ چیست؟🔻


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

🔻باگ ها می توانند انواع مختلفی داشته باشند از جمله :

🔻سینتکسی (Syntax) : زمانی که قوائد مربوط به نوشتار زبان برنامه نویسی رعایت نشوندبه وجود می آید. مثلا از عملگر، حروف و یا کاراکتر اشتباهی در کدها استفاده شود.
منطقی (Logic) : منطق نرم افزار اشتباه پیاده سازی شده باشد، برای مثال اجرای نرم افزار در یک چرخه بی نهایت قرار گیرد.

🔻محاسباتی (Arithmetic) : محاسبات ریاضی در نرم افزار با خطا رو به رو شوند، مثلا عددی تقسیم بر صفر شود و یا نتیجه نهایی مورد انتظار دارای خطای محاسباتی باشد.

🔻منابع (Resource) : زمانی که در به کارگیری منابع نرم افزاری، نرم افزار دچار خطا شود. مثلا اشاره به متغیری ناموجود یا تعریف نشده در نرم افزار.

🔻کار تیمی (Teamworking) : ایجاد اختلاف و خطا در کدنویسی برنامه نویسان به دلیل کدنویسی تیمی، مثلا تفاوت در نام گذاری و مستند سازی نرم افزار.

🔻تعامل (Interfacing) : نرم افزار در تعامل با بخش های دیگر نرم افزاری و سخت افزاری دچار خطا شود مانند استفاده از Api خراب.

🔻چند رشته ای (Multi-threading) : زمانی که اجرای thread ها در نرم افزارها دچار مشکل می شوند. مثلا جایی که وظیفه A تا زمانی که وظیفه B تمام نشده باشد، ادامه نخواهد یافت، اما در عین حال، وظیفه B نمی تواند ادامه یابد تا زمانی که کار A تمام شود.

🔻نتیجه گیری


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