تألیف: حمید وثیق زاده انصاری
منبع:راسخون
منبع:راسخون
انواع مختلفی از خطاهای برنامه نویسی وجود دارد که ممکن است در مرحله توسعه یک برنامه نرم افزاری بروز کند و هر برنامه نویس باید نسبت به آنها آگاه باشد. در این مقاله شرحی از معمولترین اشکالات برنامه نویسی را پیدا خواهید کرد که هر توسعه دهنده قطعاً با آنها رو به رو میشود .
میچ رتکلیف: "کامپیوتر به شما اجازه می دهد که نسبت به هر نوع اختراع دیگری در تاریخ بشریت، خطاهای سریعتری انجام دهید - به استثنای هفت تیر و می".
خطاهای برنامه نویسی که در زبان تخصصی محاسبات تحت عنوان "اشکالات" شناخته شده، برای هر توسعه دهندهی نرم افزار یک مصیبت است. چون ماشینها بیش از پیش در سیستمهای جا سازی شده یا کامپیوترهایی که عمل کرد آنها را کنترل میکنند، به صورت خودکار استفاده میشوند، هر خطای برنامهنویسی میتواند نتایج شدیدی داشته باشد. مواردی از سقوط سفینههای فضایی و هوا پیماها به دلیل اشکالات نرم افزاری در تجهیزات محاسباتی جاسازی شده، وجود دارد. یک شکاف در برنامه نویسی سیستم عامل میتواند امکان ورود هکرهایی را فراهم کند که میتوانند به طرز آسیب پذیری سوء استفاده نموده و امنیت کامپیوتر را در معرض خطر قرار دهند. بنا بر این همان طور که به طور روز افزون به کامپیوتر وابسته میشویم باید نسبت به خطاها نیز جدیتر باشیم.
انواع اساسی خطاهای برنامه نویسی
برنامه نویسی کامپیوتر حوزه گستردهای با صدها زبان حرفهای و میلیونها کار برد است. از طریق برنامه نویسی سیستم عامل اصلی، برنامه نویسی کار بردی، برنامه نویسی سیستمهای جا سازی، توسعه شبکه، دستور العمل علمی تلفن همراه، توسعه برنامههای نرم افزاری پیاده شدهی آن لاین برای محاسبات علمی، گسترهی این حوزه به سادگی وسعت مییابد. بنا بر این زمینه برای انواع مختلف خطاهای برنامهنویسی وجود دارد.انواع خطاهای برنامه نویسی
توصیفیخطای منطقی
شاید جدیترین نوع خطا باشد. هنگامی که یک برنامه نوشته شده به هر زبانی به درستی پردازش و اجرا شده و منجر به خروجی نا درست می شود، نقص در منطق برنامه نویسی نهفته است. این خطایی است که از نقص در الگوریتم پایه ناشی میشود.در چنین مواردی، منطقی است که کل برنامه نیز بر همین اساس ناقص است. این نوع خطاها نیاز به یک تغییر اساسی در نگرش شما دارد تا راه حل را پیدا کنید. باید در سطح الگوریتمی شروع به کاوش کنید تا علت چنین خطایی را بیابید.
خطای نحوی
هر زبان کامپیوتر مانند C، جاوا، پرل و پایتون، دستور زبان خاصی دارد که برنامه باید بر اساس آن نوشته شود. وقتی یک برنامه نویس از ویژگیهای "گرامری" یک زبان برنامه نویسی پیروی نمیکند، منجر به خطاهای نحوی میشود. این نوع خطاها را میتوان به راحتی در مرحله پردازش بر طرف کرد.خطای پردازش
پردازش مرحلهای است که یک برنامه نوشته شده به یک زبان سطح بالا، به زبان ماشین قابل خواندن تبدیل میشود. بسیاری از انواع خطاها از جمله خطاهای نحوی، ممکن است در این مرحله اتفاق بیفتد. گاهی نحو یک برنامه منبع ممکن است بدون نقص باشد اما باز هم یک خطای پردازش اتفاق بیفتد. این پیشامد ممکن است به خاطر یک مشکل در خود پردازش باشد. این خطاها نیز در مرحله پردازش قابل اصلاح است.خطای زمان اجرا
کد برنامه با موفقیت پردازش و یک فایل قابل اجرا ایجاد شده است. شما نفسی به نشانه آسودگی میکشید و برنامه را اجرا میکنید تا طرز کارش را تست کرده و خطا را پیدا کنید. این یک "خطای زمان اجرا" است که ممکن است ناشی از نقص در بخش توسعه دهنده برای پیش بینی موقعیتهای پیاده سازی برنامه واقعی باشد. این خطا را میتوان با باز گشت به مرحله برنامه نویسی اصلاح کرد.خطای محاسباتی
بسیاری از برنامهها از متغیرهای عددی استفاده میکنند و الگوریتم ممکن است شامل چندین محاسبه ریاضی باشد. خطاهای محاسباتی زمانی بروز میکنند که کامپیوتر نمیتواند مشکلاتی مانند "تقسیم بر صفر" که منجربه نتیجه نا متناهی میشود را مدیریت کند. این نیز یک خطای منطقی است که تنها با تغییر الگوریتم میتواند تصحیح شود.خطاهای منبع
وقتی مقدار یک متغیر بیش از حد اکثر مجاز آن است، ممکن است منجربه خطای منبع شود. بافر سر ریز، استفاده از متغیر مقداردهی نشده، نقصهای دست رسی و سر ریزهای پشتهای، نمونههایی از برخی خطاهای رایج است.خطای واسط
این خطاها ممکن است به دلیل عدم تطابق یک برنامه نرم افزاری با رابط سخت افزاری یا رابط برنامه نویسی کار بردی به وجود میآید. در کار بردهای شبکه، خطای واسط ممکن است ناشی از استفاده نا درست پروتکل شبکه باشد.مرحله تست و اشکال زدایی، یک بخش ضروری از چرخهی توسعه نرم افزار است که میتواند قبل از استقرار کامل برنامه نرم افزار کمک کند تا مانع رشد این خطاها در مرحله بروز اولیهشان شود. از بسیاری از خطاها میتوان با پیش برنامه ریزی و مراقبت در مرحله برنامه نویسی، اجتناب کرد. از طریق تمرین و ایجاد نظم و پس از مراحل سخت اشکال زدایی، میتوان بسیاری از خطاها را در مرحله توسعه نرم افزار اصلاح کرد. اشتباه کردن بخشی از یاد گیری است و به طور کامل هم قابل اجتناب نیست، هر چند پیشنهاد میکنیم که بر اشتباهات جدید تمرکز کرده و از تکرار آن چه قبلاً انجام دادهاید بپرهیزید!