Brahmakshatriya میگوید با استفاده از D2X به عنوان رابط، “برنامه شما را میتوان با استفاده از دیباگرهای محبوب بدون هیچ تغییری در خود دیباگرها اشکال زدایی کرد.” به نظر او، این مزیت اصلی از ترکیب D2X با BuildIt است: “اگر یک DSL با استفاده از BuildIt بنویسید، نیازی به انجام هیچ کار اضافی ندارید. بدون نوشتن یک خط اضافی، یک دیباگر رایگان دریافت می کنید. از کد.”
زمانی در سال 2019، MIT Ph.D. دانش آموز آجی برهماکساتریا یک هدف ساده، هرچند هنوز کاملاً چالش برانگیز را تدوین کرد. او میخواست این امکان را برای افرادی که در یک حوزه خاص مهارت دارند – مانند مدلسازی آب و هوا، بیوانفورماتیک یا معماری – بتوانند زبانهای برنامهنویسی خود را بنویسند، به اصطلاح زبانهای خاص دامنه (یا DSL)، حتی اگر کمی داشته باشند. یا عدم تجربه در ایجاد زبان های برنامه نویسی.
این خبر با حسن نیت از MIT News بازنشر شده است (web.mit.edu/newsoffice/)، یک سایت محبوب که اخبار مربوط به تحقیق، نوآوری و آموزش MIT را پوشش می دهد.
اما کمک به شکل D2X در راه است (تلفظ “دتاکس” است زیرا به مفهوم خلاص شدن از برنامه شما از سموم یا نقص مربوط می شود). D2X به خودی خود یک برنامه نیست، بلکه در عوض به عنوان یک کتابخانه طبقه بندی می شود – قطعه ای از کد کامپیوتری که می تواند توسط برنامه های دیگر مورد استفاده مجدد قرار گیرد. این برنامه برای کار با دیباگرهای موجود (مانند GDB یا LLDB) طراحی شده است که به عنوان پلی بین آن ابزارها و یک DSL معین عمل می کند. یک دیباگر به اطلاعاتی در مورد برنامه یا زبان برنامه نویسی نیاز دارد که باید پاک شود. آماراسینگه میگوید: «هر اشکالزدایی به آن اطلاعات در قالب خاص خود نیاز دارد که میتواند یک سند 400 صفحهای باشد». “اگر از D2X استفاده می کنید، لازم نیست نگران آن باشید. برای شما مراقبت شده است.”
Halide – یک زبان پردازش تصویر که در سال 2012 اختراع شد، سالها قبل از BuildI – یکی از اولین DSLهایی است که از گروه Amarasinghe بیرون آمد. توسعه آن توسط دانشجوی فارغ التحصیل آن زمان، جاناتان-راگان کلی و اندرو آدامز، یک فوق دکترای CSAIL در آن زمان، رهبری شد. آماراسینگه می گوید: «Halide در حال حاضر بسیار محبوب است و در بسیاری از برنامه های Adobe از جمله فتوشاپ استفاده می شود، اما هنوز هم دیباگر ندارد. او می افزاید که دلیل آن این است که دیباگرها بسیار پیچیده هستند. نوشتن آنها بسیار سخت است، به همین دلیل است که اکثر DSL های کوچک پشتیبانی از اشکال زدایی ندارند.
Brahmakshatriya توضیح می دهد که دلیل اصلی تولید یک زبان در یک حوزه تخصصی، “ترویج سهولت استفاده است.” برای مثال، یک DSL پردازش تصویر، میتواند تابعی داشته باشد که میگوید «کل تصویر را تار کنید». Brahmakshatriya خاطرنشان می کند که صدور همان فرمان در یک زبان همه منظوره به خطوط کد بیشتری نیاز دارد. “این بخشی از دلیل استفاده از DSL است. دیگری عملکرد است.” از آنجایی که عملیات ها مختص آن حوزه هستند، می توان آنها را با سهولت بیشتری بهینه کرد – به ترتیب مناسب انجام داد و از این رو کارآمدتر و سریع تر تکمیل شد.
این برگه یا سند یا نوشته تحت پوشش قانون کپی رایت است. به غیر از هرگونه معامله منصفانه به منظور مطالعه یا تحقیق خصوصی، هیچ بخشی بدون اجازه کتبی قابل تکثیر نیست. محتوای مذکور فقط به هدف اطلاع رسانی ایجاد شده است.
Amarasinghe معتقد است همه این تلاش ها چشم انداز ایجاد زبان های تخصصی را بسیار جذاب تر می کند. او میگوید: «همانطور که من میبینم، تعداد زیادی از مردم وجود دارند که از زبانهای سنتی پشتیبانی میکنند—هزاران برنامهنویس ابزارهایی برای C، C++ یا جاوا میسازند». از سوی دیگر، اگر من در حال ساخت یک DSL ساده هستم، هزاران برنامه نویس برای ارائه این همه پشتیبانی ندارم. اما اکنون، با BuildIt و D2X، او میافزاید: «افراد کوچک میتوانند همه چیزهایی را که دیگران به دست میآورند، از جمله اشکالزداها و در نهایت ویراستارها و نمایهگرها، به دست آورند – همان مزایایی که با زبانهای سنتی همراه است. مهندسانی که انواع کدهای پیچیده را می نویسند.”
به گفته Brahmakshatriya، که اصرار دارد هر DSL باید دیباگر مخصوص به خود را داشته باشد، این وضعیت مطلوبی نیست. “شما نمی توانید مستقیماً از اشکال زداهای موجود برای زبان جدید خود استفاده کنید زیرا آنها دامنه را درک نمی کنند.” او می گوید، علاوه بر این، نوشتن برنامه ای که در بار اول کاملاً صحیح باشد، غیرممکن است. “شما همیشه با چیزی شروع میکنید که دارای خطا است، هرچند که اغلب تا دیرتر در چرخه توسعه ظاهر نمیشوند. اگر در آن نقطه، زمانی که 5000 خط کد دارید، یک باگ ظاهر شود، میتواند بسیار سخت باشد. برای پیدا کردنش.” در نتیجه، هنگامی که یک برنامه “کد کامل” شد – که توسط توسعه دهندگان آن برای آزمایش آماده است – مهندسان نرم افزار ممکن است مجبور شوند بیش از نیمی از زمان خود را به کارهای طاقت فرسای اشکال زدایی اختصاص دهند.
یکی از اعضای گروه تحقیقاتی به سرپرستی پروفسور MIT Saman Amarasinghe در آزمایشگاه علوم کامپیوتر و هوش مصنوعی مؤسسه (CSAIL)، Brahmakshatriya میخواست این زبانها با تمام عملکردهای کمکی مورد نیاز مردم برای استفاده راحت از آنها، از جمله ابزارهایی برای اشکالزدایی، ارائه شوند. او و Amarasinghe توافق کردند که این فرآیند برای خلاص شدن از شر خطاها در یک نرم افزار ضروری است، زیرا آنها عدم پشتیبانی از اشکال زدایی را “پاشنه آشیل برای DSLها” نامیده اند.
این چند سال پربار برای هر دوی آنها بوده است. در سال 2021، Brahmakshatriya و Amarasinghe BuildIt را معرفی کردند، یک بسته نرم افزاری که کار ایجاد DSL را بسیار ساده می کند. و ماه گذشته، در یک کنفرانس بینالمللی در مونترال که توسط انجمن ماشینهای محاسباتی حمایت مالی شد، این دو D2X را معرفی کردند، ابزاری که اضافه کردن اشکالزدایی به هر DSL را آسان میکند و نشان داده شده است که بهخوبی با BuildIt کار میکند. مقاله آنها در مورد کار حتی برنده یکی از دو جایزه مقاله برجسته که در کنفرانس داده شد.
نقل قول: ابزار نرم افزار جدید راه آسان تری برای اشکال زدایی هر زبان برنامه نویسی خاص دامنه ارائه می دهد (2023، 10 آوریل) بازیابی شده در 10 آوریل 2023 از
Brahmakshatriya میخواهد پروفایلکنندگان را به همراه اشکالزداها و ویرایشگرها به عنوان بخشی از پلتفرم BuildIt شامل شود. او میگوید: «پروفایلرها مانند دیباگرها هستند، اما به جای اینکه به شما در یافتن باگها کمک کنند، به شما اجازه میدهند مشکلات عملکرد برنامهتان را ارزیابی کنید. “اگر برنامه کندتر از حد انتظار اجرا می شود، می توانید از یک نمایه ساز استفاده کنید تا بفهمید کدام قسمت از برنامه چیزها را به هم می ریزد.” او میگوید ویژگیهای مفید دیگری میتواند در آینده اضافه شود.
Brahmakshatriya BuildIt را به عنوان “یک DSL برای ایجاد DSL” توصیف می کند. این یک روش چند مرحله ای را برای استفاده از یک زبان برنامه نویسی همه منظوره موجود و تجزیه آن تا زمانی که به روش درست تخصصی شود، تسهیل می کند. او می گوید: فرض کنید مشکلی دارید و می خواهید برنامه ای برای حل آن بنویسید. “شما می توانید برنامه ای بنویسید تا آن را به طور کامل حل کنید، یا می توانید یک برنامه کوچکتر بنویسید تا فقط زیر کلاس مشکلی را که به آن علاقه دارید حل کنید. هر چه برنامه را تخصصی تر بسازید، سریعتر اجرا می شود.” BuildI برای ساخت DSLها با در نظر گرفتن آن اصول راهنما طراحی شده است.
آدریان سامپسون، دانشیار علوم کامپیوتر در دانشگاه کرنل، میگوید: «D2X به یک تناقض ذاتی در نرمافزار با کارایی بالا توجه میکند. از یک طرف، زبانهای خاص دامنه تنها امید ما برای پیشرفتهای جدی در بازده محاسباتی در عصر مدرن هستند. با این حال، ساختن یک دیباگر جدید برای یک زبان جدید از ابتدا کار سختی است، و عدم وجود یک دیباگر یک دلیل منطقی است. یک برنامه نویس ممکن است زبان “بهتر” را به نفع زبان “بدتر” رد کند.
اما این پایان داستان نیست، تا جایی که به برهماکساتریا مربوط می شود. یکی دیگر از ویژگیهایی که او میخواهد با BuildIt ادغام شود، علاوه بر اشکالزدایی، ویرایش است که نوشتن یک برنامه را آسانتر میکند. برای مثال، ویرایشگرها میتوانند کلمات کلیدی خاصی را در یک سند برجسته کنند که میتواند خوانایی آن را بهبود بخشد. آنها می توانند عملکردهای دیگری مانند تکمیل خودکار را انجام دهند که پس از وارد کردن بخش کوچکی به طور خودکار متن را پر می کند.