همه برنامه‌نویسی‌های مبتنی بر هوش مصنوعی، کدنویسی احساسی نیست (اما کدنویسی احساسی عالی است) - وبلاگ سایمون ویلیسون

وبلاگ سایمون ویلیسون

کدنویسی احساسی در حال حاضر بسیار مورد توجه است. این اصطلاح توسط آندری کارپاتی تنها چند هفته پیش (در تاریخ ۶ فوریه) ابداع شد و از آن زمان در نیویورک تایمز، آرس تکنیکا، گاردین و بحث‌های آنلاین بی‌شماری منتشر شده است.

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

کدنویسی احساسی همان نوشتن کد با کمک مدل‌های زبانی بزرگ (LLM) نیست!

به نقل از توییت اصلی آندری به طور کامل (با تأکید من):

نوع جدیدی از کدنویسی وجود دارد که من آن را "کدنویسی احساسی" می‌نامم، که در آن شما کاملاً تسلیم احساسات می‌شوید، از تصاعدها استقبال می‌کنید و فراموش می‌کنید که حتی کدی وجود دارد. این امکان وجود دارد زیرا مدل‌های زبانی بزرگ (به عنوان مثال Cursor Composer w Sonnet) خیلی خوب می‌شوند. همچنین من فقط با Composer با SuperWhisper صحبت می‌کنم، بنابراین به سختی صفحه کلید را لمس می‌کنم.

من احمقانه‌ترین چیزها را می‌خواهم، مانند "کاهش padding در نوار کناری به نصف" زیرا من خیلی تنبل هستم که آن را پیدا کنم. من همیشه "Accept All" را انتخاب می‌کنم، دیگر تفاوت‌ها را نمی‌خوانم. وقتی پیام‌های خطا دریافت می‌کنم، فقط آن‌ها را بدون هیچ نظری کپی و پیست می‌کنم، معمولاً این کار آن را برطرف می‌کند. کد فراتر از درک معمول من رشد می‌کند، باید مدتی آن را واقعاً بخوانم. گاهی اوقات مدل‌های زبانی بزرگ نمی‌توانند یک باگ را برطرف کنند، بنابراین من فقط آن را دور می‌زنم یا تغییرات تصادفی می‌خواهم تا از بین برود.

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

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

وقتی من در مورد کدنویسی احساسی صحبت می‌کنم، منظورم ساخت نرم‌افزار با یک مدل زبانی بزرگ بدون بررسی کدی است که می‌نویسد.

استفاده مسئولانه از مدل‌های زبانی بزرگ برای کدنویسی کدنویسی احساسی نیست

بیایید این رویکرد "فراموش کنید که حتی کدی وجود دارد" را با نحوه استفاده توسعه‌دهندگان نرم‌افزار حرفه‌ای از مدل‌های زبانی بزرگ مقایسه کنیم.

وظیفه یک توسعه‌دهنده نرم‌افزار (فقط) تولید کد و ویژگی‌ها نیست. ما باید کدی ایجاد کنیم که به طور واضح کار می‌کند و توسط سایر انسان‌ها (و ماشین‌ها) قابل درک باشد و از توسعه مداوم در آینده پشتیبانی کند.

ما باید عملکرد، دسترسی، امنیت، قابلیت نگهداری، و کارایی هزینه را در نظر بگیریم. مهندسی نرم‌افزار همه چیز در مورد مصالحه‌ها است - وظیفه ما انتخاب از بین ده‌ها راه حل بالقوه با متعادل کردن انواع الزامات، هم صریح و هم ضمنی است.

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

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

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

بیایید آنچه کدنویسی احساسی را خاص می‌کند از دست ندهیم

من نمی‌خواهم "کدنویسی احساسی" به یک اصطلاح منفی تبدیل شود که مترادف با برنامه‌نویسی غیرمسئولانه با کمک هوش مصنوعی باشد. این شکل جدید و عجیب از برنامه‌نویسی چیزهای زیادی برای ارائه به جهان دارد!

من معتقدم همه سزاوار این توانایی هستند که کارهای خسته‌کننده زندگی خود را با رایانه‌ها خودکار کنند. شما نباید برای اینکه رایانه‌ها کارهای بسیار خاصی را برای شما انجام دهند، به مدرک علوم کامپیوتر یا بوت‌کمپ برنامه‌نویسی نیاز داشته باشید.

اگر کدنویسی احساسی به میلیون‌ها نفر جدید این امکان را می‌دهد که ابزارهای سفارشی خود را بسازند، من از این بابت بسیار خوشحال خواهم شد.

برخی از این افراد توسط باگ برنامه‌نویسی گزیده می‌شوند و به توسعه‌دهندگان نرم‌افزار ماهر تبدیل می‌شوند. یکی از بزرگترین موانع برای این حرفه، منحنی یادگیری اولیه بسیار تند است - کدنویسی احساسی این مانع اولیه را تقریباً صاف می‌کند.

کدنویسی احساسی همچنین چیزهای زیادی برای ارائه به توسعه‌دهندگان با تجربه دارد. من قبلاً در مورد اینکه استفاده از مدل‌های زبانی بزرگ برای کد نوشتن دشوار است صحبت کرده‌ام - فهمیدن اینکه چه چیزی کار می‌کند و چه چیزی کار نمی‌کند، موردی از ایجاد شهود در طول زمان است و لبه‌های تیز و تله‌های پنهان زیادی در این راه وجود دارد.

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

