آیا هوش مصنوعی واقعاً می‌تواند برنامه‌نویسی کند؟ بررسی موانع مهندسی نرم‌افزار خودران

تصور کنید آینده‌ای را که در آن هوش مصنوعی بی‌سر و صدا وظایف تکراری توسعه نرم‌افزار را به عهده می‌گیرد؛ مثل بازنویسی کدهای پیچیده، مهاجرت سامانه‌های قدیمی به فناوری‌های جدید و یافتن باگ‌هایی که در شرایط خاص بروز می‌کنند. در چنین آینده‌ای، مهندسان نرم‌افزار انسانی می‌توانند تمرکز خود را معطوف به طراحی معماری سیستم‌ها و حل مسائل نوآورانه کنند. پیشرفت‌های اخیر در حوزه هوش مصنوعی ما را یک گام به این چشم‌انداز نزدیک‌تر کرده‌اند، اما پژوهشی جدید از سوی آزمایشگاه علوم کامپیوتر و هوش مصنوعی MIT (CSAIL) و شماری از دانشگاه‌ها نشان می‌دهد که تحقق این آینده نیازمند توجه به چالش‌های فعلی است.

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

مسئله فقط تولید کد نیست

آرماندو سولار-لزاما، استاد مهندسی برق و علوم کامپیوتر MIT و نویسنده ارشد این مقاله، تأکید می‌کند که تلقی عمومی از مهندسی نرم‌افزار اغلب به برنامه‌نویسی ابتدایی تقلیل می‌یابد. در حالی‌که در عمل، توسعه نرم‌افزار وظایفی چون بازآرایی کد، مهاجرت سیستم‌های عظیم از زبان‌هایی مانند COBOL به Java، تست مداوم برای یافتن باگ‌های هم‌زمانی، وصله‌کردن آسیب‌پذیری‌های جدید و بررسی دقیق کد برای سبک، کارایی و امنیت را نیز شامل می‌شود.

الگوهای ارزیابی ناکافی

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

مشکلات در تعامل انسان و هوش مصنوعی

الکس گو، دانشجوی فارغ‌التحصیل MIT و نویسنده اول مقاله، تعامل کنونی بین انسان و مدل‌های کدنویسی را «خط ارتباطی کم‌عمق» توصیف می‌کند. او می‌گوید که هنگام تولید کد از سوی مدل، معمولاً فایل‌هایی بزرگ و بدون ساختار دریافت می‌کند که حتی اگر شامل تست هم باشند، اغلب سطحی‌اند. همچنین فقدان امکان کنترل کیفیت یا اعلام سطح اطمینان مدل می‌تواند منجر به اتکا بیش از حد به خروجی‌های اشتباه یا “توهمی” شود.

مقیاس و تناسب؛ چالش دیگر

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

راهکارها: داده بهتر، ابزارهای شفاف‌تر

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

تقویت انسان، نه جایگزینی آن

در نهایت نویسندگان تأکید می‌کنند که هدف نهایی جایگزینی برنامه‌نویس‌ها نیست، بلکه تقویت آن‌هاست. اگر هوش مصنوعی بتواند وظایف تکراری، پیچیده یا خسته‌کننده را به‌درستی انجام دهد، وقت توسعه‌دهندگان برای خلاقیت، استراتژی و مسائل اخلاقی آزاد می‌شود.

این مقاله با همکاری محققانی از دانشگاه‌های استنفورد، برکلی، کرنل و جان هاپکینز تهیه شده و در کنفرانس بین‌المللی یادگیری ماشین (ICML) ارائه شده است.

منبع: MIT News

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *