برنامه نویسی

کدنویسی با هوش مصنوعی

مدل های امروز کد کار کن می نویسند، ولی کد کار کن با کد درست یکی نیست و فاصله این دو همان چیزی است که به شما می ماند. کاری که واقعا حرفه ای است این نیست که بهتر بپرسید؛ این است که گردش کارتان طوری باشد که هر تکه کد پیش از رسیدن به شاخه اصلی، کوچک و قابل بازبینی و آزمایش شده باشد.

  • درس ۱۳ از ۱۴
  • میانی
  • رایگان، بدون ثبت نام

کسانی که هر روز از این ابزارها استفاده می کنند، درباره کارهای پیچیده چه می گویند

نظرسنجی توسعه دهندگان استک اورفلو ۲۰۲۵، پرسش «کارهای پیچیده»، ۳۳۲۳۰ پاسخ
  1. ۲۵.۲٪
  2. ۱۴.۱٪
  3. ۲۲٪
  4. ۱۷.۶٪
  5. ۱۶.۸٪
  • خیلی خوب ۴.۴٪
  • خوب ولی نه عالی ۲۵.۲٪
  • نه خوب نه بد ۱۴.۱٪
  • بد ۲۲٪
  • خیلی ضعیف ۱۷.۶٪
  • برای کار پیچیده استفاده نمی کنم یا نمی دانم ۱۶.۸٪

این نظر آدم هاست و نه اندازه گیری کیفیت کد؛ می گوید توسعه دهندگان چه تجربه ای دارند. سطل آخر روی مقیاس خوب تا بد نیست و رنگش هم برای همین جداست.

آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.

مدل ها در کدنویسی دقیقا در چه کاری خوب اند؟

یک الگوی روشن هست و اگر آن را ببینید، بقیه این درس ساده می شود: مدل ها در کاری خوب اند که شکلش تکراری و قضاوتش کم است. هر چه کار به تصمیم های خاص پروژه شما نزدیک تر شود، کیفیت افت می کند، و افتش هم بی سر و صداست چون کد همچنان اجرا می شود.

کارهایی که واقعا خوب انجام می شوند: نوشتن کدی که هزار بار مشابهش نوشته شده، مثل خواندن یک فایل، اعتبارسنجی یک فرم، یا یک درخواست شبکه با مدیریت خطا. ترجمه از زبانی به زبان دیگر. تبدیل داده از یک شکل به شکل دیگر. نوشتن تست برای تابعی که خودتان نوشته اید. توضیح دادن کدی که کس دیگری نوشته و شما با آن غریبه اید. و کاری که کمتر کسی از آن استفاده می کند و بازده اش از همه بیشتر است: نقد کردن کدی که خودتان نوشته اید.

کارهایی که کم می آورند هم الگوی مشترکی دارند: هر جا جواب درست به چیزی وابسته است که در متن گفتگو نیست. تصمیم های معماری که به مقیاس و تیم شما ربط دارند. کدی که باید با قراردادهای نانوشته یک پروژه قدیمی جور در بیاید. هر چیزی که به آخرین تغییرات یک کتابخانه وابسته باشد. و امنیت، که در بخش خطرها به آن برمی گردیم.

موضع ما ساده است: مدل را روی کاری بگذارید که خودتان می توانستید انجام دهید ولی حوصله اش را ندارید، نه روی کاری که خودتان بلد نیستید. چون در حالت اول می توانید خروجی را قضاوت کنید و در حالت دوم فقط می توانید امیدوار باشید.

توسعه دهنده هایی که هر روز از این ابزارها استفاده می کنند چه می گویند؟

به جای حدس زدن، به بزرگ ترین نظرسنجی عمومی این حوزه نگاه کنیم. نظرسنجی سالانه توسعه دهندگان استک اورفلو در سال ۲۰۲۵ می گوید ۸۴ درصد پاسخ دهندگان از ابزارهای هوش مصنوعی استفاده می کنند یا قصد دارند، و ۵۱ درصد توسعه دهندگان حرفه ای هر روز از آنها استفاده می کنند. پس بحث «آیا استفاده کنیم» تمام شده است.

