یونٹ 3 / 12

AI کے ساتھ کوڈنگ اور جوڑی پروگرامنگ

فائدہ:

  • واضح ان پٹ آؤٹ پٹ اور رکاوٹ کی تعریف کے ساتھ AI میں فنکشنز، کلاسز اور ماڈیول لکھنے کی صلاحیت
  • AI کو جوڑے کے پروگرامنگ پارٹنر کے طور پر استعمال کرنے کی صلاحیت اور قدم بہ قدم، چھوٹے، قابل تصدیق ٹکڑوں میں
  • AI کے ذریعہ تیار کردہ کوڈ کو مرتب کرکے اور اسے چھوٹی مثالوں کے ساتھ چلا کر منطق اور ایج کیس کی غلطیوں کو پکڑنے کی صلاحیت

جوڑی پروگرامنگ اس وقت ہوتی ہے جب دو ڈویلپرز ایک ہی مسئلہ پر کام کرتے ہیں، ایک تحریر اور دوسرا نظر ثانی کے ساتھ۔ AI کے ساتھ کوڈنگ اسی تعلق کا ڈیجیٹل ورژن ہے: آپ سمت، رکاوٹیں اور قبولیت کا معیار طے کرتے ہیں۔ AI فوری مسودہ تیار کرتا ہے۔ آپ ہر قدم کو مرتب کرکے اس کی جانچ کرتے ہیں۔ یہاں سب سے بڑا ٹریپ اے آئی کو بتانا ہے کہ "مجھے یہ ایپلیکیشن شروع سے آخر تک لکھیں" اور 200 لائن بلاک کو آنکھ بند کر کے قبول کریں۔ اچھی جوڑی پروگرامنگ چھوٹے قدموں میں آگے بڑھتی ہے: ہر قدم قابل فہم، قابل آزمائش اور الٹ جانے والا ہونا چاہیے۔

اس یونٹ میں آپ سیکھیں گے کہ ایک واضح ان پٹ آؤٹ پٹ کنٹریکٹ کے ساتھ فنکشنز، کلاسز اور ماڈیول کیسے پرنٹ کرنا ہے۔ قدم بہ قدم AI کی رہنمائی کیسے کریں؛ اور ہم دیکھیں گے کہ چھوٹی مثالوں کے ساتھ تیار کردہ کوڈ کو چلا کر منطق اور ایج کیس کی غلطیوں کو کیسے پکڑا جائے۔ مقصد رفتار نہیں بلکہ تصدیق شدہ رفتار ہے۔

تصورات: ان پٹ آؤٹ پٹ معاہدہ: ایک واضح تعریف کہ ایک فنکشن کیا ان پٹ لیتا ہے اور یہ کس آؤٹ پٹ اور غلطی کے رویے کا وعدہ کرتا ہے۔ ایج کیس: ان پٹ جو عام نہیں ہے لیکن حقیقت میں ہو سکتا ہے (خالی، صفر، منفی، بہت بڑا، کالعدم)۔ بڑھتی ہوئی ترقی: چھوٹے، کام کرنے والے ٹکڑوں کے ساتھ آگے بڑھنا اور ہر قدم کی توثیق کرنا۔

نیٹ کنٹریکٹ کے ساتھ پرنٹنگ کوڈ

کوالٹی کوڈ کی بنیاد کام شروع کرنے سے پہلے بالکل "آپ کیا چاہتے ہیں" کی وضاحت کرنا ہے۔ AI کو فنکشن لکھتے وقت، اسے پانچ چیزیں دیں: زبان اور ورژن، ان پٹ کی اقسام اور معنی، آؤٹ پٹ، خرابی کی شرائط، اور رکاوٹیں (کارکردگی، بیرونی لائبریری پابندی، انداز)۔ یہ AI کو اندازہ لگانے سے روکتا ہے۔

  1. معاہدہ لکھیں۔ ان پٹ، آؤٹ پٹ، غلطی، رکاوٹ۔
  2. ایک چھوٹا یونٹ طلب کریں۔ ایک ذمہ داری کے ساتھ ایک تقریب؛ یہ ایک بہت بڑا ماڈیول نہیں ہے۔
  3. ٹیسٹ بلاک کی درخواست کریں۔ کوڈ کے آگے چند نمونے رنز/ٹیسٹ شامل کریں۔
  4. مرتب کریں اور چلائیں۔ اسے ایج کیسز کے ساتھ آزمائیں، آنکھ سے آؤٹ پٹ کی تصدیق کریں۔
  5. اگلے مرحلے پر جائیں۔ ایک بار جب ایک ٹکڑے کی تصدیق ہوجائے تو اس پر تعمیر کریں۔

