সফটওয়্যার বাগ: সংশোধিত সংস্করণের মধ্যে পার্থক্য

বিষয়বস্তু বিয়োগ হয়েছে বিষয়বস্তু যোগ হয়েছে
Emontarzan (আলোচনা | অবদান)
সম্পাদনা সারাংশ নেই
Emontarzan-এর সম্পাদিত সংস্করণ হতে নকীব বট-এর সম্পাদিত সর্বশেষ সংস্করণে ফেরত
ট্যাগ: পুনর্বহাল
৬ নং লাইন:
 
আকস্মিক ভাবে যদি কম্পিউটার ভুল ফলালফল দেয় বা প্রোগামে উল্টাপাল্টা লজিক দেখায় তাহলে বুজতে হবে কম্পিউটার সফটওয়্যার বাগ হয়েছে।
 
 
সফটওয়্যার বাগ মোটেও ভালো কোন বিষয় নয়। আমরা জানি যে, কম্পিউটিং, প্রোগ্রামিং এবং সফটওয়্যার ডেভেলপমেন্ট মূলত নতুন এবং জটিল প্রযুক্তি। মাত্র ৭০ বছর এর বয়স। নতুন এই প্রযুক্তিটির এখনো আসলে গড়ে ওঠার বয়স, এবং সেকরাণে এটি বেশ চ্যানেন্জিং। এরকম চ্যালেন্জিং একটা পরিবেশে কাজ করতে যেয়ে আমাদের মানবিক সীমাবদ্ধতাগুলো বেশি বেশি সামনে চলে আসে, যার ফলাফল হিসেবে সফটওয়্যারে বাগ থেকে যায়। এই নিয়ে আমাদের অনেক বদনাম, মন কষাকষি, অর্থের অপচয়।
 
কেমন বদনাম, তার একটা উদারহণ হিসেবে লোকজন প্রোগ্রামার এবং বাগের সম্পর্কটিকে নিয়ে কেমন তামাশা করে দেখুন। লোকেজনের মধ্যে একটি প্রচলিত ধারনা হলো-
 
সফটওয়্যার প্রযুক্তিতে বাগ (bug) হলো এমন সব ভুল, যা ওই সফটওয়্যারের প্রোগ্রামারগণ-
 
* সারাদিন ধরে তৈরী করেন, আর
* সারারাত ধরে সমাধান করেন।
 
তার মানে টা কী হলো? সফটওয়্যার ডেভেলপমেন্ট যেহেতু প্রথাগত প্রোডাকশন (উৎপাদন) কর্মকাণ্ড নয়, তাই একে ডেভেলপমেন্ট (উন্নয়ন/প্রস্তুতকরণ) বলা হয়। কিন্তু এরা নাকি সারাদিন বাগ প্রডিউস করে!
 
আর শুধু সাধারণ মানুষের মধ্যে প্রচলিত ধারনার কথাই বা বলি কেন। ডাচ কম্পিউটার বিজ্ঞানী Edsger W. Dijkstra নিজেই বলেছেন-
 
যদি ডিবাগিং মানে হয় সফটওয়্যারের বাগ সারানো, তাহলে প্রোগ্রামিং মানে তো হলো সেসব বাগের জন্ম দেয়া।
 
সাধারন লোকে যে যা বলে বলুক, মজা করুক, সমস্যা নেই। কিন্তু ইন্ডাস্ট্রির হর্তাকর্তাগণই যখন বাগ নিয়ে বিরক্ত, তখন আমরা আর কার কাছে আশ্রয় পেতে পারি। আসলে, সবাই তো মহান হতে পারে না। সবাই আমরা সাধারণ মানুষ এবং সেই মানুষদের হাতেই দায়িত্ব পড়েছে নতুন এবং চ্যালেন্জিং কিছু করার। এই কারণে, সারা দুনিয়াতে সফটওয়্যার প্রস্তুতকারীদের-
 
* কর্মঘণ্টার কোন ঠিকঠিকানা নেই,
* পোশাকের কোন ঠিকঠিকানা নেই,
* মেজাজেরও কোন ঠিকঠিকানা নেই।
 
একটা প্রযুক্তি মানুষকে কিছু সুবিধা করে দেয়ার উদ্দেশ্যেই তৈরী করা হয়। যদিও বেশিরভাগ সময়ই মানুষ সেই নতুন প্রযুক্তিটিকে ব্যবহার করার জন্য প্রস্তুত থাকে না। এটা মানুষের দোষ না, এটাই বাস্তবতা।
 
বেশিরভাগ সময়ই মানুষ জানে না বা বলতে পারে না তারা কী চায়, তারা শুধু সমস্যার কথা শোনাতে থাকে।
 
তারপর সেই সমস্যাটির সমাধান হাতে পেয়ে গেলে আস্তে আস্তে চুপ হয়ে যায়। তখন কেউ জানতে পারে না বা মনে রাখে না যে এর পিছনে কতটা মেধা এবং শ্রম রয়েছে। অর্থাৎ যতটুকু ঠিকঠাক পাওয়া গেছে তা নিয়ে মানুষের কোন মাথাব্যাথা নেই।
 
কিন্তু যতটুকু পাবো বলেও পায়নি, সেগুলো নিয়েই যতো গোলযোগ বাঁধে, সেগুলোর কথাই বেশি আলোচিত হয়। সফটওয়্যার বাগ তাই মূলত দু’ধরনের-
 
* প্রয়োজন বোঝানো বা বুঝতে পারার ভুল, এবং
* বুঝতে পেরেও তার নির্ভুল ও পরিপূর্ণ প্রয়োগ করতে না পারা।
 
পৃথিবীতে সফটওয়্যার প্রকৌশল একটা নতুন ধরনের প্রযুক্তি, যার বয়স মাত্র ৭০ বছর। সেকারণে, বেশিরভাগ ক্ষেত্রেই খুব সুনির্দিষ্ট কোন শৃঙ্খলা এখনো গড়ে ওঠেনি। সফটওয়্যার ডেভেলপমেন্ট এখনো যতটা না প্রকৌশল চর্চা, তার থেকে অনেক বেশি সৃজনশীল নমনীয় এবং শৃঙ্খলাহীন, জবাবদিহিতা-বর্জিত কর্মকাণ্ড। অধিকন্তু-
 
* এখন পর্যন্ত ৫০% কর্মীর পেশাদারী কাজের অভিজ্ঞতা ৫ বছরের কম।
* আনুমানিক ৭০-৮০% ভাগ কর্মীর কোন প্রকার ইন্ডাস্ট্রি ট্রেনিং নেই।
* অন্তত ৩০-৪০% ভাগ কর্মী মানসম্মত প্রাতিষ্ঠানিক জ্ঞান ছাড়াই সফটওয়্যার ইন্ডাস্ট্রিতে কাজ করছেন।
* প্রায় ১০০% মালিক ও ব্যবস্থাপকগণ এই প্রযুক্তির লোক নন।
 
সেকারণে, অনেক জোড়াতালি দিয়ে, জোগাড়পাতি করে সমাধান রচনা করতে হয়। এখানে কাজের থেকে হট্টগোল বেশি। আগামী ১০-১৫ বছরে এই অবস্থা থেকে খুব বেশি উন্নতি হবে না। তাই আমাদের সকলের প্রয়োজনে চলুন আমরা সফটওয়্যার বাগ বিষয়টাকে আরেকটু ভালোভাবে বোঝার চেষ্টা করি।
 
তার জন্যে, প্রথমেই সফটওয়্যার বাগের একটা তাত্ত্বিক সংগা জেনে নিই-
 
In IT, a bug refers to an error, fault or flaw in any computer program or a hardware system. A bug produces unexpected results or causes a system to behave unexpectedly. In short, it is any behavior or result that a program or system gets but it was not designed to do. - Techopedia.
 
অর্থাৎ, বাগ হলো কোন একটি সফটওয়্যার প্রোগ্রাম বা হার্ডওয়্যার সিস্টেমের এমন একটি ভুল, যার কারণে উক্ত প্রোগ্রাম আশানুরূপ ফলাফল দিতে ব্যর্থ হয়।
 
একটি কম্পিউটার প্রোগ্রাম লেখার আগেই ঠিক করে নেয়া হয় যে, ওই প্রোগ্রামের কাছ থেকে আমরা কী চাই এবং কীভাবে চাই। প্রোগ্রামারের কাজ হলো এমনভাবে যুক্তিবিন্যাস করা যাতে তার লেখা প্রোগ্রাম শতভাগ সঠিকভাবে কাজটি করতে পারে। এখন প্রোগ্রামের যুক্তিবিন্যাস, কোড লেখা এবং সফটওয়্যারটিকে প্রোডাক্ট হিসেবে চালানোর এই জটিল প্রক্রিয়া সম্পন্ন করতে গেলে প্রোগ্রামাররা সাধারনত কয়েক ধরনের ভুল করে। যেমন-
 
