سؤال

لقد أدهشني طموح وإبداع جهود تشارلز سيموني لإنشاء مجال البرمجة المتعمدة ، أولاً في Microsoft ثم مع شركته الخاصة.

ما هو بالضبط البرمجة المتعمدة

http://en.wikipedia.org/wiki/intentional_programming

في هذا النهج في البرنامج ، يقوم المبرمج أولاً بإنشاء صندوق أدوات خاص بمجال مشكلة معينة (مثل التأمين على الحياة). خبراء المجال ، بمساعدة المبرمج ، يصفون السلوك المقصود للبرنامج بطريقة تراه هو ما تحصل عليه (wysiwyg). يستخدم النظام الآلي وصف البرنامج وصناديق الأدوات لإنشاء البرنامج النهائي. يتم إجراء تغييرات متتالية فقط على مستوى Wysiwyg.

يبدو أنه نهج مفيد وعملي للبرمجة ، وربما التحايل على العديد من المشكلات مع النهج الحالية لتطوير البرمجيات.

في الأساس ، يبدو أنه يسهل إنشاء اللغات الخاصة بالمجال من قبل غير المبرمجين (محللي الأعمال/الأنظمة) ولكن في مرحلة أقرب إلى تنفيذ الحياة الواقعية مما يمكن أن توفره UML. يقول إنه سيتم إكماله في نهاية المطاف ، لكنه لم يكن موجودًا بعد (بعد حوالي 15 عامًا).

تقوم DSLs بتشغيل سلسلة من محركات القواعد البسيطة المكونة من 5 خط إلى تطبيقات معقدة مثل Ruby on Rails. لذلك أتصور أن التأخير في إطلاق منتجه يتعلق بحقيقة أنه يتعامل مع تبسيط مستوى أعلى من التجريد لأنه يجب أن يسمح بشكل أساسي بتغليف جميع لغات المجال مرة واحدة.

لذا ، سؤالي

(أ) سواء Antlr يمكن أن يكون بديلاً للبرمجة المتعمدة - على الرغم من أنه ربما يكون بديلاً أقل سهولة في الاستخدام يتطلب تدخل المبرمجين بدلاً من السماح لمحللي الأعمال بإنشاء DSL؟ هل يمكنك استخدام Antlr لإنشاء DSL مثل Ruby on Rails (على افتراض أنه دعم روبي كإخراج - وهو ما أعتقد أنه لا)؟ ماذا لا يمكن أن تفعل؟ أيضًا ، لا أفهم لماذا يطلق عليه اسم "محلل اللغة" بدلاً من "مولد لغة" - لأن الأخير يصف ما يستخدمه بينما يصف الأول كيف يحقق النتيجة النهائية.

و

(ب) إذا كان AntlR مختلفًا عن البرمجة المتعمدة ، فهل هناك أي شيء مشابه للبرمجة المتعمدة؟

هل كانت مفيدة؟

المحلول

أنا لست خبيرًا في هذا الأمر ، لذا تعامل مع قليل من الملح. لكن...

Antlr نفسها ليست مولد DSL ، على الرغم من أنه يمكن استخدامه لإنشاء رمز يفسر DSLs. إنه مولد محلل - ولكن يجب على مولد DSL إنشاء ما يولد Antlr من المحلل.

نصائح أخرى

في إجابة على الجزء ب) ، هناك ثلاثة أنظمة تعمل في مساحة مماثلة هي:

كل من هذه المنتجات لها نقاط قوة وضعف مختلفة ، ولكن جميعها تندرج في فئة منضدة العمل اللغوية. من المحتمل أن يكون منضدة العمل المتعمدة للبرامج المتعمدة أكثر المنتجات طموحًا في هذه الفئة حتى الآن ، ولكنها غير متوفرة بشكل عام.

MPS و XTEXT هي منتجات مجانية ومفتوحة المصدر. Metacase هو الأكثر نضجا ، وهو منتج تجاري. كل منهم لديهم منحنى تعليمي حاد.

Antlr هو مجرد مولد محلل. في أي DSL غير التافهة ، تكون كتابة المحلل أقل من 50 ٪ من الجهد الذي تم إنفاقه في تنفيذ DSL. مُقيِّم/مولد محرك/رمز القاعدة/الجدول الزمني أو أي شيء آخر يقوم به DSL الخاص بك ، ربما يتطلب المزيد من العمل ولا يمكن إنشاؤه مثل المحلل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top