ولی همان نظرسنجی چیز دومی هم می گوید که کمتر نقل می شود. وقتی از همین آدم ها پرسیده شد ابزارهایی که استفاده می کنند کارهای پیچیده را چقدر خوب انجام می دهند، ۴.۴ درصد گفتند خیلی خوب و ۲۵.۲ درصد گفتند خوب ولی نه عالی. در مقابل، ۲۲ درصد گفتند بد و ۱۷.۶ درصد گفتند خیلی ضعیف. ۱۴.۱ درصد نه خوب و نه بد، و ۱۶.۸ درصد گفتند برای کارهای پیچیده از این ابزارها استفاده نمی کنند یا نمی دانند. یعنی کسانی که این ابزارها را روزانه دستشان است، در کارهای پیچیده بیشتر منفی اند تا مثبت.

و عدد سومی که کل این درس را جمع می کند: بزرگ ترین شکایت، با ۶۶ درصد، «راه حل هایی که تقریبا درست اند ولی نه کاملا» بود. «تقریبا درست» بدترین حالت ممکن است. کد کاملا غلط را کامپایلر یا اولین اجرا می گیرد. کد تقریبا درست از هر دو رد می شود و ماه ها بعد در یک حالت خاص خودش را نشان می دهد.

بقیه همان فهرست شکایت ها هم ارزش خواندن دارد، چون شکل هزینه را نشان می دهد: ۴۵.۲ درصد گفتند دیباگ کردن کد تولیدشده وقت بیشتری می برد، ۲۰ درصد گفتند به توانایی حل مسئله خودشان کم اعتمادتر شده اند، و ۱۶.۳ درصد گفتند فهمیدن اینکه کد چطور و چرا کار می کند سخت است. در آن سر فهرست، فقط ۴ درصد گفتند اصلا به هیچ مشکلی برنخورده اند.

یک نکته درباره خود این عددها، چون درس صداقت هم هست: اینها نظر آدم ها است و نه اندازه گیری کیفیت کد. یعنی می گویند توسعه دهندگان چه تجربه ای دارند، نه اینکه مدل ها به طور عینی چقدر خوب اند. برای این درس همان اولی مهم است.

چه چیزی بیش از همه آزارشان می دهد

همان نظرسنجی، پرسش شکایت ها، ۳۱۴۷۶ پاسخ، چند گزینه ای
  1. راه حل هایی که تقریبا درست اند ولی نه کاملا ۶۶٪
  2. دیباگ کردن کد تولیدشده وقت بیشتری می برد ۴۵.۲٪
  3. به توانایی حل مسئله خودم کم اعتمادتر شده ام ۲۰٪
  4. فهمیدن اینکه کد چطور و چرا کار می کند سخت است ۱۶.۳٪
  5. به هیچ مشکلی برنخورده ام ۴٪

چون هر کس می توانست چند گزینه بزند، این عددها جمعشان صد نمی شود و نباید با هم جمع شوند. دو گزینه از فهرست منبع اینجا نیامده اند: «مرتب از این ابزارها استفاده نمی کنم» و «سایر»، چون هیچ کدام شکایت از خود ابزار نیستند.

کدام ابزارها، و از ایران کدامشان واقعا در دسترس اند؟

ابزارها سه شکل دارند و انتخاب بین آنها بیشتر از آنکه به مدل ربط داشته باشد، به این ربط دارد که کجا کار می کنید.

افزونه داخل ویرایشگر پیشنهاد می دهد در حالی که تایپ می کنید. گیتهاب کوپایلوت شناخته شده ترین شان است. مزیتش این است که چیزی را قطع نمی کند و ضررش این است که چون همیشه پیشنهاد می دهد، عادت می کنید بدون خواندن قبولش کنید.

