کد خبر: 135191

اختصاصی شبکه علمی ثریا

نرم افزار جدیدی که هر زبان برنامه‌نویسی را اشکال‌زدایی می‌کند

مهندسان نرم افزار ممکن است مجبور شوند بیش از نیمی از زمان خود را به کارهای طاقت فرسای اشکال زدایی اختصاص دهند. اما کمک به شکل D2X در راه است.

اختصاصی شبکه علمی ثریا- در سال 2019، یک محقق  یک هدف ساده، اما کاملاً چالش برانگیز را تدوین کرد. او می‌خواست این امکان را برای افرادی که در یک حوزه خاص مهارت دارند - مانند مدل‌سازی آب و هوا، بیوانفورماتیک یا معماری - بتوانند زبان‌های برنامه‌نویسی خود را بنویسند، حتی اگر تجربه کمی در ساخت زبان‌های برنامه نویسی دارند یا حتی اگر در ح زبان‌های خاص دامنه (یا DSL)بی‌تجربه هستند. یکی از اعضای گروه تحقیقاتی در آزمایشگاه علوم رایانه و هوش مصنوعی مؤسسه (CSAIL)، می‌خواست این زبان‌ها را با تمام عملکردهای کمکی مورد نیاز مردم برای استفاده راحت از آنها، از جمله ابزارهایی برای اشکال‌زدایی، ارائه دهد.تیم تحقیقاتی توافق کردند که این فرآیند برای خلاص شدن از شر خطاها در یک نرم افزار ضروری است، زیرا آنها عدم پشتیبانی از اشکال زدایی را "پاشنه آشیل برای DSLها" نامیده اند.
 

در سال 2021، آنها یک بسته نرم افزاری که کار ایجاد DSL را بسیار ساده می کند معرفی کردند و در ماه مارس۳۲۰۲۴، آنها D2X را معرفی کردند، ابزاری که اضافه کردن سیستم اشکال‌زدایی به هر DSL را آسان می‌کند. به گفته آنها دلیل اصلی تولید یک زبان در یک حوزه تخصصی، ترویج سهولت استفاده از آن زبان است. برای مثال، یک DSL پردازش تصویر، می‌تواند تابعی داشته باشد که می‌گوید «کل تصویر را تار کنید».  صدور همان فرمان در یک زبان همه منظوره به خطوط کد بیشتری نیاز دارد.این بخشی از دلیل استفاده از DSL است. بخش دیگری عملکرد است.از آنجایی که عملیات ها مختص آن حوزه هستند، می توان آنها را با سهولت بیشتری بهینه کرد به ترتیب مناسب آنها را انجام داد و از این رو کارآمدتر و سریع تر به هدف نهایی رسید. از این رو آنها BuildIt را به عنوان یک DSL برای ایجاد DSL دیگر توصیف می کنند. این یک روش چند مرحله ای را برای استفاده از یک زبان برنامه نویسی همه منظوره موجود و تجزیه آن تا زمانی که به روش درست تخصصی شود، تسهیل می کند. آنها می‌گویند: فرض کنید مشکلی دارید و می خواهید برنامه ای برای حل آن بنویسید. شما می توانید برنامه ای بنویسید تا آن را به طور کامل حل کنید، یا می توانید یک برنامه کوچکتر بنویسید تا فقط همان مشکلی را که با آن مواجهید حل کنید.

هر چه برنامه را تخصصی تر بسازید، سریعتر اجرا می شود. در واقع BuildI برای ساخت DSLها با در نظر گرفتن آن اصول راهنما طراحی شده است.Halide - یک زبان پردازش تصویری بود که در سال 2012 اختراع شد و یکی از اولین DSLهای در حال حاضر بسیار محبوب است و در بسیاری از برنامه های Adobe از جمله فتوشاپ استفاده می شود، اما هنوز هم اشکال زدا ندارد. او می افزاید که دلیل آن این است که اشکال زداها بسیار پیچیده هستند. نوشتن آنها بسیار سخت است، به همین دلیل است که اکثر DSL های کوچک پشتیبانی از اشکال زدایی ندارند.ی کی از محققان این پروژه تاکید دارد هر DSL باید اشکال زدای  مخصوص به خود را داشته باشد: شما نمی توانید مستقیماً از اشکال زداهای موجود برای زبان جدید خود استفاده کنید زیرا آنها دامنه جدیدرا درک نمی کنند. او می گوید، علاوه بر این، نوشتن برنامه ای که در بار اول کاملاً صحیح باشد، غیرممکن است.

شما همیشه با چیزی شروع می‌کنید که دارای خطا است، اگر در آن نقطه، زمانی که 5000 خط کد دارید، یک باگ ظاهر شود، می‌تواند کار را برای پیدا کردنش بسیار سخت کند. در نتیجه، هنگامی که یک برنامه "کد کامل" شد  و توسط توسعه دهندگان آن برای آزمایش آماده شد ، مهندسان نرم افزار ممکن است مجبور شوند بیش از نیمی از زمان خود را به کارهای طاقت فرسای اشکال زدایی اختصاص دهند. اما کمک به شکل D2X در راه است  این کلمه "دتاکس" خوانده می‌شود زیرا به مفهوم خلاص شدن  برنامه شما از سموم یا نقص مربوط می شود). D2X به خودی خود یک برنامه نیست، بلکه در عوض به عنوان یک کتابخانه طبقه بندی می شود. در واقع قطعه ای از کد کامپیوتری است که می تواند توسط برنامه های دیگر مورد استفاده مجدد قرار گیرد. این برنامه برای کار با اشکال زداهای موجود (مانند GDB یا LLDB) طراحی شده است که به عنوان پلی بین آن ابزارها و یک DSL معین عمل می کند. یک اشکال زدا به اطلاعاتی در مورد برنامه یا زبان برنامه نویسی نیاز دارد که باید پاک شود.