* গাণিতিক ভুল বা অ্যালগোরিদমিক ভুল - এ ধরনের ভুল সাধারনত একটি সমস্যাকে পুরোপুরি না বোঝার কারণে হতে পারে। এই ভুল চিন্তার উপর ভিত্তি করে কোড লেখা হয়ে যায়। তবে এই ভুলগুলো কখনো না কখনো বাগ হিসেবে ধরা পড়বে।
* ভাষাগত ভুল বা সিনট্যাক্সের ভুল - এগুলো হয় একটি প্রোগ্রামিং ভাষাকে পুরোপুরি না জানার কারণে অথবা অসাবধানতার কারণে। এধরনের ভুলগুলো কম্পাইল করার সময়ই ধরা পড়ে যায়, সুতরাং এগুলো কখনোই বাগ হিসেবে সফটওয়্যারে থেকে যাবে না।
* গাণিতিক যুক্তিকে প্রোগ্রামে রূপান্তরিত করার সময়ও ভুল হতে পারে। এগুলো ভাষাগত ভুল নয়। বরং এমন কিছু লেখা হচ্ছে, যেটা আপনার প্রোগ্রামের যুক্তিটাকে সঠিক অনুক্রমে ধারণ করে না। এগুলো অসাবধানতার কারণে যেমন হতে পারে, আবার ভুল বুঝে ইচ্ছাকৃতভাবে হতে পারে।
* একটি সফটওয়্যার কোন পরিবেশে চলবে, লেখার সময় আমাদের অনেকেরই সেটা সম্পর্কে পুরোপুরি ধারনা থাকে না। পরবর্তীতে এত ভিন্ন ধরনের সিস্টেম সফটওয়্যার বা হার্ডওয়্যারের সাথে আমাদের লেখা সফটওয়্যারগুলো যোগাযোগ করবে যে, সেটা আগেভাগেই চিন্তা করে রাখা সম্ভব নয়।
 
যেসব কারণে দুনিয়ার প্রায় সকল প্রোগ্রামারের লেখা কোডেই বাগ থাকতে পারে, সেগুলো পিছনের কারণগুলো হলো-
 
* সময়ের টানাটানি বা অন্য যেকোন কারণে, যথেষ্ট পরিমাণ মনোযোগের অভাব। বিষয়টা ছেলেখেলা নয় এবং সহজ নয়। অনেকেই ভাবতে পারেন যে মনোযোগ দিলেই তো হলো। কিন্তু যথাসাধ্য মনোযোগ দেয়ার পরেও সেটা যথেষ্ট নাও হতে পারে।
* যথেষ্ট পরিমাণ প্রযুক্তিগত জ্ঞানের অভাব। এই বিষয়টিও অনেকে ভাবতে পারেন যে, যথেষ্ট পড়াশোনা না করে কোড লিখতে গেছে কেন তাহলে! কিন্তু বিষয়টা সেরকম নয়। সবকিছু শিখে শুরু করা সম্ভব নয়, বিষয়গুলো চ্যালেন্জিং, বিস্তৃত এবং সর্বদা পরিবর্তনশীল।
* পরিবেশগত জ্ঞানের অভাব। যে সময়ে যে পরিবেশে একটি সফটওয়্যার চলবে, সে সম্পর্কে ধারনার ঘাটতি থাকা। প্রযুক্তি নিজেই বদলে গেলে তখন সফটওয়্যারগুলোও অকার্যকর হয়ে পড়তে থাকে।
* একটি সফটওয়্যারের কাছে প্রত্যাশাগুলোকে সঠিকভাবে ডেভেলপারকে উপস্থাপন করতে না পারা। আপনার মন কী বলছে, আর শেষ পর্যন্ত কী পেতে যাচ্ছেন সেটা যত কাছাকাছি হবে, বাগের পরিমাণ ততো কমে যাবে।
* পর্যাপ্ত এবং কার্যকর যোগাযোগের অভাব। বড় বড় কাজগুলো যেহেতু কেউ একা করে না, তাই পরস্পরের মধ্যে পর্যাপ্ত যোগাযোগ এবং একে অন্যকে বুঝতে পারা-না-পারা অনেক বড় কারণ সফটওয়্যার বাগের পিছনে।
* ঘনঘন মত বদলানো। আজ এটা লাগবে তো কাল ওটা লাগবে। মনে রাখতে হবে, একমাত্র সফটওয়্যার প্রকৌশলীরাই একটা প্রোডাক্ট ডিজাইন হয়ে যাওয়ার পরেও নতুন ধারনা (পরিবর্তন) কে মেনে নেয়। এর জন্যে সঠিক প্রসেস মেনে চললেও বিষয়গুলো অনেক সময় বিরক্তিকর হয়ে উঠতে পারে।
* কিছু কিছু বাগ সব সিস্টেমেই থাকে। এই কথাটিকে বাহানা হিসেবে ব্যবহার করা। হ্যাঁ, বাগ থাকে। কিন্তু তার মাত্রাগত পার্থক্য থাকে।
 