گفتگوی جدا در مرورگر، مثل کلود یا جمنای. برای فکر کردن و نقد کردن و فهمیدن بهتر است تا برای نوشتن، چون کد را از متن پروژه جدا می کند و همین جدایی، شما را مجبور می کند خودتان بگویید مسئله چیست.

عامل خط فرمان یا ویرایشگر عامل دار، مثل کلود کد یا کرسر، که خودشان فایل ها را می خوانند و می نویسند. قوی ترین شکل و پرخطرترینش: وقتی ابزاری بدون اینکه هر تغییر را نشانتان بدهد ده فایل را عوض می کند، بازبینی تبدیل می شود به تنها چیزی که بین شما و یک باگ نامرئی ایستاده.

و اما دسترسی از ایران، که برای خواننده این صفحه مسئله واقعی است. اینجا یک تفاوت مهم هست که کمتر جایی گفته می شود: گیتهاب با بقیه فرق دارد. صفحه کنترل تجاری خود گیتهاب می گوید مجوزی از دفتر کنترل دارایی های خارجی خزانه داری آمریکا گرفته که خدمات ابری اش را برای توسعه دهندگان ساکن ایران پوشش می دهد، هم رایگان و هم پولی. ما همین جمله را نقل می کنیم و چیزی بیشتر از آن ادعا نمی کنیم؛ اینکه پرداخت با کارت ایرانی انجام می شود یا نه، مسئله جداگانه ای است که آزمایشش نکرده ایم و راهنمای خرید لایه اش را جدا توضیح می دهد.

در طرف مقابل، انتروپیک در صفحه کشورهای پشتیبانی شده اش ایران را ندارد، و صفحه خود گوگل درباره اپ وب جمنای فهرستی از بیش از دویست و سی کشور و منطقه می دهد که ایران در آن نیست. کرسر هم فهرست کشورهای پشتیبانی شده منتشر نکرده که ما پیدا کرده باشیم، پس درباره اش چیزی ادعا نمی کنیم؛ قیمت هایش را از صفحه خودش می شود خواند، یک طرح رایگان و طرح حرفه ای بیست دلار در ماه.

راه چهارمی هم هست که در ایران بیشتر از جاهای دیگر معنی می دهد: مدل های متن باز. وزن هایشان را می شود گرفت و روی سخت افزار خودتان یا هر ارائه دهنده ای اجرا کرد، پس مسئله دسترسی شکل دیگری پیدا می کند. کیفیتشان با مدل های بسته فاصله دارد و آن فاصله مدام عوض می شود؛ رتبه بندی به روز ما با منبع هر عدد در بهترین هوش مصنوعی برای کدنویسی است و اینجا عمدا هیچ نام نسخه ای نمی نویسیم، چون هر عددی که در یک درس بنویسیم تا سه ماه دیگر کهنه است.

گردش کاری که کیفیت را نگه می دارد: تست اول، دیف کوچک، بازبینی واقعی

سه عادت هستند که تفاوت بین کسی که با مدل سریع تر کار می کند و کسی که با مدل بدهی فنی تولید می کند را می سازند. هیچ کدام به مدل ربط ندارند و هر سه مال شمایند.

اول تست، بعد کد. پیش از اینکه از مدل پیاده سازی بخواهید، از خودتان بپرسید از کجا می فهمم این درست کار می کند. اگر جوابش را نوشتید، حالا یک معیار عینی دارید که نه شما و نه مدل نمی توانید سرش چانه بزنید. ترتیب هم مهم است: اگر اول کد را بگیرید و بعد از همان مدل بخواهید تستش را بنویسد، تستی می گیرید که همان فرض های کد را دارد و هر دو با هم غلط اند. بهترین کار این است که خودتان بگویید تست چه چیزی را باید ثابت کند، حتی اگر نوشتنش را به مدل بسپارید.

