خب بچهها، امروز میخوایم درباره یک موضوع خیلی جذاب حرف بزنیم: اینکه چجوری مدلهای زبانی خیلی پیشرفته (Large Language Models یا LLM ها) دارن دنیا رو تو کارهای برنامهنویسی تغییر میدن، مخصوصاً واسه خلاصه کردن یا تجزیه برنامهها.
تا الان تحقیقات زیادی انجام شده که این LLMها رو برای کارهایی مثل خلاصهکردن برنامه (یعنی شما یه قطعه کد میدی، اون برات توضیح میده این کد چی کار میکنه) بررسی کردن. اما اگه بخوایم فراتر بریم – مثلاً از روی کد یه توصیف کاملاً دقیق و رسمی (Formal Specification) درست کنیم – قضیه سختتر میشه و کمتر کسی رفته سراغش!
حالا این وسط یه راه قدیمیتر و دقیقتر هم هست به اسم مهندسی معکوس مدلمحور (Model-Driven Reverse Engineering یا MDRE). مهندسی معکوس یعنی از انتها (محصول نهایی مثل کد) برمیگردن و درمیارن که کل سیستم دقیقاً چطور کار میکرده. وقتی میگیم مدلمحور، یعنی با مدلها و الگوهای رسمی کار دارن و خلاصه خیلی دقیقن. مثلاً یه برنامه نویس می خواد بفهمه یه برنامه جاوا یا پایتون دقیقاً چیکار میکنه، MDRE میتونه براش یه مدل از اون برنامه بسازه.
تو این تحقیق، اومدن دو روش LLM و MDRE رو با هم مقایسه کردن تا ببینن کدومشون بهتر میتونه کدهای پایتون و جاوا رو تبدیل کنه به زبان رسمی OCL. این OCL هم اسمش هست Object Constraint Language، که یه جور زبان رسمی و دقیق برای توصیف محدودیتهای مدلهای نرمافزاریه. یعنی مثلاً میتونی بگی فلان متغیر هیچ وقت نباید منفی بشه یا این تابع باید همیشه یه خروجی خاص داشته باشه.
پس چی شد؟ یه سری کار دادن به این مدلهای زبان مصنوعی پیشرفته (یه مدل مثل ChatGPT مثلاً) و همچنین به روش مهندسی معکوس مدلمحور و دیدن کدومشون برنامهها رو بهتر به OCL تبدیل میکنن. بعد، جالبیش اینه که اومدن یه راه ترکیبی هم تعریف کردن: یعنی یه جور ترکیب از هردو روش که نتیجهش حتی از دوتای قبلی هم بهتر شده!
خلاصه حرف، LLMها توی کارهایی که کمی تفسیر شخصی میخواد یا خلاصهسازی معمولی هستن، قوی عمل میکنن. اما وقتی حرف دقت و جزئیات رسمی وسط هست، هنوز MDREها حرف اول رو میزنن. ولی اگه این دوتا رو با هم قاطی کنیم، یعنی از خلاقیت LLM و دقت MDRE با هم استفاده کنیم، بهترین نتیجه رو میگیریم. آینده خلاصهسازی برنامهها و گرفتن توضیحات رسمی از روش ترکیبی این دو روشه!
در کل، این مقاله یه پل زده بین هوش مصنوعی و مهندسی نرمافزار سنتی و نشون داده اگه ابزارها رو هوشمند انتخاب کنیم و از هر کدوم جای درستش استفاده کنیم، میتونیم کارها رو خیلی راحتتر و دقیقتر انجام بدیم.
منبع: +