সুতরাং দেখা যাচ্ছে যে, একটি সফটওয়্যার বাগের কারণগুলো বেশিরভাগই মানবিক।
 
আর এসব বাগ সারানোর জন্যে প্রোগ্রামারগন যা কিছু করেন, সেটাকে বলে ডিবাগ (debug) করা। ডিবাগিং সম্পর্কিত কাজের মধ্যে আছে-
 
* নিজের চিন্তাটাকে আবারো পর্যালোচনা করা।
* কোডের সন্দেহজনক লাইন ধরে ধরে নিরীক্ষা করা।
* বিশেষ বিশেষ মানের জন্যে প্রোগ্রাম চালিয়ে ধাপে ধাপে দেখা।
* বিশেষ পরিবেশে (দিন-তারিখ, টাইম-জোন, অপারেটিং সিস্টেম, প্রসেসরের গঠন, ডেটাবেসের অবস্থা, নেটওরয়ার্কের অবস্থা, বিশেষ ধরনের ইনপুট) চালিয়ে দেখা।
* অভিজ্ঞ কারো সাথে কথা বলা। সেটা নিজের টিমে বা অনলাইন কমিউনিটিতে হতে পারে।
 
একটি বাগ কত সহজে পূনরাবৃত্তি করানো যায়, সেটাকে বলে তার কনসিসটেন্সি। বাগ যত ইনকনসিসটেন্স হবে, সেটা সারানো ততো কঠিন হবে। পরবর্তীতে সুযোগ হলে (অথবা মন্তব্যের ঘরে) নিজের কিছু অভিজ্ঞতা বর্ণনা করতে পারি।
 
একটি সফটওয়্যারের মান যাচাইয়ের প্রধানতম বিষয় হলো এর বাগের পরিমান এবং ধরন। অনেক বাগ আছে যার কারণে পুরো সিস্টেম ক্র্যাশ করতে পারে। অনেক আছে যাদের ভুল হিসাবের কারণে মানুষের জীবনের উপরেও হুমকি আসতে পারে। আবার কিছু আছে যেগুলো হয়ত বহু বছর পরে ধরা পড়বে, তার আগে পর্যন্ত সব ঠিকঠাক চলবে।
 
আসলে আমরা যতই টেস্ট করি বা যাই করি, একটা অ্যালগোরিদমকে যদি তাত্ত্বিকভাবে প্রমান করা যায়, তাহলে সেটি নিয়ে আর কোন সমস্যা থাকে না। কিন্তু দুনিয়ার বেশিরভাগ সমস্যা হলো এমন যে তাকে গাণিতিকভাবে প্রমাণ করা দুঃসাধ্য। অন্য একটি উপায় হলো যত ধরনের ভিন্ন ভিন্ন ইনপুট সম্ভব, তার সবার জন্যে সফটওয়্যারটি টেস্ট করা, কিন্তু সেটাও বাস্তবসম্মত নয়।
 
একটা প্রোগ্রামের সব ইনপুট আর আউটপুট জানা হয়ে গেলে, তখন তাকে আর কোড লিখে বের করার দরকার পড়ে না। তাই ধরে নিতে হবে যে, ১০০% বাগমুক্ত অ্যালগোরিদম এবং ছোটখাটো প্রোগ্রাম থাকলেও, ১০০% বাগমুক্ত সফটওয়্যার বা একটা সিস্টেম সম্ভব নয়। তবে সবকিছুরই যেমন একটা গ্রহনযোগ্য মাত্রা থাকে, এক্ষেত্রেও সেটি থাকে। এই মাত্রাটিকে সবাই নিজের মত করে বুঝতে চায়, তখনই কমন-সেন্স ব্যপারটা রাজত্ব করতে শুরু করে।
 