دیف کوچک. از مدل بخواهید یک کار را در یک تغییر انجام دهد و همان جا بایستد. تغییر پنجاه خطی که یک چیز را عوض می کند قابل بازبینی است؛ تغییر پانصد خطی که چهار چیز را عوض می کند بازبینی نمی شود، تایید می شود. این دو خیلی فرق دارند و تفاوتشان همان جایی است که باگ ها وارد می شوند.

بازبینی واقعی. بازبینی یعنی برای هر خط بتوانید بگویید چرا اینجاست. اگر به خطی رسیدید که نمی دانید چه کار می کند، سه راه دارید: بپرسید، خودتان بفهمید، یا حذفش کنید. راه چهارم که همه انتخاب می کنند این است که چون بقیه کار می کند رهایش کنید، و آن خط دقیقا همان خطی است که شش ماه بعد به آن برمی گردید.

یک عادت چهارم هم هست که ارزان است و کم استفاده می شود: کدی را که خود مدل نوشته، در یک پیام جدا از خودش نقد بخواهید. در یک پیام تازه، بدون تاریخچه گفتگو، فقط کد را بگذارید و بپرسید این چه ایرادهایی دارد. جواب هایی می گیرید که اگر همان جا در ادامه گفتگو می پرسیدید نمی گرفت، چون در ادامه گفتگو نقش مدل دفاع از چیزی است که خودش ساخته.

به مدل بسپارید

  • کدی که هزار بار مشابهش نوشته شده
  • ترجمه از زبانی به زبان دیگر
  • تبدیل داده از یک شکل به شکل دیگر
  • تست نوشتن برای تابعی که خودتان نوشته اید
  • توضیح کدی که با آن غریبه اید
  • نقد کردن کدی که خودتان نوشته اید

خودتان نگه دارید

  • تصمیم معماری که به مقیاس و تیم شما ربط دارد
  • قراردادهای نانوشته یک پروژه قدیمی
  • تصمیم های امنیتی و کنترل دسترسی
  • هر چیزی که به آخرین تغییرات یک کتابخانه وابسته است
  • تعریف اینکه تست باید چه چیزی را ثابت کند
  • تصمیم نهایی درباره هر خطی که وارد شاخه اصلی می شود

مرز این دو ستون ثابت نیست و با پروژه عوض می شود. آزمونش هم یکی است: اگر نمی توانید خروجی را قضاوت کنید، کار در ستون راست نیست.

چه چیزی را هیچ وقت نباید در پیام بگذارید؟

این بخش کوتاه است چون قاعده اش کوتاه است: هر چیزی که در پیام می گذارید از دست شما خارج می شود. بسته به سرویس و طرح و تنظیمات، ممکن است نگه داشته شود، ممکن است انسانی بازبینی اش کند، و ممکن است به آموزش برود. صفحه استفاده از داده هر سرویس، تنها جای درست برای فهمیدن این است و نه حرف مردم.

پس چهار چیز را نگذارید: کلید و رمز و توکن، حتی داخل یک تکه کد که فقط برای نمونه فرستاده اید؛ داده واقعی کاربران، مخصوصا لاگی که ایمیل و شماره در آن هست؛ کد مشتری، وقتی قراردادتان اجازه نداده؛ و هر چیزی که بابتش تعهد محرمانگی امضا کرده اید.

راه عملی هم ساده است. کلید را با یک رشته بی معنی جایگزین کنید، و اگر کلیدی را یک بار در چت گذاشتید، آن کلید دیگر معتبر نیست و باید عوضش کنید؛ نه به این دلیل که حتما لو رفته، به این دلیل که دیگر نمی دانید کجا هست. برای داده کاربر، چند ردیف ساختگی با همان شکل بسازید. شکل داده همان چیزی است که مدل لازم دارد و محتوایش نه.

اگر تازه کارید، از کجا شروع کنید؟

یک نگرانی واقعی هست که ارزش دارد رک جوابش را بدهیم: اگر مدل کد را می نویسد، من کی یاد می گیرم؟

