অবিশ্বাস্য হলেও সত্যি
মিলেনিয়াম বাগ: কোডিংয়ের ভুলে ৫০ হাজার কোটি ডলারের ক্ষতি!
প্রোগ্রামিংয়ে সামান্য ভুলের জন্য হতে পারে কোটি কোটি টাকার ক্ষতি। সামান্য 'বার'-এর জন্য ধ্বংস হয়েছে রকেট, গণনায় ভুলের জন্য ক্ষতি হয়েছে ৫০ হাজার কোটি ডলার! অবিশ্বাস্য সেসব কাহিনি...
কোনো সফটওয়্যার ঠিকভাবে কাজ না করলে আমরা বলি, সফটওয়্যারটিতে বাগ আছে। বাগ মানে, ত্রুটি। অর্থাৎ সফটওয়্যারে ত্রুটি আছে। ফলে, যে কাজের জন্য একে বানানো হয়েছে, তা করতে পারছে না। এখানে দোষটা সাধারণত প্রোগ্রামারের। কোডে ভুল থেকে গেলে বাগ দেখা যায়। প্রোগ্রামারের অজান্তে বা অসাবধানতার কারণে এসব ভুল হয়। তবে যে কারণেই হোক, কম্পিউটার বাগের কারণে প্রযুক্তিনির্ভর এই পৃথিবীতে কম বিপর্যয় হয়নি।
১৯৬২ সালের কথা। রকেটে করে মেরিনার ১ স্পেসপ্রোব মহাকাশের উদ্দেশে পাঠায় মার্কিন মহাকাশ গবেষণা সংস্থা নাসা। কিন্তু মাটি ছেড়ে ওপরে ওঠার ২৯০ সেকেন্ডের মধ্যেই ধ্বংস হয়ে যায় রকেটটি। কারণ আর কিছু না, রকেট পরিচালনার সফটওয়্যারে থাকা খুব ছোট্ট এক কম্পিউটার বাগ। সফটওয়্যার তৈরির সময় কোডে কেবল একটা 'বার' চিহ্ন বাদ পড়ে গিয়েছিল। 'ব্যাসার্ধ' বা রেডিয়াস বোঝাতে লেখা হয়েছিল আর (R), যেটা হওয়ার কথা ছিল মূলত 'আর-বার' (R̄)। (অনেক সংবাদ মাধ্যমে অবশ্য 'হাইফেন' বাদ পড়ে গিয়েছিল বলে দাবি করা হয়েছে। তবে নাসার তথ্যমতে, আসলে 'বার' চিহ্ন বাদ পড়েছিল।) তাতেই এই বিপত্তি। গ্রাউন্ড কন্ট্রোল থেকে ঠিকমতো সংকেত রিসিভ করতে পারছিল না রকেটটি। ফলে খানিকটা বেঁকে গিয়েছিল ওপরে ওঠার দিকটা। ফলাফল? প্রায় ১৮ মিলিয়ন ডলার সমমূল্যের ক্ষতি।
২০০৮ সালে যুক্তরাজ্যের হিথরো বিমান বন্দরের টারমিনাল ৫-এ এমনই এক বাগযুক্ত সফটওয়্যারের কারণে হাজার হাজার ব্যাগ ভুল গন্তব্যে চলে যায়। বাতিল হয় প্রায় ৫০০ ফ্লাইট। ক্ষতির পরিমাণ দাঁড়ায় প্রায় ১ কোটি ৬০ লাখ ডলার!
সফটওয়্যারের ত্রুটির কারণে এমন জরিমানা গোনার ঘটনা আছে ভূরি ভূরি। তবে ‘মিলেনিয়াম বাগ’ নামের এক ত্রুটির কাছে বোধ হয় বাকি সব হার মানবে। ২০০০ সালে এই ত্রুটির হাত থেকে রক্ষা পেতে পৃথিবীজুড়ে খরচ হয় প্রায় ৩০ হাজার থেকে ৫০ হাজার কোটি ডলার। বাংলাদেশি টাকায় কত হবে সংখ্যাটা? ৫৪ লাখ ৭৫ হাজার কোটি টাকারও বেশি!
সে সময় বেশির ভাগ কম্পিউটারই ২ সংখ্যার অংক দিয়ে বছর প্রকাশ করত। যেমন ১৯৯৯ সালকে কম্পিউটারে দেখানো হতো ৯৯ হিসেবে। ফলে ওই বছর শেষে যখন নতুন বছর আসন্ন, দেখা গেল, ২০০০-এর পরিবর্তে ১৯০০ সালের তারিখ গণনা করতে শুরু করতে যাচ্ছে পৃথিবীর প্রায় সব কম্পিউটার। এমনটা হলে এলোমেলো হয়ে যেত ব্যাংক, অফিস, যানবাহন, কারখানাসহ নানা ক্ষেত্রের সময়সূচী। এমনটা হলে ক্ষতির পরিমাণ নিঃসন্দেহে ছাড়িয়ে যেত ৫০ হাজার কোটি ডলার। তাই আগেই বিপুল টাকা বাঁচাতে, এই ত্রুটি সারাতে ৫০০ বিলিয়ন বা ৫০ হাজার কোটি ডলার খরচ করা হয়।
এখানে একটা বিষয় পরিষ্কার করা দরকার। ভাইরাস আর বাগ কিন্তু এক জিনিস নয়। বাগ তৈরি হয় প্রোগ্রামারের অজান্তে। সামান্য ভুলের কারণে। কিন্তু ভাইরাস ইচ্ছাকৃতভাবে বানানো হয়। দক্ষ প্রোগ্রামার অন্যের কম্পিউটারকে আক্রমণ করতে যে প্রোগ্রাম তৈরি করেন, সহজ কথায় সেটাই ভাইরাস। এই ভাইরাসের ভালো-মন্দ দুই ধরনের ব্যবহারই আছে। এই লেখায় অবশ্য আমরা ভাইরাস নিয়ে কথা বলব না। তাই আবারও কম্পিউটার বাগের প্রসঙ্গে ফেরা যাক।
সফটওয়্যারের বাগ যেহেতু একধরনের ত্রুটি, তাই এসব যাচাই করার আলাদা মানুষ আছেন। তাঁদের কাজ হলো একটা সফটওয়্যারকে নানাভাবে যাচাই করে ত্রুটিগুলো খুঁজে বের করা। পরে সে অনুযায়ী প্রোগ্রামার তা সংশোধন করেন। ছোটখাটো সফটওয়্যারকে এভাবে শতভাগ ত্রুটিমুক্ত করা সম্ভব। কিন্তু বড়গুলোর ক্ষেত্রে সে নিশ্চয়তা দেওয়া কঠিন। বড় বড় সফওয়্যারে এত এত বেশি কোড থাকে, আর এত ভিন্নরকম হার্ডওয়্যারের ওপর নির্ভরশীল হয় এসব সফটওয়্যার যে প্রতিটির বাগ দূর করা প্রায় অসম্ভব ব্যাপার।
বড় সফটওয়্যারের ক্ষেত্রে অনেক সময় দেখা যায়, বেশির ভাগ কম্পিউটারেই খুব ভালো চলছে। হঠাৎ এক-দুটো কম্পিউটারে গিয়ে ঝামেলা বেঁধে যায়। কারণ, এই সিস্টেমগুলোর কোডের সঙ্গে সফটওয়্যারের কোড কোথাও গিয়ে মিলে চলতে পারে না। খাপ খায় না। ফলে অনাকাঙ্ক্ষিত বাগ তৈরি হয়। এ জন্য বর্তমানে অনেক সফটওয়্যারে রিপোর্ট করার সুযোগ থাকে। ব্যবহারকারীর রিপোর্টের ভিত্তিতে বাগ সংশোধন করে প্রোগ্রামকে আরও কার্যকর করে তোলেন প্রোগ্রামাররা।
ইংরেজিতে বাগ শব্দটির অর্থ হলো, পোকা। কম্পিউটার বাগ শব্দটি এসেছে বাস্তবিক অর্থেই এক পোকার কারণে। ১৯৪৭ সালে হার্ভাড বিশ্ববিদ্যালয়ের মার্ক ২ কম্পিউটারে হঠাৎ কারিগরি ত্রুটি দেখা দেয়। কারণ খুঁজতে গিয়ে দেখা যায়, মেশিনের হার্ডওয়্যারের ভেতর ঘাপটি মেরে আছে এক মথ। সে জন্যই বিদ্যুৎ প্রবাহে সমস্যা হচ্ছিল। ত্রুটি দেখা দিয়েছিল স্বাভাবিক কাজকর্মে। কথিত আছে, যিনি খুঁজে পান, তাঁকে যখন জিজ্ঞেস করা হয় সমস্যাটা কী? তিনি সরল মুখে উত্তর দেন, কম্পিউটারে বাগ (পোকা) ছিল।