সবকিছুকে আইন দিয়ে বেঁধে ফেলা যাবে না কখনোই। তাই আমাদের সকলের সহযোগিতা, দায়িত্বজ্ঞান এবং মানবিকতাবোধ এখানে অত্যন্ত জরুরী। দিনে দিনে অনেক বেশি শৃঙ্খলা আসবে, সফটওয়্যার খরচ বহুগুন বাড়বে, প্রায় সকল ইন্জিনিয়ারিঙের মধ্যে ৮০% ই কম্পিউটার এবং সফটওয়্যার ইন্জিনিয়ার হবে, কিন্তু যন্ত্রের উপর মানুষের ভরসা আসতে গেলে, মানুষের বিশ্বাস অর্জন করতে গেলে শুধু বেস্ট-প্র্যাকটিস অনুসরণ করে হবে না, শৃঙ্খলার দরকার হবে।
 
যাই হোক, দিনে দিনে সবই হয়ত হবে। বাগ বিষয়টা নিয়ে আলোচনাও অনেক কমে যাবে। কিন্তু আপাতত যেভাবে চলছে তাতে অনেক পথ পাড়ি দেয়া বাকি। তাই, এখন একটু আবার বাগ-পরিচিতিতে ফিরে যাই।
 
সাধারন অর্থে বাগ মানে তো পোঁকা। তাহলে পোঁকার সাথে বাগের কী সম্পর্ক? এই যে, এই ছবিটা দেখুন-
 
ছবি- প্রথম স্বীকৃত সফটওয়্যার বাগ (উইকিপিডিয়া)
 
প্রযুক্তির জগতে কালেভদ্রে কোন কোন যান্ত্রিক ত্রুটিকে বাগ বলে সম্বোধন করা হতো। এমনকি ১৯৪৪ সালে প্রকাশিত আইজ্যাক আসিমভের একটি বইয়েও এই শব্দটির উল্লেখ পাওয়া যায়। কিন্তু সফটওয়্যারের জগতে বাগ শব্দের ব্যবহার উপরের ওই ছবিটার মাধ্যমে ১৯৪৭ সালে।
 
আমরা হয়ত কমবেশি জানি যে, তখনকার কম্পিউটারগুলো এখনকার মত ছোট ছিল না, আর সেগুলোর প্রযুক্তিও ছিল একেবারেই ভিন্ন, ট্রানজিস্টরের পরিবর্তে রিলে ডিভাইস ব্যবহার করা হতো। সেই সময় একটা ইলেক্ট্রোমেকানিক্যাল কম্পিউটার ছিল Harvard Mark II, যার ভেতরে ওই আরশোলা জাতীয় বাগ (পোঁকা) টিকে পাওয়া যায়। বলা বাহুল্য যে, পোকাটির উপস্থিতির কারণে ওই সিস্টেমে কিছু গোলযোগ তৈরী হয়েছিল, ওকে সরিয়ে সেই ঝামেলা থেকে মুক্তি মেলে।
 
পরবর্তীতে এই ঘটনার কথা বর্ণনা করতে যেয়ে Grace Hopper ওই শব্দটি (বাগ) ব্যবহার করেন। সেই থেকে প্রচলন হলো, আর এখন তো এই নিয়ে কত কথা।
 
'''<big>বিশাদ আলচনাঃ</big>'''
১১০ ⟶ ১৩ নং লাইন:
কোন প্রোগ্রামের সোর্স কোড বা তার ডিজাইন, উপাদান এবং এই ধরনের প্রোগ্রাম দ্বারা ব্যবহৃত অপারেটিং সিস্টেমের মধ্যে তৈরি এরর বা ত্রুটি এবং বেশিরভাগ ক্ষেত্রে এই এরর বা ত্রুটি থেকে ব্যাগ গুলা উৎপন্ন হয়। অনেক সময় কম্পাইলার ভুল কোড উৎপন্ন করার কারণে এটা হতে পারে । একটি প্রগ্রামে বিশাল আকারের ব্যাগ থাকতে পারে এবং ব্যাগ গুলা মারাত্মকভাবে ফাংশন এ প্রভাব ফেলতে পারে এটাকে ত্রুটিযুক্ত বা বাগি বলা হয় । ব্যাগ গুলা ট্রিগার এরর বা ত্রুটি করে পারে যা তরঙ্গ আকারে প্রভাব ফেলতে পারে। ব্যাগ গুলা কম্পিউটার কে ক্রাস বা ফ্রিজ করতে পারে।
 
