سؤال

مجرد قراءة (الألمانية) Wiki- المقالة حول تطوير SW المدفوعة بالطراز (MDSD).تلخيص الويكي التعريف:

  • mdsd يدور حول المبدأ الجاف (لا تكرر نفسك)
  • mdsd يدور حول تصميم DSLS (بلغات المجال الخاصة) والمولدات
  • وصف موجز أكثر للمشاكل (من خلال المستوى الأعلى من التجريد من DSLs المعني) ممكن من خلال MDSD.

    منذ أن أعرف واستخدم البرمجة الوظيفية ذات الترتيب العالي وأتساءل، وسؤالي الفعلي هو: هو MDSD لا شيء سوى محاولة مستبات لحقن (جزء من) الميزات القوية عروض البرمجة الوظيفية ذات الترتيب العالي إلى لغات البرمجة / النماذج التي تفتقر بطبيعتها هذه الميزات؟

    (أو هل أسيء فهمها ويمكن استخدام mdsd حتى استخدام البرمجة الوظيفية ذات الترتيب الأعلى؟)

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

المحلول

أفضل أن أنظر إليها في الاتجاه الآخر. OOP، MDSD، TDD، تصميم مدفوعة بالمجال، والعديد من النماذج الأخرى هناك فقط ... النماذج. إنهم طرق للنظر في مهمة تطوير البرمجيات التي طورها الناس لمعالجة الأشياء التي ينظر إليها على عدم وجود ما جاء أمامهم. اتضح أن البرمجة الوظيفية تقوم بنفس الشيء - إنها تعطي قوى مبرمج للتجريد غير أنيقة بلغات لا تملك وظائف من الدرجة الأولى. لذلك لن أقول MDSD هي محاولة يائسة لإعطاء الملامح الوظيفية لغات غير وظيفية بقدر ما أقول إن الناس يأتون في نفس المشكلة من منظور مختلف.

بعض الإجابات على هذا الحديث حتى يكون السؤال طريقة مختلفة لقولها وبعد يقول Shreevatsar، "أي شيء تقريبا يمكنك القيام به مع وحدات الماكرو التي يمكنك القيام بها مع وظيفة أعلى طلبية". يقول Matthias Benkard، "يتم تخفيف عدم وجود وحدات الماكرو إلى حد ما من خلال المزيد من المفاهيم ... مفاهيم مثل Monads و Arrows." تعليقات أخرى أيضا صدى نفس الموضوع. تذكر أن أحد مبادئ MDSD هو مولدات. وحدات الماكرو هي مولدات توقيت الترجمة. لذلك أود أن أترجم بياناتها كوسيطة أن MDSD سهلة بطبيعتها في اللغات الوظيفية.

نصائح أخرى

هناك فرق كبير بين صنع dsl (لغة خاصة بالمجال) (FP) وإنشاء مجموعة كاملة من كائنات مجال <قوية> (OOP) (مع منطق الأعمال الكائنات).

يمكن أن يعاني FP نفس المشكلة (والمزايا) التي تقوم بها اللغات الإجرائية: فصل السلوك والبيانات . لغات OOP تثبيط هذا. يعرف هذا الفصل باسم نموذج النفقات النفقي .

هذا "الانفصال" قد يؤدي إلى تغيير بياناتك صعبة للغاية (وربما ما هو أسوأ مع DSL) شاهد مشاركتي: التعامل مع تغييرات نمذجة البيانات الإضافية في البرمجة الوظيفية

ولكن على الجانب الآخر تغيير السلوك والحصول على أشياء عديمي الجنسية في جميع اللوحة هي ألم في بعقب مع تصميم مدفوعة المجال OOP. لكن مع أشياء مثل AOP ITD ، و meta-programming يصبح هذا أقل من مشكلة.

Scala and Ruby مثال جميل على مزيج من كل من التقنيات.

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