۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

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

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

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

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

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

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

دو ابزار مولد هوش مصنوعی که بیشتر توسط توسعه دهندگان مورد استفاده قرار می گیرد، ChatGPT – ربات چت هوش مصنوعی شناخته شده از OpenAI – و GitHub Copilot بودند که در ویژوال استودیو ادغام می شود. و سایر IDE ها در حالی که هر دو ابزار می‌توانند بر اساس جستارهای زبان طبیعی کد تولید کنند، Copilot و جانشین آزمایشی آن، Copilot X، می‌توانند یک قدم فراتر از مدل مکالمه بروند و به‌عنوان نوعی تکمیل خودکار IDE عمل کنند که آنچه را پیش‌بینی می‌کند. توسعه دهنده در حال کار بر روی.

ونسا فرودنبرگ، یکی از بنیانگذاران و معمار اصلی در Croquet.io، می گوید که از GitHub Copilot در برنامه نویسی روزانه خود با Visual Studio Code استفاده می کند. او توضیح می دهد که چگونه کار می کند.

اگر خط را بنویسم:


    let x = this.leftMargin + this.width / 2;

    let y = this.topMargin + this.height / 2;

و می داند که باید «عرض» و «چپ» را با «ارتفاع» و «بالا» جایگزین کند. این باعث صرفه جویی زیادی در تایپ کردن من می شود.

Panickos Neophytou، یکی از بنیانگذاران و CTO در NetBeez، می‌گوید که هر زمان که کد می‌نویسد از Copilot X و ChatGPT استفاده می‌کند. او دو رویکرد متفاوت برای فراتر از تکمیل خودکار با این ابزارها را توصیف می کند. اولی سیستماتیک است. او می‌گوید: «یک تابع کاملاً تعریف‌شده را با ورودی‌های خاص، نمونه‌هایی از خروجی‌های مورد انتظار و همچنین مدل‌های داده درگیر، که شامل جداول پایگاه داده با ارتباط ضمنی است، توصیف کنید. “هوش مصنوعی به طور کلی می تواند ارتباط ها را استنتاج کند. از آن بخواهید که آن را به زبانی خاص و روش های خاص پیاده سازی کند. “وظایف” تعریف شده در ابزارهای مدیریت پروژه باید به عنوان این نوع اعلان تعریف شوند.”

او همچنین فکر می‌کند که یک تکنیک معمولی‌تر و مکالمه‌ای می‌تواند نتایج خوبی ایجاد کند. او می‌گوید در این حالت، “هنگام انجام یک کار، سوالاتی را می‌پرسید که در ذهن شما درباره نحوه انجام برخی کارها ظاهر می‌شود. مانند این است که یک مهندس مجرب در کنار شماست که به سوالات شما پاسخ می‌دهد و شما را به سمت اتمام کار راهنمایی می‌کند.”

مهم نیست از چه تکنیکی استفاده می‌کنید، یادگیری درست دستور دادن به هوش مصنوعی یک هنر است. Shanea Leven، موسس و مدیر عامل ارائه‌دهنده نرم‌افزار CodeSee، می‌گوید: «من برای اطمینان از دریافت فعل صحیح برای شروع و اصلاح دستورم، از اعلان زنجیره‌ای از فکر استفاده می‌کنم. “انتخاب افعال مناسب و توصیفی بودن برای ایجاد یک اعلان خوب واقعا مهم است.” (مهندسی سریع به همین دلیل در حال تبدیل شدن به یک رشته داغ است.)

نقاط قوت کدگذاری هوش مصنوعی

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

ایجاد اسناد از کد

مستندات نرم‌افزاری قالبی نسبتاً ساختاریافته است که حوزه‌ای است که هوش مصنوعی در آن رشد می‌کند. کریس لاو، بنیانگذار شرکت مشاوره وب Love2Dev، می گوید: «چیزی که من عاشق استفاده از ChatGPT برای آن هستم، نوشتن اسناد [یا] نظرات در کدم است. “این کار با دست زمان زیادی می برد. اما زمانی که یک تابع کامل شد، می توانم عملکرد را به آن بدهم و یک صفحه خوب مستند در یک یا دو ثانیه نوشته شود. من دوست دارم آن را! “

…و بالعکس