خطرش واقعی است و در همان نظرسنجی هم دیده می شود؛ ۲۰ درصد پاسخ دهندگان گفته اند در توانایی حل مسئله خودشان کم اعتمادتر شده اند. مکانیزمش هم روشن است: یادگیری از گیر کردن می آید، و ابزاری که گیر کردن را حذف می کند، همان چیزی را حذف کرده که یاد می داد.

ولی جواب «استفاده نکن» نیست، چون کسی که استفاده نمی کند هم کندتر است و هم چیزی را که همه بلدند بلد نیست. جواب، ترتیب است. برای هر تکه ای که یاد نگرفته اید، اول خودتان بنویسید، حتی بد و ناقص. بعد از مدل بخواهید نقدش کند. این ترتیب همان کار را انجام می دهد و یادگیری را هم نگه می دارد، چون گیر کردن سر جایش باقی می ماند و فقط مدتش کوتاه می شود.

و یک آزمون ساده که به شما می گوید کجای این طیف ایستاده اید: کدی را که مدل نوشته ببندید و همان کار را از حافظه توضیح دهید. اگر می توانید بگویید چه کار می کند و چرا این طور، خوب است. اگر نمی توانید، آن کد هنوز مال شما نیست؛ چیزی است که اجاره کرده اید و اجاره اش را روزی که خراب شود می پردازید. بقیه پایه هایی که این آزمون را ممکن می کنند در مسیر یادگیری برنامه نویسی هستند.

مسیر سریع با هوش مصنوعی

مسیر سریع این نیست که پرامپت بهتری بنویسید. این است که <strong>معیار پذیرش را قبل از کد بنویسید</strong> و مدل را مجبور کنید اول همان را به شما پس بدهد. سه دور کوتاه به جای یک درخواست بلند: در دور اول هیچ کدی گرفته نمی شود، فقط فهرست فرض ها و پرسش ها؛ در دور دوم امضای توابع و تست ها؛ و کد در دور سوم می آید، وقتی هر دو طرف بر سر یک تعریف توافق دارند. غیرمعمول بودنش هم در دور اول است: مدل به شما می گوید چه چیزی را از خودش درآورده، و همان فهرست، همان جایی است که کد تقریبا درست ساخته می شود. برای این کار مدل قوی می خواهید و نه سریع؛ انتخاب فعلی ما در <a class="text-link" href="/ai/code/">بهترین هوش مصنوعی برای کدنویسی</a> است.

  1. دور اول: کار را توصیف کنید و صریح بگویید کد نمی خواهید. فهرست فرض ها، پرسش های باز، و حالت های مرزی را بخواهید.
  2. به پرسش ها جواب بدهید و فرض های غلط را رد کنید. همین یک قدم، بیشتر باگ های بعدی را از بین می برد.
  3. دور دوم: امضای تابع ها و تست ها را بخواهید، بدون بدنه. تست ها را خودتان بخوانید و بگویید کدام حالت جا افتاده.
  4. دور سوم: پیاده سازی را بخواهید، فقط برای همان امضاها، در یک تغییر کوچک. بعد تست ها را خودتان اجرا کنید.
  5. در یک پیام تازه و بدون تاریخچه، همان کد را بگذارید و نقد بخواهید. جواب ها با آنچه در ادامه گفتگو می گرفتید فرق دارد.

نسخه آماده کپی

دور ۱ - بدون کد

کاری که می خواهم: {در یک جمله بگویید تابع یا قابلیت چه کار می کند}
ورودی: {نوع و شکل، با یک نمونه واقعی}
خروجی: {نوع و شکل، با نمونه ای که انتظار دارید}
محیط: {زبان و نسخه} / {کتابخانه هایی که مجازند} / {کتابخانه هایی که مجاز نیستند}
محدودیت ها: {کارایی، سازگاری، سبک کد پروژه}

