AI for Codingপড়তে ১১ মিনিট লাগবে

এআই-এর সাথে ডিবাগিং

দুর্বোধ্য এরর মেসেজ থেকে নিমিষেই সমাধান
scope:ব্যবহারিক এআইdifficulty:শিক্ষানবিস

রাত ২টা বাজে আর আপনার কোড কাজ করছে না

রাত ২টা বাজে। ঘণ্টার পর ঘণ্টা আপনি স্ক্রিনের দিকে তাকিয়ে আছেন। কোড কিছুতেই রান করছে না। একটা এরর মেসেজ দেখাচ্ছে যা অনেকটা এরকম:

TypeError: Cannot read properties of undefined (reading 'map')

এটি দেখতে আপনার কাছে প্রাচীন কোনো দুর্বোধ্য ভাষার মতো মনে হতে পারে। এআই আসার আগে আপনি যা করতেন: এররটি কপি করতেন, স্ট্যাক ওভারফ্লো (Stack Overflow) খুলতেন, ২০১৪ সালের সেই সব উত্তরগুলো ঘাঁটতেন (যার অর্ধেকই কাজ করত না), নতুন নতুন সব এরর খেতেন এবং সূর্য না ওঠা পর্যন্ত এই চক্র চলতেই থাকত।

আর এখন? আপনি শুধু এররটি এআই-এর কাছে পেস্ট করেন। কয়েক সেকেন্ডের মধ্যে সে আপনাকে বলে দেয়: "আপনার users ভ্যারিয়েবলটি undefined কারণ এপিআই কলটি এখনো শেষ হয়নি। আপনি এমন ডেটার ওপর .map() চালানোর চেষ্টা করছেন যা এখনো তৈরিই হয়নি। এই নিন সমাধান..."

এআই-এর মাধ্যমে ডিবাগিং (Debugging)-এ আপনাকে স্বাগতম — এটি আপনার কোডিং জগতকে আমূল বদলে দেবে।

এআই ডিবাগিং ওয়ার্কফ্লো

এআই-এর মাধ্যমে ডিবাগ করা একটি নির্দিষ্ট এবং শক্তিশালী পদ্ধতি অনুসরণ করে:

  • ধাপ ১: এররটি পেস্ট করুন — পুরো এরর মেসেজ এবং স্ট্যাক ট্রেস (Stack trace) কপি করুন। নিজের ভাষায় না লিখে যা দেখাচ্ছে তা সরাসরি দিন।
  • ধাপ ২: প্রেক্ষাপট বা কনটেক্সট দিন — যে ফাংশন বা ফাইলে সমস্যা হচ্ছে সেই কোডটুকু শেয়ার করুন এবং আপনি আসলে কী করতে চাইছেন তা জানান।
  • ধাপ ৩: ব্যাখ্যা বুঝে নিন — এআই আপনাকে সহজ বাংলায় বুঝিয়ে দেবে কেন এই সমস্যাটি হচ্ছে। শুধু কী ভুল তাই নয়, ভুলের কারণটিও সে জানাবে।
  • ধাপ ৪: সমাধান পান — এআই আপনাকে একটি সুনির্দিষ্ট সমাধান দেবে। অনেক সময় সে পুরো কোডটিই ঠিক করে দেয়।
  • ধাপ ৫: যাচাই করুন — সমাধানটি বুঝে নিয়ে আপনার কোডে অ্যাপ্লাই করুন এবং টেস্ট করে দেখুন কাজ করছে কি না।

সবচেয়ে বড় সুবিধা হলো: এআই শুধু আপনার বাগ বা এরর ঠিক করে দেয় না, এটি আপনাকে শিক্ষা দেয় কেন সেই সমস্যাটি হয়েছিল।

কীভাবে এআই-কে সঠিক তথ্য দেবেন?

এআই-এর মাধ্যমে ডিবাগ করার সময় সবচেয়ে বড় ভুল হলো পর্যাপ্ত তথ্য না দেওয়া। শুধু "আমার কোড কাজ করছে না" বলাটা অনেকটা মেকানিককে ফোন করে "আমার গাড়ি চলছে না" বলার মতো — তাকে গাড়িটি দেখাতে হবে।

আপনার যা যা যুক্ত করা উচিত:

  • পুরো এরর মেসেজ — শুধু শেষ লাইন নয়, পুরো স্ট্যাক ট্রেসি দিন। এর মধ্যেই লুকিয়ে থাকে ভুলটি ঠিক কোথায় জন্মেছে তার ক্লু।
  • প্রাসঙ্গিক কোড — যে ব্লকে এরর দেখাচ্ছে তার ওপরের এবং নিচের কয়েক লাইনসহ কোড দিন।
  • আপনি কী আশা করেছিলেন — "আমি আশা করেছিলাম এটি ইউজারদের একটি লিস্ট দেবে" — এটি এআই-কে আপনার উদ্দেশ্য বুঝতে সাহায্য করে।
  • আসলে কী হয়েছে — "এর বদলে এটি একটি খালি লিস্ট দিচ্ছে" বা "এই এরর দিয়ে ক্রাশ করছে।"
  • আপনি অলরেডি কী চেষ্টা করেছেন — এটি এআই-কে এমন কিছু সাজেস্ট করতে বাধা দেবে যা আপনি আগেই চেক করে দেখেছেন।

