5 اشتباه بزرگ برنامه نویسی در طول تاریخ

5 اشتباه بزرگ برنامه نویسی در طول تاریخ

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



1- خطای Y2K

خطای سال 2000 مشهور به Y2K یا همان خطای هزاره، یک اشتباه برنامه نویسی بود که پیش بینی می شد که موجب رستاخیز کامپیوترها شود. در دهه 90 تمام برنامه های کامپیوتری به جای تخصیص 4 رقم برای "سال"، تنها دو رقم اختصاص داده بودند و رقم سال را به صورت مختصر می نوشتند. به جای 1990، می نوشتند 90، به جای 1991 می نوشتند 91. و با همین روش اطلاعات ارزشمندی در کامپیوترها ذخیره شده بود. اما کامپیوترها قادر به تشخیص "00" به جای سال 2000 نبودند و اغلب با 1900 اشتباه می کردند. چیزی که کار را سخت تر می کرد این بود که 2000 سال کبیسه بود. برخی نرم افزارها هم این روز اضافه را در نظر نگرفته بودند.
خیلی ها ترسیده بودند و فکر می کردند خطای Y2K کامپیوترها و قطعات الکترونیکی را در سراسر جهان از کار می اندازد. آقای Moe Long می گوید: به خاطر دارم که اولین پخش کننده DVD من، یک برچسب با عنوان "پذیرای خطای Y2K" داشت. درحالی که سال 2000 پر از اتفاق های ناخواسته از سمت نرم افزاربود، به روز رسانی سخت افزاری
کامپیوترها و اپلیکیشن ها نیز بسیار هزینه بر شد. کامپیوترها از بین نرفتند و زندگی به حالت عادی خود ادامه پیدا کرد. اما اگر آن همه وقت و سرمایه بابت آن خطا خرج نمی شد، مشکل به این سادگی حل نمی شد.
چرا این خطا به یکی از بدترین خطاهای برنامه نویسی تبدیل شد؟ زیرا این خطا به شدت هزینه بر شد چیزی حدود 300 میلیارد دلار. علاوه بر این تمامی منابع جهت بهبود، در این راستا مورد استفاده قرار گرفتند.



2- خطای Therac-25

درحالی که برخی خطاهای برنامه نویسی ممکن است منجر به زخمی کردن یا کشتن بازیکنان بازی شود، گاهی کدنوشتن های اشتباه می تواند به مرگ واقعی انسان ها بدل شود. فاجعه Therac-25 با یک دستگاه پرتودرمانی Therac-25 شکل گرفت که توسط آژانس انرژی اتمی کانادا ساخته شده بود. مقدارهای ناگهانی اشعه X که از این دستگاه ساطع می شد، حداقل باعث مرگ 6 تن شد. تحقیقات نشان داد که نرم افزار ضعیف و سیستم های توسعه نیافته باعث تابش بیش از اندازه اشعه X به برخی بیماران شد.
این خطا باعث شد تا تمامی کدهای نوشته شده در ابتدا تست شوند. شاید کشته شدن انسان ها توسط ماشین، یک خطای علمی محسوب شود اما خطای Therac-25 غیر از این را ثابت کرد. این دقیقا خطای یک انسان بود که با کدی اشتباه، چنین حادثه ای را رقم زد. متخصصین این راه مانند Nancy Leveson فهمیدند که برنامه نویسی نوپا این خطا را مرتکب شده است و این نرم افزار را میتنی بر کد دستگاه های قبلی Therac-6 و Therac-20 نوشته است.
چرا این خطا به یکی از بدترین خطاهای برنامه نویسی تبدیل شد؟ زمانی که از دست رفتن جان انسان ها در میان باشد، خطاهای کد نویسی تبدیل به یک فاجعه در دنیای برنامه نویسی محسوب می شود.



3- خطای ازکار افتادن شبکه AT&T





صدای من را می شنوید؟ نه. در 15 ژانویه سال 1990، بالغ بر 50 درصد از شبکه AT&T خراب شد. در طول 9 ساعت، 75 میلیون تماس بی پاسخ ماند. درحالی که همه هکر ها را مسبب این داستان می دانستند اما مقصر اصلی چیزی نبود جز: به روز رسانی نرم افزار. یک خط کد اشتباه چندین ساعت شبکه AT&T را از کار انداخت. یکی از سوئیچ ها خود را reset کرد اما خطا اینگونه بود که سوئیچ دوم پیغام دیگری ارسال می کرد و این خطا مانند دومینو در سرتاسر شبکه AT&T رخ داد. نهایتا شبکه AT&T راه حلی با کاهش بار شبکه ارائه کرد. تمامی سوئیچ ها خود را reset کردند.
علی رغم تست های سنگینی که انجام شد، یک خط کد یک شبکه را از کار انداخت. این برنامه به زبان C نوشته شده بود. بر اساس اشتباه برنامه نویس، شرط خروج از حلقه if در سوئیچ هیچ وقت محقق نمی شد. وقفه ای که در شبکه AT&T به ظاهر مسئله ای کوچک به نظر می آید. انبوهی از تماس های از دست رفته که اگر با امروز مقایسه کنیم، می توانیم بگوییم انبوهی از SMS و نوتیفیکیشن های Instagram، Twitter و Snapchat را شاهد بودیم. قطع شدن ارتباطات صدمات مالی بزرگی وارد کرد. برخی شرکت ها مثل American Airlines بسیار از نظر مالی ضرر کردند. این شرکت تقریبا دو سوم تماس های خود را به خاطر این اشتباه از دست داد. این خطا باعث شد تا بیش از پیش به اهمیت تست نرم افزار پی ببریم. همچنین این وقفه ای که در شبکه AT&T رخ داد باعث شد تا رابطه نزدیک تکنولوژی و اقتصاد را بفهمیم.
چرا این خطا به یکی از بدترین خطاهای برنامه نویسی تبدیل شد؟ زیرا نه تنها شبکه AT&T را مختل کرد بلکه این 7 ساعت وقفه کلی ضرر مالی را به شرکت هایی که تماس های تلفنی برای شان مهم است، وارد ساخت.