هیچ کدی ننویس. فقط این چهار چیز را بده:
۱. فهرست هر فرضی که برای نوشتن این کار لازم داری و من نگفته ام.
۲. پرسش هایی که جوابشان نتیجه را عوض می کند، حداکثر ۵ تا، مرتب از مهم ترین.
۳. فهرست حالت های مرزی: ورودی خالی، ورودی خیلی بزرگ، ورودی بدشکل، مقدار تهی.
۴. اینکه اگر مجبور بودی همین حالا کد بنویسی، کدام یک از فرض های بند ۱ را از خودت درمی آوردی.

دور ۲ - بعد از اینکه من به پرسش ها جواب دادم

امضای تابع ها را بنویس، بدون بدنه، و کنار هر کدام یک جمله که می گوید چه چیزی را تضمین می کند.
بعد تست ها را بنویس. هر تست فقط یک چیز را بسنجد و اسمش بگوید چه چیزی را می سنجد.
حالت های مرزی بند ۳ باید همه تست داشته باشند.

دور ۳

حالا پیاده سازی را برای همین امضاها بنویس. یک تغییر، همین یک کار، هیچ چیز اضافه ای.
اگر جایی مجبور شدی فرضی بگذاری که در دور ۱ نبود، بالای کد بنویسش.

دور ۴ - در یک گفتگوی جدید و خالی

این کد را نقد کن. دنبال این ها بگرد: ورودی بدون اعتبارسنجی، خطایی که خورده می شود،
حالت مرزی بی تست، نامی که کار تابع را نمی گوید، و هر جایی که رفتار در حالت خطا تعریف نشده.
هیچ چیزی را بازنویسی نکن. فقط فهرست ایرادها با شماره خط.

قبل از اعتماد به خروجی: این دستور روی همین صفحه امتحان شد و یک بند به همین دلیل اضافه شد: بدون بند چهارم دور اول، مدل فرض هایش را می گوید ولی نمی گوید کدامشان را از خودش درآورده، و همان تفاوت است که ارزش دارد. دو چیز هم بعد از دور سوم به عهده شماست و به مدل سپرده نمی شود: تست ها را خودتان اجرا کنید، چون مدل خروجی اجرا نشده را با اطمینان کامل توصیف می کند؛ و هر خطی که نمی فهمید یا باید بفهمید یا باید حذف شود. اگر تصمیم امنیتی در کار است، آن هم از این چرخه بیرون است و در بخش خطرها گفته ایم چرا.

هوش مصنوعی در این کار

این درس تمامش درباره هوش مصنوعی است، پس این بخش را به چیزی اختصاص می دهیم که بقیه صفحه جا نداشت: خود ابزارها، وضع دسترسی شان از ایران، و خطری که مخصوص همین کار است. موضع ما در یک جمله: <strong>مدل ابزار نوشتن است و شما ابزار تصمیم گرفتن؛ هر گردش کاری که این دو را جا به جا کند، سرعت امروز را با بدهی فردا می خرد.</strong>

