لا شك ان عدداً من الناس حول العالم شعر بالخجل صباح الاول من كانون الثاني يناير 2000 خاصة في الولاياتالمتحدة عندما باع الكثيرون منازلهم في المدن الكبرى وانتقلوا الى البراري. إنهم السبب في زيادة بيع الاسلحة في اميركا بنسبة 40 في المئة في الاشهر الستة الاخيرة من السنة، وهم الذين اشتروا كميات كبيرة من الطعام والماء والمحروقات وخبؤوها في الصحراء معتقدين ان الاول من كانون الثاني 2000 يوم نهاية الحضارة الانسانية وان ما عرف بخطأ العام 2000 Y2K bug سيتسبب في ازمة طعام ومحروقات تؤدي الى اعمال شغب على صعيد عالمي. لكن هذا الشعور بالخوف لم يقتصر على هؤلاء الناس الذين يطلقون على انفسهم اسم البقائيين survivalists بل وصل الى خبراء خطأ العام 2000 الذين توقع معظمهم، في تحقيق جرى في ربيع 1999، ازمات اقتصادية ضخمة واعمال شغب واسعة واحكام عرفية وظهور مجاعة كبيرة وانهيار الحكومة الاميركية وانهيار اسعار الاسهم. ولم يتوقع الا 4 في المئة منهم تأثيراً محلياً وخفيفاً للخطأ. هذا فضلاً عن المبرمجين ومستشاري الكومبيوتر الذين اكدوا ان اول السنة الجديدة سيكون يوم القيامة. لكن اليوم، لا احد يمكنه الجزم بأن هؤلاء الخبراء كانوا على حق ام لا، وهل المبالغ الهائلة التي صرفت على تصحيح الخطأ كانت في محلها ام ذهبت هباءً. وفي كل الاحوال، ان الحديث عن ذلك غير نافع خاصة بعد مرور التاسع والعشرين من شباط فبراير من دون مشاكل تذكر في اجهزة الكومبيوتر والبرامج. فمن المعروف ان أجهزة الكومبيوتر لا تتعامل احياناً بسلامة مع السنوات الكبيسة، وشكل يوم 29 شباط الماضي آخر امتحان لخطأ العام 2000 لأنه استثناء مضاعف. فالاستثناء الاول هو السنة الكبيسة، اما الاستثناء الثاني فهو ان سنة 2000 كبيسة علماً ان السنوات التي تنتهي بصفرين لا تكون عادة كبيسة اعتبرت سنة 2000 كبيسة لأنه يمكن قسمتها على 400. ومع ان خطأ العام 2000 لم يتسبب الا بحوادث صغيرة مقارنة بما كان متوقعاً انظر الاطار، لا يعني ذلك ان اخطاء كبيرة لم تحدث في الماضي او انها لن تحدث في المستقبل. وهناك مجال واسع لأجهزة الكومبيوتر لكي تخطئ ولكي تخطئ على مستوى كارثي. ومن الصعب العثور على تقنيات اخرى يمكنها التسبب بمشاكل بحجم التي تتسبب بها اجهزة الكومبيوتر. وبمناسبة مرور خطأ العام 2000 على خير، سنقدم هنا عرضاً لأشهر المشاكل التي سجلها تاريخ الكومبيوتر. ومن الجدير الذكر ان معظم هذه المشاكل كان سببها اخطاء برمجية. حشرات الكومبيوتر يعرف مستخدمو الكومبيوتر المرادف الانكليزي لكلمة خطأ برمجي وهو Bug أي حشرة أو سوسة. وتعني هذه الكلمة خطأ ادخله المبرمج عن غير قصد في برنامج ما ويؤدي الى نتائج غير محسوبة الخطأ الموضوع عن قصد في برنامج ما هو فيروس. والغريب في الامر ان عبارة الحشرة تم اطلاقها للمرة الاولى على خطأ في الاجهزة وليس البرامج. وحدث هذا الخطأ سنة 1945 في جامعة هارفارد الاميركية، في احد اجهزة الكومبيوتر الاوائل وهو مارك 2. إذ طرأ خطأ على هذا الجهاز وتم تحديده داخل الدارات الكهربائية. وعندما كشف المهندسون على الجزء المعطل وجدوا فراشة طولها خمسة سنتيمترات حُشرت بين موصلي وحدة ابدال وعطلت عملها. ومنذ هذا اليوم اصبحت عملية الكشف عن الاعطال في هارفارد، تعرف بالبحث عن الحشرات في الدارات الكهربائية، اما اصلاحها فعرفت بعبارة ازالة الحشرات أي debugging. ومن الغريب في الأمر ان اخطاء برامج الكومبيوتر اصبح يطلق عليها اسم حشرة كما لو انها دخلت وحدها الى هذه البرامج كما دخلت الفراشة الى جهاز هارفارد. ففي اول ايام البرمجة، كانت كل البرامج تحتوي على حشرات وكان الشعور العام ان هذا الشيء قدر محتم عليها. اما اليوم، فمع ان الخطأ البرمجي لا يزال يعرف بالحشرة، إلا أنه صار من غير المقبول اتهام القدر بوجوده بل اهمال المبرمج وسهوه. ولكن قبل الحديث عن الاخطاء البرمجية المشهورة، لا بد من التذكير بأن الاجهزة نفسها يمكن ان تسجل اخطاءً، وليس فقط الاجهزة الاولى الاختبارية بل بعض اول الاجهزة التجارية. فهناك عدد من الاجهزة التجارية الاولى سجل فشلاً ذريعاً. وأشهر مثال عن ذلك ما حدث لجهاز ابل 3 الذي تم طرحه سنة 1980. وقامت ابل بتصميم هذا الجهاز على اساس انه سيكون اول كومبيوتر موجه الى الشركات التجارية على عكس الجهازين السابقين ابل 1 و2 اللذين كانا مخصصين للاستخدام المنزلي ولهواة الالكترونيات. وكان ابل 3 مزوداً بمعالج 6502 ايه. سرعة 4،1 ميغاهيرتز، وكان يدعم 256 كيلوبايت من الذاكرة ويحتوي على محرك اقراص مرنة قياس 25،5 بوصة ويمكنه التزود بقرص ثابت سعة 5 ميغابايت. ومع ان هذه المواصفات تبدو مضحكة اليوم الا انها كانت محترمة آنذاك، على الاقل لو عمل الجهاز بشكل سليم. ولكن بدءاً بشريحة التوقيت الحقيقي التي كانت تتعطل بعد ساعات قليلة من عمر الجهاز الى فقدان المكونات الالكترونية التي كان يستخدمها، اتسم ابل 3 بميزة نادرة وهي ان احتمال اعطاله وصل الى 100 في المئة. ولا نعرف اذا كانت هذه القصة طرفة لم تحدث او ان مهندسي ابل نصحوا فعلاً مستخدمي الجهاز برفعه عن المكتب وخبطه لإعادة تثبيت كل الشرائح في اماكنها. الحشرة الاولى ذكرنا ان اول حشرة كومبيوتر كانت فراشة علقت في الجهاز وليست خطأ من الانسان. ولكن ما هي اول حشرة برمجية حقيقية كما نفهمها اليوم؟ من الارجح ان لا احد يعرف، الا انه من الغريب ان قليلين جداً من آباء الكومبيوتر الاولين كانوا يعتبرون ان الخطأ البرمجي هو مشكلة. كانوا يعتقدون بالخطأ في الاجهزة ولكن لم يكونوا يتصورون ان يحدث خطأ في البرمجة لأنها كانت برأيهم عمل كتابي بسيط. ولكنهم بدأوا يغيرون رأيهم منذ حاول مهندسو كومبيوتر جامعة كامبريدج في بريطانيا كان اسمه EDSAC وكان يعتبر اول كومبيوتر يمكنه تخزين البرامج في صيف 1949 تشغيل برامج حقيقية عليه بدلاً من البرامج البسيطة المستخدمة لاختباره. وكتبوا برنامجاً يفترض فيه ان يحل معادلة تفاضلية يمكنها وصف مسار الموجات اللاسلكية في الجو. وعندما قاموا بتشغيله للمرة الاولى، لم يعط البرنامج أي نتيجة واكتشفوا انه يحتوي على حوالي 20 خطأ. حشرات فضائية على رغم صعوبة تحديد اول خطأ برمجي في تاريخ الكومبيوتر هناك العديد من الاخطاء الكبيرة والتي اشتهرت في هذا المجال. ويبدو ان اكثر صناعة تأثرت بالاخطاء البرمجية هي صناعة الفضاء. ولكن، الظاهر ان آخر عطلين واجهتهما وكالة الفضاء الاميركية لم يكونا نتيجة مباشرة لأخطاء برمجية. فمن جهة كان ضياع المركبة المدارية حول المريخ سببه خطأ من الانسان ومن جهة اخرى، لا احد يعرف ما حصل للمركبة التي هبطت على المريخ. على انه مع مرور الزمن اتضح ان الاعطال الناتجة عن اخطاء برمجية في صناعة الفضاء كانت مكلفة جداً. وكان مشروع مارينر 1 الى كوكب الزهرة الذي اطلق من كيب كانافيرال سنة 1962، اول محاولة من وكالة الفضاء الاميركية لسبر كوكب آخر. الا ان الصاروخ الحامل للمسبر غير اتجاهه بعيد اطلاقه مما اضطر الوكالة الى تدميره لتجنب وقوعه على مناطق آهلة من الكرة الأرضية. واتضح في ما بعد ان العطل كان ناتجاً عن خطأ في سطر من رموز فورتران البرمجية وبالتحديد كان هناك واصلة hyphen ناقصة في هذا السطر. وكانت كلفة المركبة 80 مليون دولار مما دفع كاتب الرويات العلمية الشهير ارثر سي. كلارك مؤلف 2001، تجوال الفضاء الى وصف هذه المهمة بأغلى واصلة في التاريخ. ويبدو ان الانسان لا يتعلم من اخطائه. وقد يكون التشابه سطحياً، إلا أن الرجل العادي لاحظ ان ما حصل مع مارينر 1 تكرر سنة 1996 مع اول اطلاق لصاروخ اريان 5 من وكالة الفضاء الاوروبية. فبعد الاطلاق من غويانا الفرنسية بقليل، ادى خطأ في نظام ملاحة الصاروخ الى الاعتقاد ان هذا الاخير خرج عن وجهته. وكان ذلك غير صحيح بالطبع. وحاول نظام التحكم تصحيح الوجهة مما دفع بالصاروخ الى الخروج فعلاً عن وجهته. وبعد 39 ثانية من اطلاقه وبينما كان الصاروخ يبتعد اكثر عن وجهته، تم تشغيل وحدة التدمير الآلية مما حول 363 مليون دولار الى خردة. اما سبب الخطأ فكان بتفاهة خطأ مهمة مارينر اذ ان المبرمجين قاموا بتخزين قيمة من 64 بت في عنوان ذاكرة لا يتسع إلا ل16 بت من البيانات. أخطاء بشرية مما لا شك فيه ان الاخطاء البرمجية يمكن ان تكون مكلفة جداً. لكن احياناً لا تقتصر كلفة هذه الاخطاء على الخسائر المالية بل تتعداها الى الخسائر البشرية. وقد يكون احد اشهر الحوادث حصل مع آلة المعالجة بالاشعاع Therac-25. فقد اخطأ البرنامج الذي يتحكم بكميات الاشعاع في عدة مناسبات مما نتج عن حالات تجاوز الكميات المناسبة. وفي حادثة معينة تم اعطاء كميات تتراوح بين 15000 و20000 راد اي مئة مرة اكثر من كمية المعالجة المعروفة واكثر بكثير من الكمية المميتة. وكانت الاصابات متنوعة من فقدان اجزاء من الجسم الى الوفاة في اربع حالات. وفي حرب الخليج الثانية، فشل النظام الاميركي لتعقب الصواريخ في احدى الحالات وكانت النتيجة ان صاروخاً عراقياً سقط على تجمع عسكري في الظهران وقتل جنوداً أميركيين. ومع ان موت الجنود خلال المعارك متوقع، إلا أنه في هذه الحادثة نتج عن خطأ برمجي تسبب بخطأ تعقب قدره 34،0 ثانية قطع خلالها الصاروخ العراقي مسافة كبيرة قبل ان يصل الصاروخ الاميركي. أما أغرب حادثة ناتجة عن خطأ برمجي وأدت الى وقوع ضحية، فهي عائدة الى نظام تم تصميمه لاختيار ارقام رابحة في سحب يانصيب. وقامت شركة ببسي كولا بتنظيم هذا السحب في الفيليبين واعلنت انه سينتج 18 مليونيراً. وكانت ارقام السحب مطبوعة داخل سدادات زجاجات الكولا. إلا انه بدلاً من طباعة 18 رقماً رابحاً ادى الخطأ البرمجي الى طباعة 800 ألف رقم رابح. واضافة الى الخسائر المادية التي تكبدتها الشركة من جراء ذلك، حدثت اعمال شغب ادت الى مقتل شخص واحد على الاقل. أخطاء مالية من حسن الحظ ان الخسائر البشرية الناتجة عن الاخطاء البرمجية ليست كثيرة. فأكبر خسائر سجلت كنتيجة لهذه الاخطاء هي مالية كما سيتضح من الحوادث المشهورة التالية. سنة 1990، أدى خطأ برمجي في نظام التحكم بالمكالمات الهاتفية في شركة ايه. تي. اند تي. الى توقف شبكة اتصالاتها البعيدة مدة تسع ساعات. وكان ذلك اكبر عطل في تاريخ شبكة الهاتف الاميركية ونتج عنه انقطاع الهاتف في اجزاء واسعة من البلاد كما ادى الى عدم التمكن من وصول حوالي 74 مليون اتصال. والغريب في هذا الخطأ انه نتج عن برنامج تم اختباره ملياً كما يبدو. وكان هذا البرنامج للتو قد تم تحديثه لازالة مشكلة صغيرة فيه، ويبدو ان هذا التحديث هو الذي ادخل الخطأ. ومن المعروف ان اختبار البرنامج لدى ادخال أي تحديث عليه هو ممارسة عادية للتأكد من ان التحديث لم يؤثر في اجزاء اخرى من البرنامج كانت تعمل بشكل سليم. ولكن يبدو ان مهندسي الشركة اعتبروا ان هذا التحديث صغير لدرجة انه لن يوثر في اداء البرنامج العام. كان من المفترض ان تتزود مدينة دانفر في الولاياتالمتحدة بمطار جديد في اوائل عام 1994. وكان من المفترض ان يكون هذا المطار من احدث ما بني في هذا المجال وتم تزويده بنظام توزيع حقائب السفر يعمل على الكومبيوتر بواسطة 5300 ميل من اسلاك الالياف الضوئية. وتم وضع 300 جهاز كومبيوتر للتحكم بهذا النظام الذي كان عليه توزيع حوالي 4000 عربة حقائب على مسافة تبلغ 20 ميلاً. إلا أن خطأ في برنامج التحكم ادى الى سحق عدد كبير من الحقائب ودفع العربات نحو الجدران وتوزيع حقائب اخرى على رحلات غير رحلاتها. وتم افتتاح المطار سنة 1995 بعد ان بلغت كلفته 2،3 بليون دولار ولكن بنظام توزيع حقائب يدوي رغم دفع مبلغ 80 مليون دولار في محاولة اصلاح الخطأ البرمجي في النظام الآلي. وربما تذكر مستخدمو الكومبيوتر شيوع الاخبار حول الخطأ الذي ظهر في معالجات انتل بنتيوم الاولى لدى اطلاقها سنة 1994. وكان هذا الخطأ خطأ برمجياً وعطلاً في الاجهزة في آن. وكان الخطأ بالفعل في الرموز البرمجية الصغيرة في شريحة المعالج، وهي رموز برمجية مهمتها ترجمة اكثر الأوامر تعقيداً. واول من اكتشف الخطأ كان باحث رياضي في جامعة في ولاية فيرجينا. ومع ان الخطأ لم يؤثر الا في عدد قليل من المستخدمين، إلا أنه حين كان يظهر كان تأثيره عميقاً جداً لأكثر كان يعطي نتائج حسابية خاطئة كلياً. وبالطبع لم تجنِ انتل من هذا الخطأ الا دعاية سيئة جداً اضافة الى خسائر بلغت 450 مليون دولار من جراء استبدال كل المعالجات غير الصالحة. جورج قندلفت