فهرستی از داستانهای خواندنی تاریخ نرمافزار
خلاصهٔ کاملتر
آل سوایگارت، نویسندهٔ کتاب Invent with Python، تو یه پست کوتاه میگه همیشه داستانهای تاریخ کامپیوتر رو شنیده و این بار از یه LLM خواسته فهرستی ازشون جمع کنه. پرامپتش هم تقریباً این بوده که «تونی هوآر null رو اشتباه میلیارد دلاریش میدونه، چه داستانهای جالب دیگهای تو برنامهنویسی هست؟». خودش میگه لینکها رو دونهدونه بررسی و اصلاح کرده تا هیچکدوم به سایتهای محتوای بیکیفیت وصل نشن.
بخش اول فهرست پر از فاجعههای کلاسیکه: پرواز ۵۰۱ آریان ۵ که سرریز تبدیل عدد صحیح تو کد بازاستفادهشده منفجرش کرد، Mars Climate Orbiter که سر ناهماهنگی واحد متریک و امپریال گم شد، Therac-25 که race condition توش باعث دوز کشندهٔ پرتو شد، و Knight Capital که یه دیپلوی خراب تو ۴۵ دقیقه حدود ۴۴۰ میلیون دلار سوزوند.
نمونههای نزدیکتر هم هست: باگ FDIV پنتیوم که به اولین فراخوان کامل یه تراشه ختم شد و ۴۷۵ میلیون دلار خرج برداشت، Heartbleed که نبودن یه بررسی مرز، حافظهٔ سرور رو لو داد، اختلال ۲۰۱۹ کلادفلر که از backtracking یه regex شروع شد، حذف پکیج ۱۱ خطی left-pad که بخش بزرگی از اکوسیستم npm رو خوابوند، و Log4Shell که یه قابلیت راحت لاگگیری رو به یه آسیبپذیری اجرای کد از راه دور تبدیل کرد.
نیمهٔ دوم بیشتر سراغ ایدهها میره تا فاجعهها: pipeهای یونیکس و اصل «همهچیز یه فایله»، سبک «let it crash» ارلنگ که سیستم رو حول شکست طراحی میکنه، طراحی محتوا-محور گیت با هش، و Raft که عمداً ساخته شد تا برخلاف Paxos قابلفهم باشه بدون اینکه ضعیفتر بشه. قانونهایی مثل هایرم، کانوی، گال و پوستل هم توش هستن. نویسنده اضافه میکنه که خودش با حرف قانون پوستل موافق نیست.
نویسنده دو منبع قدیمی رو هم معرفی میکنه: وبلاگ The Old New Thing از ریموند چن و Joel on Software از جوئل اسپالسکی، که هر دو پر از این جور داستانها هستن. خودش هم اعتراف میکنه فهرست یهکم به سمت مفهومها چرخیده تا داستان، و اولش بیش از حد رو خرابیهای نرمافزاری تمرکز داره.
نکات کلیدی:
- فهرست با کمک یه LLM ساخته شده ولی لینکها دستی بازبینی شدن و بیشترشون به ویکیپدیا میرن
- Knight Capital تو ۴۵ دقیقه حدود ۴۴۰ میلیون دلار از دست داد
- باگ FDIV پنتیوم ۴۷۵ میلیون دلار هزینه برداشت و اولین فراخوان کامل یه تراشه بود
- خطای انباشتهٔ ممیز شناور تو موشک پاتریوت به ۲۸ کشته ربط داده شده
- left-pad فقط ۱۱ خط کد بود
- تابع gets() تو C اونقدر ناامن بود که از استاندارد زبان حذفش کردن
- Raft صریحاً برای قابلفهم بودن طراحی شد، در برابر Paxos که به سختی خوندن معروفه