ابزارهایی که واقعا کمک می کنند

  • GitHub Copilot داخل ویرایشگر کار می کند و برای خواننده ایرانی نکته دسترسی اش از همه غیرمنتظره تر است: صفحه کنترل تجاری خود گیتهاب می گوید مجوز خزانه داری آمریکا خدمات ابری اش را برای توسعه دهندگان ساکن ایران، رایگان و پولی، پوشش می دهد. ما همین را نقل می کنیم و پرداخت را ادعا نمی کنیم. طرح رایگانش تا دو هزار تکمیل در ماه و فقط با انتخاب خودکار مدل است، و طرح های پولی از ده دلار در ماه شروع می شوند. یک قابلیت هم دارد که در بخش خطرها به کارمان می آید: می شود پیشنهادهایی که با کد عمومی مطابقت دارند را مسدود کرد.
  • Claude Code عامل خط فرمان است و مخزن را می بیند، پس برای کارهایی که چند فایل را لمس می کنند از یک گفتگوی معمولی جلوتر است. همین توانایی، دلیل سخت گیری این درس روی دیف کوچک هم هست. خودش رایگان نصب می شود ولی بدون اشتراک کلود یا حساب کنسول انتروپیک کار نمی کند، و ایران در فهرست کشورهای پشتیبانی شده انتروپیک نیست.
  • Cursor ویرایشگری با عامل داخلی، برای کسی که می خواهد همه چیز در یک پنجره باشد. صفحه قیمت خودش یک طرح رایگان با محدودیت درخواست ها و یک طرح حرفه ای بیست دلار در ماه را نشان می دهد. درباره ایران چیزی ادعا نمی کنیم: فهرست کشورهای پشتیبانی شده ای از آنها پیدا نکردیم و خودمان هم از ایران آزمایشش نکرده ایم.
  • Claude گفتگوی جدا، مناسب همان کاری که این درس توصیه می کند: دور اول بدون کد، و نقد کد در یک گفتگوی خالی. ایران در هیچ یک از دو فهرست کشورهای پشتیبانی شده انتروپیک نیست؛ این را از صفحه خودشان خوانده ایم و نه از تست شبکه.
  • Gemini برای فهمیدن کتابخانه های بزرگ و پرمستند خوب جواب می دهد و حالت درس خواندنش به جای دادن جواب، سوال می پرسد؛ برای کسی که نگران است یادگیری اش را از دست بدهد همین حالت به کار می آید. صفحه خود گوگل می گوید اپ وب جمنای در بیش از دویست و سی کشور و منطقه کار می کند و ایران در آن فهرست نیست.

کجا نتیجه معکوس می دهد

سه خطر واقعی این کار، به ترتیب اهمیت.
یک: کد تقریبا درست. بزرگ ترین شکایت همان ۶۶ درصدی نظرسنجی، دقیقا خطری است که ابزار خطایاب نمی گیرد. کدی که اجرا می شود، تست ساده را رد می کند، و فقط در یک حالت مرزی اشتباه است. تنها دفاع، همان چیزی است که در بخش گردش کار گفتیم: تعریف کنید تست چه چیزی را باید ثابت کند، پیش از اینکه کد وجود داشته باشد.
دو: امنیت. مدل کدی می نویسد که کار می کند و این با کدی که امن است یکی نیست. الگوی رایج، ورودی بدون اعتبارسنجی و کنترل دسترسی جاافتاده است، و هیچ کدام خطا نمی دهند. طبقه بندی OWASP از پیکربندی نادرست امنیتی همین دسته را توضیح می دهد و لینکش پایین است. قاعده ساده: هر جا کد با ورودی کاربر یا با دسترسی سر و کار دارد، مدل پیشنهاد می دهد و تصمیم با شماست.
سه: مالکیت کد. این مدل ها روی کد عمومی آموزش دیده اند و ممکن است قطعه ای تولید کنند که شبیه کد موجود با مجوز محدودکننده باشد. اینکه گیتهاب گزینه ای دارد برای مسدود کردن پیشنهادهای مطابق با کد عمومی، خودش نشان می دهد این نگرانی از سوی خود سازنده جدی گرفته شده. برای کد مشتری، این را یک بار در قرارداد روشن کنید و بعد یادتان برود؛ روشن نکردنش چیزی است که سال ها بعد برمی گردد. راه پرداخت از ایران برای هر کدام از این ابزارها در راهنمای خرید است.

منبع ها: Stack Overflow 2025 Developer Survey: AI GitHub and Trade Controls GitHub Copilot plans Cursor pricing Anthropic: supported countries Claude Code: overview and install Google: where the Gemini web app is available OWASP Top 10: security misconfiguration

حد این توصیه

