বাগ শব্দের আভিধানিক অর্থ ছার পোকা। কিন্তু কম্পিউটারের জগতে বাগ দ্বারা এক প্রকার ভুল বা ত্রুটি কে বুঝানো হয়। ইহাকে সাধারণত প্রোগ্রামিং ত্রুটি বা বাগ বলা হয়। এ নিয়েই এ নথি।
বাগের সংজ্ঞা (Definition of Bug)
‘Webster’s Collegiate’ ডিকশনারিতে বাগের সংজ্ঞা হিসেবে বলা হয়,
প্রোগ্রামিং ভাষার মধ্যে কোন একটি অপ্রত্যাশিত খুঁত, দোষ, ত্রুটি বা অসম্পূর্ণতাই হচ্ছে বাগ।
এক কথায় আমরা বলতে পারি,কোন একটি প্রোগ্রাম তৈরি করতে যে কোড লিখা হয়ে থাকে, সে কোডে যদি কোন ভুল বা ত্রুটি থাকে তবে তাই হচ্ছে প্রোগ্রামিং বাগ।
বাগের উৎপত্তি ইতিহাস (History of Bug)
বাগের উৎপত্তি প্রথম কখন কোথায় আর কিভাবে হয় তা নির্দিষ্ট ভাবে কেউ বলতে পারে না। তবে এই নিয়ে অনেক রকম জনশ্রুতি রয়েছে,যার মধ্যে সবচেয়ে জনপ্রিয় যেটি সেটি হচ্ছে, “Grace Murray Hopper” নামের একজন যুবক নেভাল রিজার্ভ অফিসার ১৯৯৪ সালে “Mark-I” নামের কম্পিউটারে কাজ করতে Harvard যান। তখন তিনি আবিষ্কার করেন যে “Mark II” কম্পিউটারটি ভুল উত্তর প্রদর্শন করছে। তখন তিনি খুব নিখুঁত ভাবে কম্পিউটার যন্ত্রটিকে পর্যবেক্ষণ করেন এবং আবিষ্কার করেন যে একটি তাড়ের মধ্যে ছার পোকা মরে লেগে রয়েছে যে কারণে ইলেকট্রন প্রবাহ বিঘ্নিত হয়ে ভুল উত্তর প্রদর্শন করছিল।আর এখান থেকেই বাগের উৎপত্তি বলে ধারণা করা হয়।
বাগের শ্রেণি বিন্যাস (Classification of Bugs)
প্রোগ্রামিং ভাষায় বাগকে পাঁচটি প্রধান ভাগে ভাগ করা হয়েছে। এই বাগ গুলোর নাম হচ্ছেঃ-
- টোকেন ত্রুটি (Token Errors): প্রোগ্রামে যখন এমন কোন শব্দ বা চিহ্ন ব্যবহার করা হয় যেটি জাভা শব্দভাণ্ডারে নেই তখন এই টোকেন ত্রুটি হয়ে থাকে।
- সিনট্যাক্স ত্রুটি (Syntax Errors): জাভা প্রোগ্রামিং ভাষায় যখন কোন ব্যাকরণ গত বা উচ্চারণগত ভুল হয়ে থাকে তখন একে সিনট্যাক্স ত্রুটি বলে।
- সিনট্যাক্স কনস্ট্রেইন্ট ত্রুটি (Syntax constraint errors): যখন জাভা কম্পাইলার কোন একটি প্রোগ্রামের অর্থ নির্ধারণ করতে পারে না তখন সাধারণত এই সিনট্যাক্স কনস্ট্রেইন্ট ত্রুটি দেখিয়ে থাকে।
- ইকুয়েশন ত্রুটি (Execution Errors): জাভা রানটাইম সিস্টেম কোন একটি প্রোগ্রাম সম্পাদন বা কম্পাইল করতে গিয়ে যখন আবিষ্কার করে যে উক্ত প্রোগ্রাম কোন একটি নিয়ম ভঙ্গ করেছে তখন এই ইকুয়েশন ত্রুটি দেখিয়ে থাকে। একে রানটাইম ত্রুটিও বলে।
- ইন্টেন্ট ত্রুটি (Intent Errors): কোন একটি প্রোগ্রাম সফল ভাবে রান হয়েও যখন ভুল মান প্রকাশ করে তখন একে ইন্টেন্ট ত্রুটি বলা হয়। এই ত্রুটিকে ‘The most insidious’ বা বিশ্বাসঘাতক ত্রুটি বলে। কারণ কম্পাইলার বা রানটাইম সিস্টেম এই ত্রুটি ধরতে পারে না।
ডিবাগিং (Debugging)
কোন একটি ত্রুটিপূর্ণ প্রোগ্রামের ত্রুটি নির্ণয় করা এবং ঐ ত্রুটির সমাধান করাকেই ডিবাগিং বলা হয়ে থাকে।