اگر در یک سال گذشته در کما نبوده باشید، می دانید که هوش مصنوعی دنیای برنامه نویسی را زیر و رو کرده است. چندین رابط چت و پلاگین در حال تولید کدی هستند که وارد سیستم های تولید می شود. GitHub Copilot، ChatGPT و غیره به توسعه دهندگان قدرت کدنویسی تقریباً فوری را داده اند.
اما هرکسی که فکر میکند این ابزارها میتوانند یک شبه از آنها به یک توسعهدهنده نرمافزار فوقالعاده تبدیل شوند، در اشتباه هستند. برای اینکه یک کدنویس مؤثر با ابزار تولید کد (کدژن) باشید، همچنان نیازمند این هستید که بدون هوش مصنوعی یک کدنویس مؤثر باشید. ابزارهای Codegen بدون شک زوایای جدیدی را وارد توسعه نرم افزار خواهند کرد، اما این ابزارها ابتدا باید کار درک کدی را که رابط های چت آنها تولید می کنند انجام دهند.
در این مقاله، ما در مورد دستاوردهای واقعی که امروزه برنامه نویسان مشاهده می کنند صحبت خواهیم کرد، در حالی که راه هایی را نیز بررسی خواهیم کرد که حتی کدژن نمی تواند به یک تیم غیرخلاق کمک کند.
ابزارهای Codegen بر روی کدهای موجود آموزش دیده اند و توانایی ایجاد کدهای خلاقانه را ندارند. آنها می دانند که چگونه کد نوشته شده است و چگونه مشکلات را در گذشته حل کرده است. بنابراین اگر چیزی مینویسید که مشکلات رایج را حل میکند - تعاریف، اتصال به پایگاههای داده یا SDK، تعاریف API و ... کدژن میتواند به راحتی اینکار را برایتان انجام دهد.
در برخی از زبان ها مفهومی به نام داربست وجود دارد. شما یک قالب می سازید که کامپایلرها یا سایر ویژگی های زبان از آن برای ایجاد کد واقعی استفاده می کنند. ابزارهای Codegen در بحث داربست عالی هستند. من از یک ابزار هوش مصنوعی الگویی خواستم که کد اتصال به پایگاه داده Postgres را ایجاد کند:
import psycopg2
from psycopg2 import OperationalError
def create_conn():
conn = None
try:
conn = psycopg2.connect(
database="your_database",
user="your_username",
password="your_password",
host="localhost",
port="5432",
)
print("Connection to PostgreSQL DB successful")
except OperationalError as e:
print(f"The error '{e}' occurred")
return conn
connection = create_conn()
به طور معمول، شما باید در وب برای کتابخانه اتصال برای زبان انتخابی خود جستجو کنید، سپس کد نمونه را کپی و جایگذاری کنید و آن را تغییر دهید. هوش مصنوعی به عنوان یک کپی و چسباندن پیشرفتهتر عمل میکند، زیرا کد را برای چسباندن به مشکل خاص شما تنظیم میکند. دیگر نیازی به دست و پنجه نرم کردن با متغیرها و بازنویسی دستی نیست، که اغلب با فراموش کردن پرانتز بسته یا نقطه ویرگول، باگ ایجاد می کند.
در یک پست وبلاگ، دو کارمند Figma در مورد اینکه چگونه کدژن مشکل صفحه خالی را حل می کند صحبت می کنند. این محصول نهایی را به شما نمی دهد، اما شما را به پاسخ نزدیکتر می کند - نه 0 به 1، بلکه 0 به 0.5. اگر یک API جدید دارید که حبابهای بزرگ JSON را به کد TypeScript شما منتقل میکند، میتوانید به جای تایپ دستی، یک هوش مصنوعی برای تنظیم تعریف نوع در چند ثانیه دریافت کنید.
اگر می دانید چه می خواهید، کدژن می تواند یک میانبر سریع باشد. در وبلاگ بالا، توسعه دهندگان Figma می گویند که "کدژن زمانی بیشترین بازده را ارائه می دهد که آن را به روشی خاص، برای تیم، شرکت و گردش کار خاص خود اعمال کنید." Codegen در حال انجام کار مستندسازی و کد نمونه داربست برای ساخت کدی است که در موقعیت خاص شما کاربرد دارد.
البته، کدنویسی هرگز قسمت سخت نبود. الزامات آن است دانستن آنچه از نرم افزار می خواهید به روشی خاص که کدژن بتواند کد را ایجاد کند، خود یک مهارت است. اگر به مثال من در بالا نگاه کنید، من درک روشنی از الزاماتم نداشتم، حتی از کدام زبان استفاده کنم. در صحبتهایم با دوستان مهندس، آنها به من گفتهاند که فکر کردن به مشکلات تا جایی که میتوانند دستورات کدژن مؤثر بنویسند به آنها کمک میکند تا نیازهای خود و طراحی مورد نیاز را بهتر درک کنند. آنها حتی اسکریپت های محلی دارند که به آنها کمک می کند تا قبل از اینکه پول خود را در چرخه های LLM خرج کنند، درخواست های مؤثرتری بنویسند.
سازمان های مهندسی امروزه بیش از هر زمان دیگری می خواهند نرم افزار قابل اعتماد ایجاد کنند. به فشارها برای ایجاد هرچه بیشتر تست های واحد خودکار، اجرای پوشش تست محور، یا به دست آوردن پوشش آزمایشی خود نزدیک به 100% نگاه کنید. بسیاری از شرکتها یک قدم فراتر از آزمایشهای خودکار میروند—آنها هوش مصنوعی را به تصویر میکشند تا هنگام نوشتن کد، آزمایشهایی را پیشنهاد کنند . Codegen میتواند تستهای شما را نیز بنویسد، اما شما نیاز به درک واضحی از شرایط موفقیت و شکست دارید.
این هوش مصنوعی ها می توانند بیشتر از ایجاد کد انجام دهند. آنها نیز می توانند آن را درک کنند. اگر سعی میکنید سرعت خود را بر اساس کد ایجاد کنید، میتوانید کد را به یک ربات چت هوش مصنوعی ارسال کنید و از آن بخواهید به شما بگوید که کد چگونه کار میکند. اگر اسناد قابل اعتمادی در مورد کد داخلی خود ندارید، کدژن یک میانبر خوب است. هنگامی که پاسخ ها را دریافت کردید، می توانید آنها را به پایگاه دانش داخلی خود اضافه کنید تا افراد دیگر بتوانند از تحقیقات شما بیاموزند.
اینکه بتوانید پروژه کدنویسی را سریعتر با استفاده از هوش مصنوعی کامل کنید عالی است. اما برخی از مسائل را حل نمی کند و موارد جدیدی را معرفی می کند. توهمات یکی از عوارض جانبی شناخته شده LLM ها و رابط های چت بات آن ها است. اینکه آیا LLM ها دانش دارند یا صرفاً طوطی های تصادفی هستند جای بحث دارد. در حالی که آنها می توانند کدهای بسیار معتبر یا پاسخ هایی به سوالات کدنویسی بدهند، آنها همچنین می توانند چیزها را از پارچه کامل بسازند. یکی از کدنویس ها پیدا کرد که ChatGPT پیشنهاد کرد که از ویژگی های کتابخانه هایی استفاده کند که وجود نداشتند.
به همین دلیل، توسعه دهندگان در اعتماد به چت ربات های هوش مصنوعی کند بوده اند. در نظرسنجی توسعه دهندگان ما در سال 2023، تنها 3 درصد از افراد مورد بررسی به خروجی ابزارهای هوش مصنوعی بسیار اعتماد داشتند ، در حالی که یک چهارم پاسخ دهندگان به آنها اعتماد ندارند. برخی ممکن است بگویند که بی اعتمادی سالم به هر کدی که با آن برخورد می کنید، سالم است (حتی خودتان)، اما واقعیت این است که بسیاری از افراد حرف هوش مصنوعی را قبول می کنند. این دستورالعملی برای آسیبپذیریهای امنیتی است – این اتفاق با یکی از محبوبترین کدهای کد در Stack Overflow رخ داد ، و با کدهای تولید شده نیز این اتفاق خواهد افتاد.
محققان دانشگاه پردو دریافتند که ChatGPT در مقایسه با پاسخهای ایجاد شده توسط انسان در Stack Overflow کوتاه است . آنها دریافتند که وقتی از مجموعه ای از 517 سوال از Stack Overflow پرسیده شد، ChatGPT کمتر از نیمی از آنها را درست دریافت کرد. این تحقیق نشان داد که علاوه بر اشتباه بودن، 77 درصد از پاسخ ها بیش از حد پرمخاطب بودند. اما کاربران در حدود 40 درصد از مواقع این پاسخ ها را به دلیل جامعیت و سبک نوشتاری واضح ترجیح می دهند.
این برای هر کسی که پاسخ های خود را دوباره چک نمی کند خطرناک است. خطاهای آسان، خطاهای نحوی هستند، و اینها اشتباهاتی نیستند که کدژن مرتکب می شود. آنها زمینه سؤالات را درک نمی کنند، بنابراین ممکن است در نهایت دچار اشتباهات مفهومی شوند، روی قسمت اشتباه سؤال تمرکز کنند یا از API ها، کتابخانه ها یا توابع اشتباه یا غیر موجود استفاده کنند.
در پایان، شرکت کنندگان اکثراً سؤالات Stack Overflow را به دلیل مختصر بودن و دقت آنها ترجیح دادند. در حالی که اکثر LLM ها از Stack Overflow به عنوان بخشی از داده های آموزشی خود استفاده کرده اند، تحقیقات نشان می دهد که نسخه های اصلی به طور کلی دقیق تر از خروجی هوش مصنوعی هستند.
اگر از کدهای تولید شده توسط هوش مصنوعی استفاده می کنید، باید بیشتر روی مستندات کار کنید. موفقیت بلندمدت یک سازمان را میتوان با بدهیهای فناوری مخدوش کرد، و یک پایه کد نوشته یا درک نشده نوعی بدهی فنی است. یک مهندس جوان که پروژه خود را پنج روز زودتر تحویل می دهد، اما نمی تواند در اسناد توضیح دهد که چگونه همه کار می کند، در واقع یک بمب ساعتی برای کاهش بهره وری آینده کار می کند.
ویژگیهایی که با کمک یک سیستم هوش مصنوعی به پایگاه کد شما اضافه میشوند، خطرات قانونی و نظارتی نیز دارند. در این مرحله، پروندهها در حال کار از طریق سیستم قضایی هستند تا مشخص کنند که آیا یک سیستم هوش مصنوعی آموزشدیده بر روی کد منبع باز مجاز به تولید کپی یا بستن تصاویر مشابه از آن کد بدون ذکر منبع و مجوز مناسب است یا خیر.
سناریویی را تصور کنید که در آن سازمان شما نتیجه خوشایندی به دست آوردن یا عمومی شدن دارد. سرمایهگذاران یا خریدارهایی که بررسیهای لازم را انجام میدهند، ضمانتهایی میخواهند که هرگونه دارایی معنوی که خریداری میکنند کاملاً متعلق به شرکت شما است و به درستی دارای حق چاپ و مجوز است. اگر بخشهای بزرگی از پایه کد شما توسط مهندسان شما نوشته نشده باشد، بلکه توسط سیستمهای هوش مصنوعی آموزشدیده بر روی بخش وسیعی از کدهای در دسترس عموم نوشته شده باشد، برآوردن نگرانیهای سرمایهگذاران بسیار سختتر خواهد بود.
سلامت بلندمدت پشته فناوری شما فقط به سرعتی که مهندسان می توانند PR خود را ثبت کنند بستگی ندارد. همچنین ضروری است که بخشهای مختلف سازمان شما قادر به برقراری ارتباط و همکاری شفاف باشند و برای یافتن راهحلهای تصویری بزرگ برای چالشهای معماری که بستر توسعه و رشد آینده را فراهم میکند، تلاش کنند.