همه چیز این درس درباره کدی است که خودتان می توانید بخوانید و قضاوت کنید. اگر زبان یا حوزه ای که در آن کار می کنید را بلد نیستید، توصیه های اینجا شما را نجات نمی دهند، چون همه شان به یک بازبین توانا وابسته اند و آن بازبین شمایید. سه چیز را هم عمدا نیاورده ایم: تنظیم کردن مدل روی کد یک شرکت، ساختن عامل های خودکار که بدون آدم کد را به شاخه اصلی می برند، و مقایسه عددی مدل ها که جایش صفحه رتبه بندی است و هر بار به روز می شود. و یک صداقت درباره خود عددهای این صفحه: نظرسنجی استک اورفلو نمونه اش خودانتخابی است، یعنی کسانی که پاسخ داده اند خودشان تصمیم گرفته اند شرکت کنند، و توسعه دهنده ایرانی در آن کم نماینده است. عددها تجربه یک جمعیت بزرگ را نشان می دهند و نه اندازه گیری کیفیت مدل ها را.

از تجربه خود ما

بهترین مثالی که از «کد کار می کند و معنی اش غلط است» داریم، در کد همین سایت است و همان موتوری است که نمودار بالای این صفحه را رسم می کند. کتابخانه اینفوگرافیک این قالب، رنگ هر بخش نمودار را از روی جای آن بخش در فهرست حساب می کرد؛ منطق درستی است وقتی بخش ها ترتیب دارند. روی یک نمودار در بخش هوش مصنوعی همین سایت، بخش ها دسته های نامدار بودند و نه یک ترتیب، و بزرگ ترین دسته که «نسخه جاری» بود اتفاقا اول فهرست افتاد و رنگ قرمز گرفت، در حالی که «پیش نمایش» سبز شد. هیچ خطایی داده نشد، هیچ تستی رد نشد، صفحه هم درست بالا آمد؛ فقط نمودار قضاوتی را نشان می داد که هیچ کس ننوشته بود. اصلاحش هم دقیقا همان چیزی است که این درس می گوید: هر آیتم می تواند رنگ خودش را صریح بگوید، و rgb_dg_item_hue_vars() در inc/diagram-chart.php اگر آن رنگ صریح باشد ترجیحش می دهد. امروز در inc/diagram-sections.php می شود دید که پنج وضعیت نسخه رنگ ثابت خودشان را دارند: بازنشسته صفر، قدیمی ۰.۳، اعلام شده ۰.۵۵، پیش نمایش ۰.۷ و جاری یک. نمودار جلد همین درس هم به همین دلیل رنگ ثابت دارد و نه رنگ موقعیتی.

سوال هایی که واقعا پرسیده می شوند

اگر با هوش مصنوعی کد بنویسم، کد مال کیست؟

شرایط استفاده هر سرویس این را جدا تعیین می کند و باید همان را بخوانید، نه توضیح دست دوم. مسئله عملی تری هم هست که ربطی به مالکیت خروجی ندارد: خروجی می تواند شبیه کد عمومی موجود باشد که مجوز خودش را دارد. گیتهاب برای همین گزینه ای دارد که پیشنهادهای مطابق با کد عمومی را مسدود می کند، و برای کار مشتری بهتر است این را در قرارداد روشن کنید.

برای شروع، کدام یک بهتر است: افزونه ویرایشگر یا گفتگوی جدا؟

اگر تازه یاد می گیرید، گفتگوی جدا. چون مجبورتان می کند مسئله را خودتان بنویسید و همان نوشتن نصف یادگیری است، و چون پیشنهاد داخل ویرایشگر آنقدر سریع می آید که عادت می کنید بی خواندن قبولش کنید. وقتی می توانید یک تکه کد را ببندید و از حافظه توضیحش دهید، افزونه ویرایشگر سریع تر است.

مدل می گوید کد را اجرا کرده و جواب داده. راست می گوید؟

مگر اینکه ابزاری استفاده کنید که واقعا اجرا می کند و خروجی واقعی را نشانتان می دهد، نه. یک گفتگوی معمولی چیزی اجرا نمی کند و آنچه به عنوان خروجی نشان می دهد، پیش بینی اش از خروجی محتمل است. تفاوتش وقتی معلوم می شود که خودتان اجرا کنید، و همین یک عادت جلوی بخش بزرگی از اشتباه ها را می گیرد.