কিছু সফট্ওয়্যার বাগ সংযুক্ত হয়ে বিপর্যয় এনেছিল, ১৯৮০ দশকে সরাসরি থেরেক -5 রেডিয়েশন থেরাপি মেশিন সফট্ওয়্যার বাগ সংযুক্ত হয়েছিল সরাসরি যার কারণে রোগীর মৃত্যুর জন্য দায়ি করা হয়েছিল এই সফট্ওয়্যার বাগ কে। ১৯৬৬ সালে সফট্ওয়্যার বাগ দেখার ১ মিনিটের কম সময় এর মধ্যে ইউরোপীয় স্পেস এজেন্সি এর মার্কিন $ 1 বিলিয়ন প্রোটোটাইপ Ariane 5 রকেট চালু বোর্ডের নির্দেশিকা কম্পিউটার প্রোগ্রাম নস্ট করে দেওয়া হয়েছে ।1994 সালে, জুন মাসে একটি রয়েল এয়ার ফোর্স চেনুক হেলিকপ্টারটি কিট্টিয়ারের দুর্ঘটনায় ২9 জন মারা যায়। এটি প্রাথমিকভাবে পাইলট এর ভুল হিসেবে চাকরি চলে যায় কিন্তু কম্পিউটার উইকলি তদন্তে হাউস অফ লর্ডস কে বোজাতে সক্ষম হন যে বিমানের ইঞ্জিনএর সিস্টেম সফ্টওয়্যার বাগ নিয়ন্ত্রণ করছিল তাই এই দুর্ঘটনাদুরঘটনা ঘটে।
 
 
= বাগের শ্রেণি বিন্যাস =
প্রোগ্রামিং ভাষায় বাগকে পাঁচটি প্রধান ভাগে ভাগ করা হয়েছে। এই বাগ গুলোর নাম হচ্ছেঃ-
 
* টোকেন ত্রুটি (Token Errors): প্রোগ্রামে যখন এমন কোন শব্দ বা চিহ্ন ব্যবহার করা হয় যেটি জাভা শব্দভাণ্ডারে নেই তখন এই টোকেন ত্রুটি হয়ে থাকে।
* সিনট্যাক্স ত্রুটি (Syntax Errors): জাভা প্রোগ্রামিং ভাষায় যখন কোন ব্যাকরণ গত বা উচ্চারণগত ভুল হয়ে থাকে তখন একে সিনট্যাক্স ত্রুটি বলে।
* সিনট্যাক্স কনস্ট্রেইন্ট ত্রুটি (Syntax constraint errors): যখন জাভা কম্পাইলার কোন একটি প্রোগ্রামের অর্থ নির্ধারণ করতে পারে না তখন সাধারণত এই সিনট্যাক্স কনস্ট্রেইন্ট ত্রুটি দেখিয়ে থাকে।
* ইকুয়েশন ত্রুটি (Execution Errors): জাভা রানটাইম সিস্টেম কোন একটি প্রোগ্রাম সম্পাদন বা কম্পাইল করতে গিয়ে যখন আবিষ্কার করে যে উক্ত প্রোগ্রাম কোন একটি নিয়ম ভঙ্গ করেছে তখন এই ইকুয়েশন ত্রুটি দেখিয়ে থাকে। একে রানটাইম ত্রুটিও বলে।
* ইন্টেন্ট ত্রুটি (Intent Errors): কোন একটি প্রোগ্রাম সফল ভাবে রান হয়েও যখন ভুল মান প্রকাশ করে তখন একে ইন্টেন্ট ত্রুটি বলা হয়। এই ত্রুটিকে ‘The most insidious’ বা বিশ্বাসঘাতক ত্রুটি বলে। কারণ কম্পাইলার বা রানটাইম সিস্টেম এই ত্রুটি ধরতে পারে না। <br />
 
= ডিবাগিং =
কোন একটি ত্রুটিপূর্ণ প্রোগ্রামের ত্রুটি নির্ণয় করা এবং ঐ ত্রুটির সমাধান করাকেই ডিবাগিং বলা হয়ে থাকে।