4- خطای موجود در پرواز کاوشگر Mariner1

این کاوشگر جدید از CPU موجود در PlayStation1 استفاده می کرد (کاوشگر Mariner1 سال 1962 پرتاب شد و تاریخ عرضه PlayStation1 سال 1994 بود). معاون بخش مهندسی و راه حل های شرکت NVIDIA آقای Hamilton در مورد استفاده ناسا از سخت افزار تولید شده در این شرکت، یادداشتی منتشر کرد.
این کاوشگر که قرار بود برای سفری اکتشافی عازم مریخ شود، کمی پس از پرواز از مسیر خود منحرف شد. Mariner1 بعد از کمی حرکت منفجر شد.
اشتباه برنامه نویسان Mariner1 منجر به خطای Mariner1 شد. اگرچه گزارشات مختلف است اما طبق مستندات بایگانی شده ناسا، مشخص شد که غفلت در قراردادن یک خط تیره در برنامه ویرایش شده باعث شد تا سیگنال های راهنمایی غلط به کاوشگر برسد. این خط تیره فراموش شده به گران ترین خط تیره تاریخ بدل شد.
چرا این خطا به یکی از بدترین خطاهای برنامه نویسی تبدیل شد؟ خطای احمقانه Mariner1 را می توان به سادگی کنار گذاشت. برنامه نویسان عزیز: لطفا برنامه خود را تست کنید!



5- روز زندگی مردگان: خطای بیمارستان St. Mary’s Mercy





در سال 2003 یک اشتباه نرم افزاری رخ داد و 8500 نفر انسان که زنده بودند را مرده اعلام کرد. بیمارستان St. Mary’s Mercy واقع در میشیگان در گزارشی اشتباه اعلام کرد که اکثر بیماران با اشتباهی که در سیستم مدیریتی بیماران رخ داده است، فوت کرده اند. این فاجعه ای که با کدنویسی اشتباه رخ داد در مقایسه با خطای Therac-25 قابل تحمل تر است، زیرا هیچکس واقعا نمرده بود. خواندن خبر مرگ تان وقتی که هنوز زنده اید قطعا مبهوت تان می کند.
خبراشتباه مرگ بیماران تنها باعث تعجب آنها نشد. این خبر به سرعت به شرکت های بیمه و مراکز امنیت اجتماعی نیز مخابره شد. زیرا این سازمان ها مریض های واجد شرایط را بیمه می کردند و پس از اعلام این خبر نام این افراد از لیست بیمه شدگان خارج شد که موجب دردسرهای زیادی می شد. بیمارستان مذکور تمام بیماران، نهاد های دولتی و سازمان های خدماتی بیمه را از وقوع این خطا آگاه کرد. در نهایت خطای برنامه نویسی توجه زیادی را به خود جذب نکرد و خیلی مشخص نیست که این خطا برطرف شد، اما دیگر خبری شبیه به این خطا در جایی رخ نداد. بیمارستان St. Mary’s Mercy سیستم مدیریتی خود را بلافاصله تغییر داد.
چرا این خطا به یکی از بدترین خطاهای برنامه نویسی تبدیل شد؟ خوشبختانه هیچ کس واقعا با این خطا جان خود را از دست نداد، اما حذف پوشش بیمه برای 8500 نفر آسیب های جدی به صنعت بیمه وارد کرد.



در کدنویسی ضعیف هستید؟ پس منتظر اشتباهات برنامه نویسی باشید!

اشتباهات برنامه نویسی از زمان شروع کدنویسی وجود داشته است. با استفاده روزافزون از کدنویسی در زمینه های مختلف، روند بروز اشتباهات برنامه نویسی ادامه دارد، هرچند که در حال کاهش است.
مثال های زیادی از اشتباهات برنامه نویسی وجود دارد. برخی از آنها ممکن است بی ضرر باشند. برخی دیگر ممکن است به مرگ منجر شوند چه مثل حالت واقعی آن یعنی خطای Therac-25 یا حالت فرضی آن مثل خطای St. Mary’s. نگذارید که این مثال های معروف شما را از ادامه برنامه نویسی بازدارد. صرف زمان و انرژی مناسب بر روی فرآیندهای کنترلی و تست از بروز این خطاها جلوگیری می کند.


تاریخ درج: 1395/12/16
دانلود مقاله