چه زمانی کدنویسی احساسی اشکالی ندارد؟

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

  • پروژه‌ها باید ریسک کمی داشته باشند. به این فکر کنید که اگر کدی که می‌نویسید دارای باگ یا آسیب‌پذیری‌های امنیتی باشد، چقدر می‌تواند آسیب برساند. آیا کسی می‌تواند آسیب ببیند - شهرت آسیب دیده، از دست دادن پول یا چیزی بدتر؟ این امر به ویژه اگر قصد دارید نرم‌افزاری بسازید که توسط افراد دیگر استفاده شود، بسیار مهم است!
  • امنیت را در نظر بگیرید. این یک موضوع واقعاً دشوار است - امنیت یک موضوع بسیار گسترده است. چند نکته سطح بالا:
    • مراقب اسرار باشید - هر چیزی که از نظر شکل شبیه رمز عبور است، مانند کلید API مورد استفاده برای دسترسی به یک ابزار آنلاین. اگر کد شما شامل اسرار است، باید مراقب باشید که به طور تصادفی آنها را افشا نکنید، که به این معنی است که باید درک کنید که کد چگونه کار می‌کند!
    • به حریم خصوصی داده‌ها فکر کنید. اگر در حال ساختن ابزاری هستید که به داده‌های خصوصی دسترسی دارد - هر چیزی که نمی‌خواهید در یک جلسه اشتراک‌گذاری صفحه به دنیا نشان دهید - با احتیاط رفتار کنید. این امکان وجود دارد که ابزارهای شخصی را با کدنویسی احساسی بسازید که اطلاعات خصوصی را در آن جایگذاری کنید، اما باید بسیار مطمئن باشید که راه‌هایی وجود دارد که داده‌ها ممکن است دستگاه شما را ترک کنند.
  • شهروند خوبی در شبکه باشید. هر چیزی که از پلتفرم‌های دیگر درخواست می‌کند، می‌تواند بار (و در نتیجه هزینه) این سرویس‌ها را افزایش دهد. این دلیلی است که من Claude Artifacts را دوست دارم - sandbox آنها از ایجاد آسیب در جاهای دیگر جلوگیری می‌کند.
  • آیا پول شما در خطر است؟ من داستان‌های وحشتناکی در مورد افرادی دیده‌ام که یک ویژگی را در برابر یک API بدون محدودیت صورت‌حساب کدنویسی احساسی کرده‌اند و هزاران دلار هزینه جمع کرده‌اند. در استفاده از کدنویسی احساسی در برابر هر چیزی که بر اساس استفاده شارژ می‌شود، بسیار مراقب باشید.

اگر می‌خواهید هر چیزی را که ممکن است توسط افراد دیگر استفاده شود، کدنویسی احساسی کنید، توصیه می‌کنم قبل از به اشتراک گذاشتن آن با جهان، با فردی با تجربه‌تر برای بررسی احساسات (هاها) مشورت کنید.

چگونه کدنویسی احساسی را بهتر کنیم؟

من فکر می‌کنم چالش‌های طراحی نرم‌افزار جالبی در اینجا وجود دارد که باید حل شوند.

کدنویسی احساسی ایمن برای مبتدیان کامل با یک sandbox شروع می‌شود. Claude Artifacts یکی از اولین پلتفرم‌های کدنویسی احساسی گسترده بود و رویکرد آنها به sandboxing فوق‌العاده است: کد محدود به اجرا در یک <iframe> قفل شده است، فقط می‌تواند کتابخانه‌های تأیید شده را بارگیری کند و نمی‌تواند هیچ درخواستی را به سایت‌های دیگر ارسال کند.

این امر باعث می‌شود که افراد به سختی خراب کنند و با پروژه‌های خود آسیبی وارد کنند. همچنین به شدت محدود می‌کند که این پروژه‌ها چه کاری می‌توانند انجام دهند - برای مثال، نمی‌توانید از یک پروژه Claude Artifact برای دسترسی به داده‌ها از APIهای خارجی استفاده کنید، یا حتی برای ساختن نرم‌افزاری که promptهای خود را در برابر یک مدل زبانی بزرگ اجرا می‌کند.

سایر ابزارهای کدنویسی احساسی محبوب مانند Cursor (که در ابتدا برای توسعه‌دهندگان حرفه‌ای در نظر گرفته شده بود) موانع ایمنی بسیار کمتری دارند.

فضای زیادی برای نوآوری در این زمینه وجود دارد. من امیدوارم که شاهد یک انفجار کامبرین در ابزارها باشم تا به افراد کمک کند تا ابزارهای سفارشی خود را تا حد امکان تولیدی و ایمن بسازند.

به پیش و کدنویسی احساسی کنید

من واقعاً نمی‌خواهم افرادی را که تازه وارد نرم‌افزار شده‌اند از امتحان کردن کدنویسی احساسی منصرف کنم. بهترین راه برای یادگیری هر چیزی ساختن یک پروژه است!

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

اما لطفاً، کدنویسی احساسی را با سایر کاربردهای مدل‌های زبانی بزرگ برای کد اشتباه نگیرید.