چقدر ChatGPT در برنامهنویسی خوب است؟
برنامه نویسی با ChatGPT به یکی از موضوعات داغ در دنیای فناوری تبدیل شده است. از تواناییهای این مدل در تولید کد تا امکان دریافت مشاورههای برنامهنویسی، این ابزار به شکل قابل توجهی در حال تغییر روشهای توسعه نرمافزار است. اما سوال اصلی این است که واقعاً چقدر ChatGPT میتواند در این زمینه مؤثر باشد؟ در این بلاگ از سایت فایلسو، به بررسی دقیق ChatGPT در برنامهنویسی خواهیم پرداخت.این مقاله بخشی از سری اختصاصی IEEE Journal Watch با همکاری IEEE Xplore است.
برنامه نویسی با ChatGPT
برنامه نویسان سالها به طراحی و توسعه کد برای مدلهای هوش مصنوعی مشغول بودهاند و اکنون، به طرز جالبی، هوش مصنوعی به نوشتن کد پرداخته است. اما چگونه توانایی یک تولیدکننده کد هوش مصنوعی با مهارتهای یک برنامهنویس انسانی مقایسه میشود؟
مطالعهای که در شماره ژوئن نشریه IEEE Transactions on Software Engineering منتشر شده، کد تولید شده توسط ChatGPT از OpenAI را از جنبههای عملکرد، پیچیدگی و امنیت بررسی کرده است. نتایج نشان میدهند که چت جی پی تی در تولید کد عملکردی، دامنه موفقیت بسیار گستردهای دارد؛ نرخ موفقیت آن از ۰.۶۶ درصد تا ۸۹ درصد متغیر است و به پیچیدگی وظیفه، زبان برنامهنویسی و عوامل دیگر وابسته است.
در حالی که در برخی موارد کد تولید شده توسط هوش مصنوعی ممکن است از کد انسانها بهتر باشد، این تحلیل نگرانیهایی درباره امنیت کدهای تولیدی نیز به همراه دارد.
یوتیان تانگ، مدرس دانشگاه گلاسکو و یکی از اعضای تیم مطالعه، اشاره میکند که برنامه نویسی با ChatGPT میتواند مزایایی همچون افزایش بهرهوری و اتوماسیون وظایف توسعه نرمافزار به همراه داشته باشد، اما درک نقاط قوت و محدودیتهای این مدلها اهمیت زیادی دارد.
او توضیح میدهد: “با انجام یک تحلیل جامع، میتوانیم مشکلات و محدودیتهای احتمالی تولید کد مبتنی بر ChatGPT را شناسایی کرده و تکنیکهای تولید را بهبود بخشیم.”
بررسی برنامه نویسی با ChatGPT
برای بررسی دقیقتر محدودیتهای برنامه نویسی با ChatGPT، تیم او به آزمون توانایی GPT-3.5 در حل ۷۲۸ مسئله کدنویسی از پلتفرم LeetCode در پنج زبان برنامهنویسی شامل C، C++، Java، JavaScript و Python پرداخته است.
به طور کلی، ChatGPT در حل مسائل در زبانهای برنامهنویسی مختلف عملکرد نسبتاً خوبی داشته است — به ویژه در حل مسائل کدنویسی که پیش از سال ۲۰۲۱ در LeetCode موجود بودند. به عنوان مثال، این مدل توانست کد عملیاتی برای مسائل ساده، متوسط و دشوار با نرخهای موفقیت به ترتیب حدود ۸۹، ۷۱ و ۴۰ درصد تولید کند.
«با این حال، هنگامی که به مسائل الگوریتمی پس از سال ۲۰۲۱ میرسیم، توانایی ChatGPT در تولید کد صحیح به طور چشمگیری کاهش مییابد. گاهی اوقات حتی برای مسائل سطح آسان نیز قادر به درک صحیح سوالات نیست»، تانگ میگوید.
برای نمونه، توانایی ChatGPT در تولید کد عملیاتی برای مسائل “آسان” پس از سال ۲۰۲۱ از ۸۹ درصد به ۵۲ درصد کاهش یافته است. همچنین، توانایی آن در تولید کد برای مسائل “دشوار” نیز از ۴۰ درصد به ۰٫۶۶ درصد کاهش یافته است.
«یک فرضیه منطقی برای اینکه چرا ChatGPT در مسائل الگوریتمی قبل از ۲۰۲۱ عملکرد بهتری دارد این است که این مسائل بهطور مکرر در مجموعه دادههای آموزشی آن دیده شدهاند»، تانگ توضیح میدهد.
«ChatGPT ممکن است کد نادرستی تولید کند زیرا معنای مسائل الگوریتمی را بهدرستی نمیفهمد.»
جالب است که ChatGPT قادر است کدی با زمان و حافظه مصرفی کمتر از حداقل ۵۰ درصد از راهحلهای انسانی برای همان مسائل LeetCode تولید کند.
پژوهشگران همچنین به بررسی توانایی ChatGPT در اصلاح خطاهای کدنویسی خود پس از دریافت بازخورد از LeetCode پرداختند. آنها بهطور تصادفی ۵۰ سناریوی کدنویسی را انتخاب کردند که در آنها ChatGPT در ابتدا کد نادرستی تولید کرده بود، چه به دلیل عدم درک صحیح محتوا یا مشکل.
در حالی که ChatGPT در اصلاح خطاهای کامپایل کردن عملکرد خوبی دارد، معمولاً در تصحیح اشتباهات خود ضعیف است.
پژوهشگران همچنین دریافتند که کدهای تولید شده توسط ChatGPT دارای آسیبپذیریهای قابل توجهی هستند، مانند عدم وجود تست null، اما بسیاری از این مسائل بهراحتی قابل اصلاح بودند. نتایج همچنین نشان داد که کد تولید شده به زبان C از نظر پیچیدگی بیشترین پیچیدگی را دارد و پس از آن C++ و Python قرار دارند که پیچیدگی مشابهی با کدهای نوشته شده توسط انسان دارند.
تانگ میگوید، بر اساس این نتایج، ضروری است که توسعهدهندگان اطلاعات اضافی برای کمک به ChatGPT در درک بهتر مشکلات یا جلوگیری از آسیبپذیریها ارائه دهند.تانگ میگوید: «به عنوان مثال، هنگام مواجهه با مشکلات برنامهنویسی پیچیدهتر، توسعهدهندگان میتوانند تا حد امکان دانش مرتبط را ارائه دهند و در همان لحظه به ChatGPT بگویند که از کدام آسیبپذیریهای احتمالی آگاه باشد
سخن پایانی
به طور کلی، با پیشرفت کدنویسی، ChatGPT هنوز با مسائل و راهحلهای جدید آشنا نشده است. این مدل فاقد مهارتهای تفکر انتقادی انسانی است و تنها قادر به پاسخ به مسائلی است که پیشتر با آنها مواجه شده است. این میتواند توضیح دهد که چرا در حل مسائل کدنویسی قدیمی بسیار بهتر از مسائل جدید عمل میکند.