10 باگ معروف در دنیای علوم کامپیوتر

دسته‌بندی‌(ها): توسعه
تاریخ انتشار: 1399/07/27

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

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

1- شکست (Ariane 5 Rocket (1996

انفجار Ariane 5 یکی از پرهزینه‌ترین اشتباهات نرم‌افزاری تاریخ است. این راکت مشهور اروپایی برای پرتاب ماهواره مورد استفاده قرار می‌گرفته و با هزینه‌ی 8 میلیاردی ساخته شده بود. این راکت تنها پس از 40 ثانیه از پرتابش، منفجر شد. دلیل این اتفاق نیز زیر سر integer overflow (سرریز شدن عدد صحیح) بوده است که باگی شایع در دنیای برنامه نویسی است. این مورد به ما نشان می دهد که توجه به میزان حافظه‌ی مورد نیاز یک متغییر، در زمان تعریف (declare) آن، خیلی مهم است. در واقع اشتباه به وجود آمده در برنامه‌ی این راکت نیز، دقیقا مربوط به همین نکته بوده است. کد این برنامه با استفاده از Ada نوشته شده بود. بعد از تحقیقات تیم نیز مشخص شد که یک خط از کد، سعی در تبدیل کردن یک عدد 64 بیتی به یک عدد 16 بیتی دارد. هزینه‌ی این اشتباه به ظاهر کوچک، از دست دادن 370 میلیون دلار بوده.

2- (1999) باگ Y2K

طی دهه‌ی 1960، مهندسین از رویکرد استفاده از کدهای دو رقمی برای نشان دادن عدد سال، پیروی می‌کردند؛ چرا که بیش‌تر آن‌ها تصور می‌کردند که استفاده از عدد 19در ابتدای متغییرهای مربوط به سال، کاری بیهوده است که باعث اتلاف حافظه می‌شود. برای مثال برای نشان دادن سال 1970 از 70 استفاده می‌کردند. تمام کدهایی که به این نحو نوشته شده بودند، تا روز 31 دسامبر 1999بدون هیچ ایرادی کار‌ می‌کردند. اما بعد از آخرین روز قرن 19میلادی و در روز یک ژانویه‌ی سال 2000،‌ تمام این برنامه‌ها به مشکل خوردند و این مشکل نیز به دلیل استفاده از دو رقم آخر سال بوده. در واقع بسیاری از کامپیوترها، روز 1 ژانویه‌ی 2000 را به عنوان روز 1 ژانویه‌ی 1900 نمایش دادند. این باگ به نام Y2K یا باگ هزاره مشهور شد. (Y2k نیز معادل Year 2 Kilo به معنای سال دو هزار است) این باگ نیز مشکلات فراوان کوچک و بزرگی به‌‌وجود آورد؛ از تعجب کاربران کامپیوتر از تاریخ کامپوترشان تا مشکلات بزرگ‌تر مثل بروز اشکال در محاسبات نرخ سود بانکی که پایه‌ی روزشمار داشته‌اند و یا مشکلاتی در مراکز تکنولوژی مانند نیروگاه‌ها و حمل و نقل. به دنبال بروز این باگ، میلیاردها دلار برای آپگرید سیستم کامپیوترها در سرتاسر دنیا خرج شد.

3 - (1991) شکست موشک Patriot

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

4- (1990) AT&T

AT&T قصد آپگرید نرم‌افزاری پیچیده‌تر از نرم‌افزاری کنونی خود را به امید بهبود تماس ما بین فواصل دور، داشت؛ ولی یک اشتباه نتیجه‌ی معکوس داد و شبکه‌ی‌ آن‌ها از دسترس خارج شد. در پی این اتفاق، مشترکان این کمپانی طی 9 ساعت قادر به برقراری تماس بین فواصل دور نبودند.75 میلیون تماس تلفنی از دست رفت و 200 هزار رزرو هوایپمایی دچار مشکل شد. باگی که در این مورد رخ داد، race condition در کد سوئیچ کردن بین مراکز بود. این باگ درون یک شرط switch که درون یک حلقه بود رخ داد. AT&T به دلیل این مشکل بزرگ، 60 میلیون دلار از دست داد.

5- Gangnam Style یوتیوب را شکست داد

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

6- (1962) باگ نرم‌افزار Mariner 1

از فضاپیمای Mariner 1 به عنوان یکی از گران‌ترین شکست‌های تاریخ یاد می‌شود. این فضاپیما برای پرواز به سیاره‌ی زهره (ونوس) طراحی شده بود ولی پیش از پرواز این فضاپیما، آنتن راهنمای روی صفحه‌ی آن دچار مشکل شد و این فضاپیما از مسیر برنامه‌ریزی شده برای پرواز خود، منحرف شد. دلیل بروز این مشکل نیز missing overbar بوده است. این اتفاق تنها ناشی از حذف یک خط ربط بوده و در پی آن، فضاپیما سیگنال راهنمای اشتباهی را دریافت کرد. خسارت بر جای مانده از این اشتباه، 18 میلیون دلار در سال 1962 بوده. Arthur C Clarke، نویسنده‌ی داستان‌ها علمی تخیلی، Mariner 1 را اینگونه توصیف کرده: نابود شده توسط گران‌ترین خط ربط تاریخ.

7- (1988) orbiter اقلیمی مریخ NASA

به دلیل وجود واحدهای متفاوت برای اندازه‌گیری آب و هوای مریخ، این orbiter بعد از سفری 286 روزه از زمین، نابود شد. این پروژه با هزینه‌ی 125 میلیون دلاری برای مطالعه‌ی سیاره‌ي مریخ و اقلیم آن، طراحی شده بود. طی این عملیات، پس از قطع شدن ارتباط، این orbiter با زاویه‌ای نامناسب وارد جو مریخ شد. در صورتی که تنها باید وارد مدار این سیاره می‌شد. دلیل این اتفاق نیز نرم‌افزار کنترل‌کننده‌ی orbiter بوده که از واحد اندازه‌گیری امپراطوری (بریتانیایی) به جای استفاده از واحدهای متریک استاندارد (نیوتونی) استفاده می‌کرده و این دو واحد با یک‌دیگر تداخل کردند.

8- (1993) باگ Pentium FDIV

کامپیوترهای زیادی از تکنولوژی Intel استفاده می‌کنند و این شرکت همیشه به عنوان سازنده‌ی خوب پردازنده‌ها به شمار می‌رفته است؛ اما یک باگ در پردازنده‌ی Pentium x86 توسط استاد ریاضی، Thomas Nicly، در سال 1993 پیدا شد. این اشکال ریاضیاتی تقسیم اعداد اشاری در یک محدوده‌ی خاص بوده. برای مثال تقسیم 4195835.0/3145727.0 نتیجه‌ی 1.33374را به همراه داشته. در صورتی که باید نتیجه‌ی 1.33382 را به‌دست می‌آورده. در واقع اشتباهی 0.006% در به‌دست آوردن جواب درست. البته تمام پرازنده‌ها این مشکل را نداشتند و 5 میلیون مورد از آن‌ها که این مشکل را داشتند، شناخته شدند. Intel نیز قبول کرد که این چیپ‌ها را درصورتی که مشتری بتواند وجود این ایراد درپردازنده‌اش را ثابت کند، جایگزین کند. بعدتر نیز این کمپانی بزرگ، تمامی چیپ‌های افراد شکایت کننده، را تعویض کرد و این اتفاق ضرر 475 میلیون دلاری به آن‌ها وارد کرد.

9- (2007) ارور Paypal

بزرگ‌ترین پردازشگر پرداخت‌ها در دنیا نیز با خطای برنامه نویسی مواجه شده است. Paypal تصادفا آقای Chris Teynolds را تبدیل به پولدارترین فرد دنیا کرد. آن هم با دارایی 92 quadrillion دلار. Paypal به اشتباه این مقدار را به اعتبارات این آقا اختصاص داده بود که با توجه به آن، دارایی‌های این فرد چندین هزار برابر ثروت حاصل از تولید ناخالص کل سیاره‌ی زمین بود. این ارور عجیب به سرعت شناسایی شد و اعتبار Paypall این فرد نیز بلافاصله به صفر که مقدار درست آن بود، تبدیل شد.

10 - باگ ماشین‌حساب ویندوز

ماشین حساب ویندوز نیز یک باگ دارد. این باگ تقریبا در تمامی ویندوزهای XP, Vista, 8 قابل لمس است و همین الان می‌توانید آن‌ را امتحان کنید. ماشین حساب ویندوز را باز کنید، سپس عدد 4 را نوشته و ریشه‌ی آن را حساب کنید. عدد دو به شما نشان داده می‌شود. حال آن را منهای 2 کنید؛ به جای عدد صفر عدد دیگری را در خروجی ماشین حساب خواهید دید. این عدد بسته به ورژن‌های مختلف ویندوز، متفاوت است. نهایتا نیز مایکروسافت این باگ را تشخیص داد و در ویندوز 10، آن را اصلاح کرد.

 

تازه‌ترین‌های بلاگ

مشاهده بیشتر