এটিকে চিকিৎসকের কাছে যাওয়ার মতো ভাবুন: আপনি যত বেশি লক্ষন বলবেন, ডায়াগনোসিস তত ভালো হবে।

এআই যেসব ডিবাগিংয়ে দক্ষ

এআই নিচের সমস্যাগুলো খুঁজে পেতে বিশেষভাবে পারদর্শী:

  • টাইপ এরর (Type errors) — "Cannot read property of undefined" এর মতো সমস্যাগুলো এআই নিমিষেই ধরে ফেলে।
  • Async/await বাগ — `await` দিতে ভুলে যাওয়া বা প্রমিজ চেইনিংয়ের ভুল।
  • অফ-বাই-ওয়ান (Off-by-one) ভুল — লুপ বা অ্যারের ইনডেক্সিংয়ে ১ কম-বেশি হওয়ার ভুল।
  • লজিক এরর — যখন কোড ঠিকঠাক চলে কিন্তু রেজাল্ট ভুল আসে, এআই তখন লজিকগুলো ধাপে ধাপে যাচাই করে ভুল খুঁজে দেয়।

বাস্তব ক্ষেত্রে এআই ডিবাগিং

# ===== THE BUGGY CODE =====
# A student writes this function to calculate average grades
def calculate_average(grades):
"""Calculate the average of a list of grades."""
total = 0
for grade in grades:
total += grade
average = total / len(grades) # Bug: crashes if grades is empty!
return round(average, 2)
def get_letter_grade(score):
"""Convert numeric score to letter grade."""
if score >= 90:
return 'A'
elif score >= 80:
return 'B'
elif score >= 70:
return 'C'
elif score >= 60:
return 'D'
else:
return 'F'
# Test with normal data - works fine!
print("Test 1:", calculate_average([85, 92, 78, 95, 88]))
print("Grade:", get_letter_grade(calculate_average([85, 92, 78, 95, 88])))
# Test with empty list - BUG!
try:
print("Test 2:", calculate_average([]))
except ZeroDivisionError as e:
print(f"BUG! Error: {e}")
print("AI says: 'You're dividing by len(grades), but the list is")
print("empty so len(grades) is 0. Division by zero!'")
# ===== THE AI-SUGGESTED FIX =====
def calculate_average_fixed(grades):
"""Calculate the average of a list of grades (AI-fixed)."""
if not grades: # AI fix: handle empty list
return 0.0
total = sum(grades) # AI tip: use built-in sum()
return round(total / len(grades), 2)
print("\nFixed version:")
print("Test 1:", calculate_average_fixed([85, 92, 78, 95, 88]))
print("Test 2:", calculate_average_fixed([])) # No crash!
print("Test 3:", calculate_average_fixed([100])) # Edge case
Output
এরর: division by zero
এআই বলছে: 'আপনি len(grades) দিয়ে ভাগ করছেন, কিন্তু
লিস্টটি খালি হওয়ায় len(grades) হলো ০। ০ দিয়ে ভাগ করা সম্ভব নয়!'

সংশোধিত ভার্সন:
Test: 0.0
Note: এআই ডিবাগিং কখন ব্যর্থ হতে পারে: এআই এমন সব সমস্যা ধরতে হিমশিম খায় যেখানে রান-টাইম প্রেক্ষাপট দরকার হয় — যেমন মাল্টি-থ্রেডেড কোড, এনভায়রনমেন্ট-নির্দিষ্ট সমস্যা (আমার কম্পিউটারে চলে কিন্তু সার্ভারে চলেনা!) বা বিশাল স্কেলে পারফরম্যান্স সমস্যা। এসব ক্ষেত্রে এআই আপনাকে হয়তো ধারণা দিতে পারবে, কিন্তু আপনাকে প্রথাগত ডিবাগিং টুলস (যেমন ব্রেকপয়েন্ট বা লগ) ব্যবহার করতেই হবে।

এআই ডিবাগিংয়ের কিছু কার্যকর টিপস

  • রবার ডাক (Rubber Duck) পদ্ধতি: এআই-কে আপনার সমস্যাটি ধাপে ধাপে বুঝিয়ে বলুন। অনেক সময় সমস্যাটি ব্যাখ্যা করতে গিয়েই আপনি নিজে সমাধান পেয়ে যাবেন।
  • শুধু সমাধান নয়, 'কেন' তা জিজ্ঞেস করুন: "এই কোডটি ঠিক করো" না বলে জিজ্ঞেস করুন "কেন এই এররটি হচ্ছে তা ব্যাখ্যা করো।" এতে আপনার শেখা হবে।
  • স্ট্যাক ট্রেস (Stack trace) শেয়ার করুন: স্ট্যাক ট্রেস হলো একটি ম্যাপের মতো যা দেখায় ঠিক কোথায় এবং কেন ভুলটি ঘটেছে। এটি সব সময় এআই-কে দিন।
  • প্যাটার্ন থেকে শিখুন: যদি এআই আপনার একই ধরণের ভুল বারবার ঠিক করে দেয় (যেমন- নাল চেক বা অ্যাসিনক্রোনাস সমস্যা), তবে সেই প্যাটার্নটি ভালো করে বুঝে নিন। লক্ষ্য হওয়া উচিত যেন ভবিষ্যতে এআই-এর ওপর আপনার নির্ভরতা কমে।
Challenge

ছোট কুইজ

এআই-কে ডিবাগ করতে বলার সময় সবচেয়ে বড় ভুল কোনটি?

পড়া চালিয়ে যান