سود:
- امکان نوشتن توابع، کلاسها و ماژولها به هوش مصنوعی با تعاریف واضح ورودی-خروجی و محدودیتها
- امکان استفاده از هوش مصنوعی به عنوان شریک برنامه نویسی جفت و پیشرفت گام به گام، در تکه های کوچک و قابل تایید
- امکان تشخیص خطاهای منطقی و حاشیه ای با کامپایل کد تولید شده توسط هوش مصنوعی و اجرای آن با مثال های کوچک
برنامهنویسی جفتی زمانی است که دو توسعهدهنده روی یک مشکل کار میکنند، یکی نوشتن و دیگری اصلاح میشود. کدنویسی با هوش مصنوعی نسخه دیجیتالی همین رابطه است: شما جهت، محدودیت ها و معیارهای پذیرش را تعیین می کنید. هوش مصنوعی پیش نویس سریع تولید می کند. شما هر مرحله را با کامپایل و آزمایش آن تأیید می کنید. بزرگترین دام در اینجا این است که به هوش مصنوعی بگویید "این برنامه را از ابتدا تا انتها برای من بنویس" و کورکورانه یک بلوک 200 خطی را بپذیرید. برنامه نویسی جفت خوب در مراحل کوچک انجام می شود: هر مرحله باید قابل درک، آزمایش پذیر و برگشت پذیر باشد.
در این واحد شما یاد خواهید گرفت که چگونه توابع، کلاس ها و ماژول ها را با یک قرارداد ورودی-خروجی واضح چاپ کنید. چگونه گام به گام هوش مصنوعی را هدایت کنیم. و خواهیم دید که چگونه با اجرای کدی که با مثال های کوچک تولید می کند، خطاهای منطقی و حاشیه ای را پیدا کنیم. هدف سرعت نیست، بلکه سرعت تایید شده است.
مفاهیم: قرارداد ورودی-خروجی: تعریف واضحی از اینکه یک تابع چه ورودی می گیرد و چه خروجی و رفتار خطایی را وعده می دهد. Edge case: ورودی که معمولی نیست اما در واقع می تواند رخ دهد (خالی، صفر، منفی، بسیار بزرگ، تهی). توسعه تدریجی: ادامه با قطعات کوچک و کار و اعتبارسنجی هر مرحله.
چاپ کد با قرارداد نت
اساس کد کیفیت این است که قبل از شروع کار دقیقاً "آنچه می خواهید" را تعریف کنید. هنگام نوشتن یک تابع برای هوش مصنوعی، پنج چیز را به آن بدهید: زبان و نسخه، انواع و معانی ورودی، خروجی، شرایط خطا، و محدودیتها (عملکرد، ممنوعیت کتابخانه خارجی، سبک). این مانع از حدس زدن هوش مصنوعی می شود.
- قرارداد را بنویسید ورودی، خروجی، خطا، محدودیت.
- یک واحد کوچک بخواهید. عملکردی با یک مسئولیت واحد؛ این یک ماژول بزرگ نیست.
- درخواست یک بلوک آزمایشی چند اجرا/آزمایش نمونه در کنار کد اضافه کنید.
- کامپایل و اجرا کنید. آن را با موارد لبه امتحان کنید، خروجی را با چشم بررسی کنید.
- به مرحله بعد بروید. پس از تایید یک قطعه، بر روی آن بسازید.
دستور تابع قراردادی: "یک تابع برای TypeScript 5 بنویسید. هدف: محاسبه مقدار کل اقلام در یک سبد خرید. ورودی: {قیمت: تعداد، مقدار: عدد [] آرایه. خروجی: عدد (کل). قوانین: در صورت منفی بودن مقدار یا قیمت، خطا را پرتاب کنید؛ برای آرایه خالی 0 برگردانید. برای آرایه اعشاری خالی 0 را برگردانید. برای اعشار اعشاری از کتابخانه خارجی استفاده نکنید. مقدار گرد را به 2 عدد اعشار آزمایش کنید. (معمولی، خالی، کمیت منفی، قیمت اعشاری، تک مورد).
هدایت هوش مصنوعی به صورت جفت
پیشرفت خوب در برنامه نویسی زوجی به جای یک درخواست بزرگ، یک گفتگو است. ابتدا اسکلت را درخواست کنید و آن را اجرا کنید. سپس یک حالت لبه اضافه کنید. سپس یک باگ را برطرف کنید. این رویکرد کد را قابل درک نگه می دارد و شما را در هر مرحله تحت کنترل قرار می دهد.
اعلان پیشرفت افزایشی: "ما خوانندهای مینویسیم که یک فایل CSV را میخواند و خطوط را به یک شی تبدیل میکند. بیایید گام به گام پیش برویم، بدون اینکه من هر مرحله را تایید کنم، به مرحله بعدی میرویم. مرحله 1: فقط اسکلتی را بنویسید که فایل را به خطوط تقسیم میکند و خط سرصفحه را جدا میکند. هنوز تبدیل نوع را توضیح ندهید یا دست خطا نگه دارید."
اعلان کد را توضیح و توجیه کنید: "عملی را که نوشتید، نه خط به خط، بلکه تصمیم به تصمیم توضیح دهید: کدام تصمیم طراحی را گرفتید و چرا، کدام لبه مورد را مدیریت کردید و چگونه، کدام موارد را عمداً حذف کردید؟ 3 فرض را در کد فهرست کنید که نباید آنها را از دست بدهم."
نکته: کد تولید شده توسط هوش مصنوعی را بدون درک آن نپذیرید. "این را برای من توضیح دهید، چه فرضیاتی داشتید؟" این سوال هم خطاهای پنهان را نشان می دهد و هم به شما امکان می دهد از آن کد دفاع کنید، زیرا مسئولیت کد همچنان بر عهده شماست. قرار دادن کدی که درک نمی کنید در تولید مانند ارسال قرارداد بدون امضای آن است.
اعلان ضعیف / اعلان قوی
ضعیف: «یک تابع مرتبسازی بنویسید.» (نتیجه: کدام زبان، چه چیزی مرتب میشود، آیا پایدار است، محدودیت عملکرد چیست، کدی که مبهم است و احتمالاً با شرایط مطابقت ندارد.)STRONG: «برای جاوا 17، روشی بنویسید که یک شی List<Employee> را ابتدا بر اساس دپارتمان مرتب میکند (الفبایی)، سپس بر اساس حقوق و دستمزد جدید (نسب لیست، اجازه دهید PL). بخش آخر می آید پیچیدگی روش را در خط نظر توضیح دهید.
اعلان قدرتمند؛ شامل معیار مرتبسازی (دو سطحی)، قانون عوارض جانبی (جایگزینی اصلی)، رفتار پوچ و انتظار آزمون است. بدون این جزئیات، هوش مصنوعی یک راه حل قابل قبول اما نادرست تولید می کند. به عنوان مثال ممکن است لیست اصلی را خراب کند و این منجر به یک خطای خاموش در جای دیگر می شود.
اعتبار سنجی با موارد لبه و نمونه های کوچک
کدی که در سناریوی شاد کار می کند، کد صحیحی نیست. آگاهانه هر تابع تولید شده را مجبور کنید:
نوع مورد لبه
ورودی نمونه
رفتار مورد انتظار
ورودی خالی
آرایه/رشته خالی
خطا نیست، نتیجه خالی منطقی است
صفر/منفی
0، -1
رفتار تعریف شده و صحیح
ارزش عالی
میلیون ها رکورد
کنترل سرریز/عملکرد
تهی/تعریف نشده
فضای از دست رفته
خطای کنترل شده یا پیش فرض
تکراری / غیر معمول
تکراری، ترتیب معکوس
نتیجه درست
موارد کوچک
مورد 1 - خطای گرد کردن بی صدا. هوش مصنوعی تابعی می نویسد که پول را با انواع اعشاری (شناور) جمع آوری می کند. 0.1 + 0.2 0.30000000000000004 را می دهد. این خطا زمانی حل می شود که مهندس قانون "دو رقم را گرد کنید و از پنی های کامل استفاده کنید" را اضافه می کند. یک قانون 3 خطی از هزاران پنی اختلاف در آشتی ماهانه جلوگیری می کند.
مورد 2 - تله عوارض جانبی. هوش مصنوعی روشی را می نویسد که یک لیست را مرتب می کند، اما لیست اصلی را در جای خود تغییر می دهد. رفتار غیرمنتظره ای رخ می دهد زیرا ماژول دیگری از همان لیست استفاده می کند. اگر محدودیت "تغییر اصلی" در اعلان بود، خطا هرگز رخ نمی داد. گرفتار بررسی کد می شود و از 2 ساعت اشکال زدایی جلوگیری می کند.
مورد 3 - درآمد گام به گام. یک توسعه دهنده یک ماژول واردات 150 خطی را به یکباره چاپ می کند. وقتی اشتباهی را می یابد، نمی تواند پیدا کند که از کجا آمده است. توسعه دهنده دیگری همان کار را به 5 مرحله کوچک تقسیم می کند، هر مرحله را در 2 دقیقه آزمایش می کند و بلافاصله در مرحله 3 خطا را می گیرد.
اشتباهات رایج
- چاپ بلوک های بزرگ در یک درخواست. کد مخاطره آمیزی که درک و اشکال زدایی آن دشوار است متولد می شود.
- درخواست کد بدون قرارداد. اگر خطای ورودی-خروجی مبهم باشد، هوش مصنوعی حدس می زند و اشتباه می کند.
- فقط آزمایش سناریوی شاد اگر ورودی خالی، تهی، منفی و بزرگ امتحان نشود، خطا به تولید سپرده می شود.
- پذیرش بدون درک کدی که فاش نمی کنید بدهی است که نمی توانید از آن دفاع کنید.
- نادیده گرفتن انواع حساس مانند عوارض جانبی و پول / تاریخ. پول شناور با تاریخ بی انتها یک منبع کلاسیک خطا است.
به طور خلاصه
نوشتن کد با هوش مصنوعی برنامهنویسی جفتی منظم است: قرارداد واضح، مراحل کوچک، ساخت و آزمایش در هر مرحله. دادن کوارتت ورودی-خروجی-خطا-محدودیت از ابتدا کیفیت کد را مشخص می کند. توضیح کدی که تولید می کند و اجباری کردن آن با موارد لبه، خطاهای پنهان شده در سناریوی شاد را آشکار می کند. منبع سرعت پذیرش کورکورانه نیست. پیش نویس سریع به علاوه تأیید سریع است.
وظیفه کاربردی
یک تابع کوچک اما واقعی (مثلاً کل سبد، تفاوت تاریخ، تجزیه متن) را انتخاب کنید. با استفاده از دستور تابع قراردادی چاپ کنید. حداقل 5 سناریو تست در کنار آن اضافه کنید. کد را اجرا کنید و 5 مورد لبه را آگاهانه با استفاده از جدول به عنوان راهنما امتحان کنید. حداقل یک اشکال را در یک مورد لبه پیدا کنید (اگر نه، یک ورودی جدید طراحی کنید تا عملکرد را مجبور کند)، آن را با هوش مصنوعی برطرف کنید، و با آزمایش مجدد بررسی کنید که آیا اصلاح کار کرده است.
چک لیست
- [ ] من قراردادی نوشتم که شامل ورودی، خروجی، خطاها و محدودیتها است.
- [ ] من کد را در مراحل کوچک به جای یک بلوک بزرگ تولید کردم.
- [ ] من یک بلوک اجرای تست/نمونه در کنار کد اضافه کردم.
- [ ] من آگاهانه حداقل 5 مورد لبه را آزمایش کرده ام.
- [ ] من کد را برای هوش مصنوعی توضیح دادم و مفروضات آن را بررسی کردم.
- [ ] من خطای یافت شده را تصحیح کردم و با آزمایش مجدد، رفع آن را تأیید کردم.