پرتکرار ترین خطاهای برنامه نویسی

Most Common Types of Erorrs in programming
Most Common Types of Erorrs in programming


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


1 - خطا های قواعد نوشتاری ( Syntax Errors )

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

print('Hello World!');

اگر برای انجام این دستور ، تابع قوانین زبان برنامه نویسی خود نباشیم ، با یک ارور مواجه خواهیم شد به نام Syntax Error یا Parse Error که همان خطای قواعد نوشتاری میباشد.

به طور مثال اینگونه بنویسیم :

print('Hello World!') # semicolon is missing
print('Hello World!);  # single quotation isn't currect 
print('Hello World!&quot); 
pri(&quotHello World);
and . . . .

هنگامی که ما با چنین اروری مواجه میشویم ، کل برنامه متوقف میشود تا زمانی که مشکل برطرف شود.

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

2 - خطای منطقی (Logic Errors OR Bugs)

خطای منطقی به خطایی میگویند که همه چیز از لحاظ نوشتاری صحیح میباشد ولی الگوریتم پیاده سازی نرم افزار مشکل دارد ، به طور مثال :

شما نرم افزاری را دولوپ کرده اید ( توسعه داده اید) که قرار است 2 عدد را از کاربر گرفته و آنها را جمع کند :

کاربر دو عدد 2 و 3 را به برنامه پاس میدهد ، به جای اینکه برنامه عدد 5 را بازگرداند ، عدد 6 را باز میگرداند ، هیچ خطایی وجود ندارد و برنامه صحیح کار کرده است ، ولی جواب منطقی نمیباشد زیرا حاصل ضرب اعداد را محاسبه کرده است در صورتی که ما انتظار حاصل جمع اعداد را داشتیم ، این یک مثال خیلی ساده بود از خطا های منطقی.
Bug : قطعا تا الان کلمه ی باگ به گوشتون خورده ، باگ به همین خطا های منطقی یا Logic Error ها میگویند ، که به اشتباه خیلی از کسانی که تازه وارد دنیای برنامه نویسی میشوند به تمام خطا ها باگ میگویند.

* در سال 1999 میلادی ، ناسا ، به دلیل یک باگه محاسباتی ( Logic Error || خطای منطقی ) یک فضا پیمارا از دست داد.


3 - خطای کامپایل (Compilation Errors OR Compile Time Erorrs)

برخی از زبان های برنامه نویسی کامپایلری هستند ( توی یه مقاله جدا تفاوت بین زبان های کامپایلری و مفسری رو توضیح میدم) یعنی توسط یک نرم افزار به نام کامپایلر کد های سطح بالایی ( کد سطح بالا به کدی میگویند که به زبان انسان (انگلیسی) نزدیک است) که ما نوشتیم را به کد سطح پایین ( کدی که به زبان ماشین (Binary Code ) نزدیک باشد) تبدیل میکنند تا کامپیوتر بتواند آنهارا متوجه شود و به دستورات ما عمل کند.
این نوع خطا هنگام انجام فرایند کامپایل اتفاق میوفتد برای مثال ، زمانی که ما به یک Syntax Error برخورد میکنیم ، همزمان Compile Time Error نیز اتفاق میوفتد. (برای درک بیشتر این موضوع به مثال زیر توجه کنید)

زمانی که ما کد زیر را کامپایل میکنیم :

print('Hello World!'; 

کامپایلر به ما میگوید که این دستور برایش ناشناخته است و نمیتواند آن را به زبان ماشین تبدیل کند زیرا انتظار دارد که پرانتز هارا ببندید.


4 - خطای محاسباتی (Arithmetic Errors)

این خطا یکی از زیر مجموعه های خطا های منطقی (Logic Errors ) یا باگ ها است که مخصوص محاسبات میباشد.

تقریبا میشه گفت معروف ترین Arithmetic Error خطای Division by Zero میباشد ، این خطا هنگامی رخ میدهد که ما یک عدد را تقسیم بر صفر کنیم ، همانطور که میدانید ، تقسیم بر صفر بینهایت است و ما انقدر حافظه نداریم که آن را ذخیره کنیم ، به همین دلیل با خطای Division by zero مواجه میشویم.

در برخی از زبان های برنامه نویسی ثابتی (Constant) وجود دارد برای نمایش این مقدار به نام infinity.


5 - خطای منبع (Resource Errors)


زمانی که برنامه شما اجرا میشود ، کامپیوتر شما مقداره مشخص و معینی ، فضا به این برنامه اختصاص میدهد و اگر برنامه از این مقدار تجاوز کند با Resource Errors مواجه میشویم.

اگر بخواهم مثالی از این نوع خطا برای شما بیاورم میتوانم به یک حلقه بینهایت (infinity loop) اشاره کنم :
(حلقه بینهایت به حلقه ای میگویند که همیشه اجرا شود شرط حلقه همیشه برقرار باشد.)

while(true){
          print(&quotMasoud Harooni&quot);
}

این حلقه هیچ گاه پایان نمی یابد به همین دلیل ، مقدار وحشتناکی از حافظه مارا اشغال میکند و با یک Resource error مواجه میشویم.


6 - Interface Errors

تصور کنید که یک API دارید که زمانی که میخواهید از آن API استفاده کنید ، باید 3 تا آرگومان به آن پاس بدهید ولی تعداد آرگومان ها یا کمتر است یا بیشتر در این لحظه شما با Interface Errors مواجه خوهید شد.





امیدوارم این مقاله براتون مفید بوده باشه ، ممنون میشم مشکلات و نواقصم را برام کامنت کنید تا در کنار هم پیشرفت کنیم?‍♂️?❤
ایمیل : اگر چیزی رو میخواستید مطرح کنید در رابطه با مقاله از این ایمیل میتونیم با هم در ارتباط باشیم.?

به امید موفقیت تک تکتون?