هوش مصنوعی نمی تواند جایگزین توسعه دهندگان بد شود زیرا فقط برای توسعه دهندگان خوب کار می کند. تشخیص اینکه چه زمانی کد از یک LLM شکست می خورد نیازمند مهارت و تجربه است.
«مدلهای هوش مصنوعی در حال حاضر در کمک به کدنویسها برای انجام کارهای بیشتری که در زمانشان کار میکند، درخشش دارند،» ادعای سانتیاگو والدارراما پاسخ میداد که مدلهای زبان بزرگ (LLM) دستیاران کدنویسی غیرقابل اعتماد هستند. والداراما میگوید، «تا زمانی که LLMها تضمینهای مشابهی را به ما ندهند [مانند زبانهای برنامهنویسی، که به طور مداوم رایانهها را وادار به پاسخگویی به دستورات میکنند]، محکوم خواهند شد که «دموهای جالب» ابدی باشند که برای بیشتر برنامههای کاربردی بیفایده هستند.» او درست میگوید که LLMها در نحوه پاسخگویی به درخواستها کاملاً ناسازگار هستند. همان اعلان پاسخ های LLM متفاوتی را به همراه خواهد داشت. و Showalter احتمالاً نادرست است: مدلهای هوش مصنوعی ممکن است در کمک به توسعهدهندگان معمولی برای تولید کد بیشتر، «درخشش» داشته باشند، اما این مانند تولید کد قابل استفاده نیست.
ترفند توسعه نرم افزار و هوش مصنوعی این است که بدانید لبه های ناهموار کجا هستند. بسیاری از توسعه دهندگان این کار را نمی کنند، و آنها بیش از حد به خروجی یک LLM متکی هستند. همانطور که یکی از مفسر HackerNews میگوید، “من نمیدانم که چقدر ایمان کاربران به ChatGPT بر اساس نمونه هایی که در آنها خطاها برای نوع خاصی از کاربر آشکار نیست. برای اینکه بتوانید از هوش مصنوعی به طور موثر در توسعه نرم افزار استفاده کنید، به تجربه کافی نیاز دارید تا بدانید چه زمانی از LLM زباله دریافت می کنید.
راه حل ساده ای وجود ندارد
حتی وقتی من این را تایپ می کنم، بسیاری از توسعه دهندگان مخالفت خواهند کرد. فقط کافی است نظرات بسیاری را در موضوعات HackerNews که در بالا به آن ارجاع شده است، مطالعه کنید. به طور کلی، استدلالهای متقابل به این شکل خلاصه میشوند که «البته شما نمیتوانید به خروجی LLM اعتماد کامل داشته باشید، همانطور که نمیتوانید به کدهایی که در Stack Overflow، IDE و غیره پیدا میکنید کاملاً اعتماد کنید.»
این درست است، تا آنجا که پیش می رود. اما گاهی اوقات آنقدر که میخواهید پیش نمیرود. برای مثال، اگرچه منصفانه است که بگوییم توسعهدهندگان نباید به IDE خود ایمان مطلق داشته باشند، میتوانیم با خیال راحت فرض کنیم “برنامه شما را خراب نمی کند.” و در مورد چیزهای اساسی مانند پیچ نکردن براکت های Lisp چطور؟ ChatGPT ممکن است اشتباه کند اما IDE شما؟ بعید است.
در مورد کد Stack Overflow چطور؟ مطمئناً برخی از توسعهدهندگان بدون فکر کپی و جایگذاری میکنند، اما به احتمال زیاد یک توسعهدهنده باهوش اولین بار بررسی میکند تا ببیند رای ها و نظرات پیرامون کد. یک LLM چنین سیگنالی را نمی دهد. شما آن را با ایمان می گیرید. یا نه. همانطور که یکی از توسعهدهندگان پیشنهاد میکند، هوشمندانه است که هر دو [Stack Overflow و LLM خروجی را بهعنوان] در نظر بگیریم. احتمالاً اشتباه است [و احتمالاً توسط یک توسعهدهنده بیتجربه نوشته شده است.» اما حتی در صورت اشتباه، چنین کدی می تواند “حداقل مرا در مسیر درست حرکت دهد.”
دوباره، این مستلزم آن است که توسعهدهنده به اندازه کافی مهارت داشته باشد تا تشخیص دهد که نمونه کد Stack Overflow یا کد LLM اشتباه است. یا شاید او باید آنقدر عاقل باشد که فقط از آن برای چیزی شبیه استفاده کند که “۲۰۰- تکهای از دیگ بخار برای چیزی عادی مانند یک میز بزرگ در صفحه React. در اینجا، پس از همه، “شما لازم نیست به آن اعتماد کنید، فقط آن را پس از انجام آن تست کنید.”
به طور خلاصه، همانطور که یکی از توسعه دهندگان نتیجه می گیرد، “به همان روشی که من به آن اعتماد دارم به یک توسعه دهنده جوان یا کارآموز اعتماد کنید. وظایفی را به او بسپارید که می دانم چگونه انجام دهم، می توانم تأیید کنم که آیا درست انجام شده است یا خیر، اما نمی خواهم برای انجام آن وقت بگذارم. این نقطه شیرین است.» توسعهدهندگانی که بیشترین بهره را از هوش مصنوعی میبرند، آنقدر باهوش خواهند بود که بدانند چه زمانی اشتباه است، اما هنوز هم تا حدودی سودمند است.
شما اشتباه میکنید
برگردیم به ادعا اولیه بنیانگذار Datasette، Simon Wilison مبنی بر اینکه “دریافت بهترین نتایج از [AI] در واقع به مجموعه ای کامل از دانش و تجربه نیاز دارد” زیرا “بسیاری از آن به شهود مربوط می شود. ” او به توسعه دهندگان با تجربه توصیه می کند که محدودیت های LLM های مختلف را برای سنجش نقاط قوت و ضعف نسبی آنها و ارزیابی نحوه استفاده موثر از آنها حتی زمانی که کار نمی کنند آزمایش کنند.. p>
در مورد توسعه دهندگان جوان تر چطور؟ آیا امیدی برای استفاده موثر از هوش مصنوعی وجود دارد؟ داگ سون، مدیر کل آمازون CodeWhisperer و مدیر توسعه نرم افزار آمازون کیو، معتقد است. همانطور که او به من گفت، دستیارهای کدنویسی مانند CodeWhisperer می توانند حتی برای توسعه دهندگان کم تجربه مفید باشند. “آنها می توانند پیشنهادهایی دریافت کنند که به آنها کمک می کند بفهمند به کجا می روند، و در نهایت مجبور می شوند حرف افراد دیگر را کمتر قطع کنند [به عنوان مثال، درخواست کمک].”
شاید پاسخ درست، طبق معمول، “بستگی دارد.”
باشد
و مهمتر از همه، پاسخ درست به توسعه نرم افزار معمولا این نیست که “کد بیشتر، سریعتر بنویسید.” کاملا برعکس، همانطور که من بحث کرده ام. بهترین توسعه دهندگان زمان کمتری را صرف نوشتن کد می کنند و زمان بیشتری را صرف فکر کردن به مشکلاتی که سعی در حل آنها دارند و بهترین راه برای نزدیک شدن به آنها می کنند. همانطور که ویلیسون پیشنهاد کرده است، LLM میتواند در اینجا کمک کند: «ChatGPT (و GitHub Copilot) مقدار زیادی از زمان «پیدا کردن چیزها» را در من صرفهجویی میکند. برای همه چیز، از نوشتن یک حلقه for در Bash گرفته تا به خاطر سپردن نحوه ایجاد یک درخواست CORS متقابل دامنه در جاوا اسکریپت — دیگر نیازی به جستجوی همه چیز ندارم، فقط می توانم آن را درخواست کنم و در ۸۰٪ مواقع پاسخ درست را دریافت کنم. “
همانطور که اشاره شد، دانستن اینکه کجا باید روی آن «۸۰٪ مواقع» خط بکشید، مهارتی است که با تجربه همراه است. اما تمرین استفاده از LLM برای به دست آوردن یک ایده کلی از نحوه نوشتن چیزی، مثلاً در Scala، می تواند برای همه مفید باشد. تا زمانی که یک نگاه انتقادی به خروجی LLM داشته باشید.
پست های مرتبط
ابزارهای کدنویسی هوش مصنوعی کارآموز شما هستند، نه جایگزین شما
ابزارهای کدنویسی هوش مصنوعی کارآموز شما هستند، نه جایگزین شما
ابزارهای کدنویسی هوش مصنوعی کارآموز شما هستند، نه جایگزین شما