هوش مصنوعی همچنین می تواند بر اساس نظرات یا مستندات کد تولید کند. فرودنبرگ Croquet.io یک مثال ساده از تولید کد Copilot تنها از یک خط نظر ارائه داد که در آن نظر زیر وجود دارد:


    // get file name from our url

این خروجی را تولید کرد:


    let fileName = window.location.pathname.split("/").pop();

او می‌گوید: «احتمالاً می‌توانستم این را طور دیگری می‌نوشتم – من یک دختر ریجکس هستم – اما این یک راه‌حل کاملاً ساده و احتمالاً خواندنی‌تر است، بنابراین فقط آن را می‌پذیرم. “این نه تنها صرفه جویی زیادی در زمان دارد، بلکه گاهی اوقات اصطلاحاتی را نیز به من می آموزد که ممکن است خودم کشف نکرده باشم.”

راه حل مشکلات حل شده

توسعه دهندگان می دانند که بخشی از برنامه نویسی دائماً چرخ را دوباره اختراع می کند. کار کردن روی مشکلی که می‌دانید کسی قبلاً در جایی آن را حل کرده است، می‌تواند خسته‌کننده باشد. جف ویلز، سرپرست مهندسی در شرکت توسعه نرم‌افزار Rise8، این را دامنه‌ای برای کمک هوش مصنوعی می‌داند. او توضیح می دهد: «فرض کنید من روشی برای محاسبه فاصله بین دو نقطه روی یک کره ایجاد کنم. “Copilot به طور خودکار خارج می شود و الگوریتم Haversine را پیدا می کند و همه آن کد را تولید می کند.”

Wills این مورد استفاده را مخصوصاً در مواردی مفید می‌بیند که جایگزین کد تولید شده توسط هوش مصنوعی، افزودن یک کتابخانه بزرگ به برنامه‌اش است. او توضیح می‌دهد: «بگویید من نمی‌خواهم یک کتابخانه کامل هندسه را به کد خود بیاورم و پایگاه کد را باد کنم. “من واقعاً فقط به آن یک الگوریتم نیاز دارم. احتمالاً فقط آن را خودم می نویسم و ​​اضافه می کنم – یا از ChatGPT یا Copilot برای کمک به تولید آن استفاده می کنم. این نان و کره برای هوش مصنوعی در حال حاضر است.”

به‌روزرسانی یا پاک‌سازی کد

Chris Love of Love2Dev ChatGPT را برای به‌روزرسانی کدهایی که قبلاً نوشته است مفید می‌داند. او می‌گوید: «من به‌روزرسانی ماژول‌های قدیمی Node.js را که به‌روزرسانی نکرده‌ام، فقط به این دلیل که زمان لازم برای تایپ کد بیشتر از ارزش آن است، انجام داده‌ام. “متداول ترین وضعیتی که من به دنبال آن هستم، تبدیل توابع مبتنی بر وعده های قدیمی تر به استفاده از async/wait است. حالت دوم یک نحو تمیزتر است، اما زمانی که ماژول را نوشتم معمول نبود. همچنین استفاده از نحو های مدرن تری مانند ساختارزدایی را متوجه شدم. و تبدیل اعلان های متغیر از var به const و let.”

کدگذاری سریعتر (شاید)

بسیاری از توسعه دهندگانی که با آنها صحبت کردیم گفتند که کار با Copilot یا ChatGPT باعث می‌شود احساس کنند می‌توانند کار خود را سریع‌تر انجام دهند، اگرچه آنها اعتراف کردند که لزوماً نمی‌توانند آن را کمیت کنند. لاو می‌گوید: «کاری که فکر می‌کنم در نهایت انجام می‌دهد این است که به من کمک می‌کند تا کد بهتری را کمی سریع‌تر بنویسم. “سخت است که بگویم چند درصد سریعتر است، اما برای من قابل لمس است.”

من احساس می‌کنم می‌توانم راه‌حل‌های ممکن را سریع‌تر تکرار کنم. Rise8’s Will می‌گوید: «این از لحاظ نظری باید به من سرعت ببخشد—اما شاید من به دنبال راه‌حل‌های احتمالی بیشتری هستم! بنابراین شاید من به موقع نتیجه نگرفتم، اما از نظر کیفیت، چون توانستم کمی بیشتر تکرار کنم.”