کنٹریکٹڈ فنکشن پرامپٹ: "TypeScript 5 کے لیے ایک فنکشن لکھیں۔ مقصد: شاپنگ کارٹ میں آئٹمز کی کل مقدار کا حساب لگائیں۔ ان پٹ: { price: number, quantity: number [] array. آؤٹ پٹ: نمبر (کل) رولز: تھرو ایرر اگر مقدار یا قیمت منفی ہے؛ خالی جگہوں کے لیے 0 کو واپس کریں۔ بیرونی لائبریری کا استعمال نہ کریں فنکشن کے نیچے 5 ٹیسٹ کیسز (عام، خالی، منفی مقدار، اعشاریہ قیمت، واحد آئٹم)۔

ایک جوڑے کے طور پر AI کی رہنمائی کرنا

جوڑی پروگرامنگ میں اچھی پیش رفت ایک بڑی درخواست کے بجائے ایک مکالمہ ہے۔ سب سے پہلے، کنکال کی درخواست کریں اور اسے چلائیں؛ پھر ایک کنارے کی حالت شامل کریں؛ پھر ایک بگ طے کریں۔ یہ نقطہ نظر کوڈ کو قابل فہم رکھتا ہے اور ہر قدم پر آپ کو کنٹرول میں رکھتا ہے۔

اضافی پیش رفت کا اشارہ: "ہم ایک ایسا قاری لکھیں گے جو ایک CSV فائل کو پڑھتا ہے اور لائنوں کو ایک آبجیکٹ میں تبدیل کرتا ہے۔ آئیے ہر قدم کی تصدیق کیے بغیر، STEP BY STEP، اگلے مرحلے پر آگے بڑھتے ہیں۔ مرحلہ 1: صرف وہ ڈھانچہ لکھیں جو فائل کو لائنوں میں تقسیم کرتا ہے اور ہیڈر لائن کو الگ کرتا ہے۔ ابھی تک اس میں ہاتھ کی وضاحت نہ کریں، یا ہاتھ کی مختصر وضاحت نہ کریں۔"

کوڈ پرامپٹ کی وضاحت اور جواز پیش کریں: "اس فنکشن کی وضاحت کریں جو آپ نے ابھی لکھا ہے، لائن بہ لائن نہیں، بلکہ فیصلہ کے ذریعے: آپ نے کون سا ڈیزائن فیصلہ کیا اور کیوں، آپ نے کون سے ایج کیس کو ہینڈل کیا اور کس طرح، آپ نے جان بوجھ کر کن کیسز کو خارج کیا؟ کوڈ میں 3 مفروضوں کی فہرست بنائیں جنہیں مجھے یاد نہیں کرنا چاہیے۔"

مشورہ: AI سے تیار کردہ کوڈ کو سمجھے بغیر اسے قبول نہ کریں۔ ’’یہ مجھے سمجھاؤ، تم نے کیا مفروضے لگائے؟‘‘ سوال دونوں پوشیدہ غلطیوں کو ظاہر کرتا ہے اور آپ کو اس کوڈ کا دفاع کرنے کی اجازت دیتا ہے، کیونکہ کوڈ آپ کی ذمہ داری ہے۔ پروڈکشن میں آپ کو سمجھ میں نہ آنے والا کوڈ ڈالنا ایسا ہے جیسے کسی معاہدے پر دستخط کیے بغیر بھیجنا۔

کمزور پرامپٹ / مضبوط اشارہ

کمزور: "چھانٹنے کا فنکشن لکھیں۔" (نتیجہ: کون سی زبان، کس چیز کو ترتیب دیا جا رہا ہے، کیا یہ مستحکم ہے، کارکردگی کی رکاوٹ کیا ہے، کوڈ جو مبہم ہے اور شاید ضرورت کے مطابق نہیں ہے۔) مضبوط:"جاوا 17 کے لیے، ایک ایسا طریقہ لکھیں جو ایک فہرست<ملازم> آبجیکٹ کو پہلے محکمے کے لحاظ سے ترتیب دے (حروف تہجی کے مطابق)، پھر اصل NPLACE کو ترتیب دیں۔ فہرست کو واپس کریں، null ڈپارٹمنٹ کو 4 نمونوں کے ساتھ طریقہ کی پیچیدگی کی وضاحت کریں۔"

طاقتور فوری؛ چھانٹنے کا معیار (دو سطحی)، ضمنی اثر کا اصول (اصل کی جگہ)، کالعدم رویہ، اور ٹیسٹ کی توقع شامل ہے۔ ان تفصیلات کے بغیر، AI ایک قابل فہم لیکن غلط حل تیار کرتا ہے۔ مثال کے طور پر یہ اصل فہرست کو خراب کر سکتا ہے اور یہ کہیں اور خاموش غلطی کا باعث بنے گا۔

ایج کیسز اور چھوٹے نمونوں کے ساتھ توثیق

کوڈ جو خوش کن منظر نامے میں کام کرتا ہے وہ صحیح کوڈ نہیں ہے۔ تیار کردہ ہر فنکشن کو شعوری طور پر مجبور کریں:

ایج کیس کی قسم

نمونہ ان پٹ

متوقع رویہ

خالی ان پٹ

خالی صف/سٹرنگ

غلطی نہیں، منطقی خالی نتیجہ

صفر/منفی

0، -1

متعین اور درست طرز عمل

عظیم قدر

لاکھوں ریکارڈ

اوور فلو/کارکردگی کنٹرول

null/غیر متعینہ

لاپتہ جگہ

کنٹرول شدہ غلطی یا ڈیفالٹ

ڈپلیکیٹ/غیر معمولی

مکرر، الٹا ترتیب

درست نتیجہ

چھوٹے کیسز

کیس 1 - خاموش راؤنڈنگ کی خرابی۔ AI ایک فنکشن لکھتا ہے جو اعشاریہ (فلوٹ) اقسام کے ساتھ رقم اکٹھا کرتا ہے۔ 0.1 + 0.2 0.30000000000000004 دیتا ہے۔ غلطی اس وقت حل ہو جاتی ہے جب انجینئر "2 ہندسوں تک گول کریں اور پورے پیسے استعمال کریں" کا قاعدہ شامل کرتا ہے۔ 3 لائن کا قاعدہ ماہانہ مفاہمت میں ہزاروں پیسوں کے فرق کو روکتا ہے۔

کیس 2 - ضمنی اثرات کا جال۔ AI ایک ایسا طریقہ لکھتا ہے جو فہرست کو "سانٹ" کرتا ہے، لیکن اصل فہرست کو اپنی جگہ پر تبدیل کرتا ہے۔ غیر متوقع رویہ اس لیے ہوتا ہے کیونکہ ایک اور ماڈیول اسی فہرست کو استعمال کرتا ہے۔ اگر "اصلی تبدیلی" کی رکاوٹ پرامپٹ میں ہوتی، تو غلطی کبھی نہیں ہوتی۔ کوڈ کے جائزے میں پھنس جاتا ہے اور 2 گھنٹے کی ڈیبگنگ کو روکتا ہے۔

کیس 3 - مرحلہ وار آمدنی۔ ایک ڈویلپر ایک بار میں 150 لائن امپورٹ ماڈیول پرنٹ کرتا ہے۔ جب اسے کوئی غلطی نظر آتی ہے تو وہ یہ نہیں ڈھونڈ سکتا کہ یہ کہاں سے آئی ہے۔ ایک اور ڈویلپر اسی کام کو 5 چھوٹے مراحل میں تقسیم کرتا ہے، ہر قدم کو 2 منٹ میں ٹیسٹ کرتا ہے اور تیسرے مرحلے میں فوری طور پر غلطی پکڑتا ہے۔

عام غلطیاں

  • ایک درخواست میں بڑے بلاکس پرنٹ کرنا۔ خطرناک کوڈ جسے سمجھنا مشکل ہے اور ڈیبگ پیدا ہوتا ہے۔
  • کنٹریکٹ دیے بغیر کوڈ مانگنا۔ اگر ان پٹ آؤٹ پٹ ایرر مبہم ہے تو AI اندازہ لگائے گا اور غلط ہوگا۔
  • صرف خوش منظر کی جانچ کر رہا ہے۔ اگر خالی، کالعدم، منفی اور بڑے ان پٹ کو آزمایا نہیں جاتا ہے، تو خرابی پیداوار پر چھوڑ دی جاتی ہے۔
  • سمجھے بغیر قبول کرنا۔ جو کوڈ آپ ظاہر نہیں کرتے وہ ایک قرض ہے جس کا آپ دفاع نہیں کر سکتے۔
  • ضمنی اثرات اور رقم/تاریخ جیسی حساس اقسام کو نظر انداز کرنا۔ بے وقت تاریخ کے ساتھ رقم کو فلوٹ کرنا غلطی کا ایک بہترین ذریعہ ہے۔

خلاصہ میں

AI کے ساتھ کوڈ لکھنا نظم و ضبط کے ساتھ جوڑا پروگرامنگ ہے: واضح معاہدہ، چھوٹے قدم، ہر قدم پر تعمیر اور جانچ۔ شروع سے ان پٹ-آؤٹ پٹ-ایرر-کنسٹرائنٹ کوارٹیٹ دینا کوڈ کے معیار کا تعین کرتا ہے۔ اس کے تیار کردہ کوڈ کی وضاحت کرنا اور اسے ایج کیسز کے ساتھ زبردستی کرنا خوشگوار منظر نامے میں چھپی ہوئی غلطیاں منظر عام پر لاتا ہے۔ رفتار کا ذریعہ اندھی قبولیت نہیں ہے۔ فوری مسودہ اور فوری تصدیق ہے۔

درخواست کا کام

ایک چھوٹا لیکن حقیقی فنکشن کا انتخاب کریں (مثلاً ٹوکری کل، تاریخ کا فرق، متن پارس کرنا)۔ معاہدہ شدہ فنکشن پرامپٹ کا استعمال کرتے ہوئے پرنٹ کریں؛ اس کے آگے کم از کم 5 ٹیسٹ منظرنامے شامل کریں۔ کوڈ کو چلائیں اور ٹیبل کو بطور گائیڈ استعمال کرتے ہوئے شعوری طور پر 5 ایج کیسز آزمائیں۔ کم از کم ایک ایج کیس میں ایک بگ تلاش کریں (اگر نہیں، تو فنکشن کو زبردستی کرنے کے لیے ایک نیا ان پٹ ڈیزائن کریں)، اسے AI کے ساتھ ٹھیک کریں، اور دوبارہ جانچ کر کے تصدیق کریں کہ فکس نے کام کیا۔

چیک لسٹ

  • میں نے ایک معاہدہ لکھا جس میں ان پٹ، آؤٹ پٹ، غلطیاں اور رکاوٹیں شامل ہیں۔
  • میں نے ایک بڑے بلاک کے بجائے چھوٹے قدموں میں کوڈ تیار کیا۔
  • میں نے کوڈ کے آگے ایک ٹیسٹ/نمونہ رن بلاک شامل کیا۔
  • میں نے شعوری طور پر کم از کم 5 ایج کیسز کا تجربہ کیا ہے۔
  • [ ] میں نے AI کو کوڈ کی وضاحت کی اور اس کے مفروضوں کا جائزہ لیا۔
  • میں نے پائی جانے والی غلطی کو درست کیا اور دوبارہ جانچ کر کے درست کرنے کی تصدیق کی۔