تبحث عن الأدلة العلمية من فوائد استخدام DSL

StackOverflow https://stackoverflow.com/questions/1625608

  •  06-07-2019
  •  | 
  •  

سؤال

جريج ويلسون الحديث "بت الأدلة" ( http://www.slideshare.net/gvwilson/bits-of-evidence-2338367 ) يناقش عدم وجود أدلة وراء المطالبات التالية التي مارتن فاولر متقدمة كما فوائد استخدام DSL:

"[باستخدام المجال-sepcific اللغة] يؤدي إلى اثنين من الفوائد الأساسية.أول و أبسط تحسين الإنتاجية مبرمج.الثاني هو...التواصل مع الخبراء في المجال." -- مارتن فاولر في IEEE البرامج تموز / يوليه-آب/أغسطس 2009

السؤال:هل هناك أي دراسات تجريبية تقديم الأدلة إما تحسين مبرمج الإنتاجية أو تحسين التواصل مع الخبراء في المجال من استخدام DSL ؟

الكثير من الناس بناء DSLs غير قادر على تقديم إجابة منطقية إلى "لماذا بناء DSL ؟" و "لماذا DSL تساعدك أكثر من جيد يؤخذ كائن النموذج؟"

أسمع الكثير من "أنا أفعل ذلك لأنه بارد و الجميع يفعل ذلك" - وهي ليست عقلانية الإجابة.

وأعتقد أن DSLs مفيدة على الأقل بعض الوقت ولكن هذا ليس من المرجح أن يكون "الرصاصة الفضية" التي ينبغي أن تستخدم بشكل عشوائي.أود أن أرى بعض الأعمال العلمية التي تصف عندما DSLs ينبغي وما لا ينبغي أن تستخدم - على أساس البحوث التجريبية.

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

نصائح أخرى

ذلك يعتمد على ما كنت تنظر DSL أن يكون.

على سبيل المثال, هو css DSL?أود أن أعتقد ذلك ، فإنه من الواضح أن تجعل من السهل على غرار صفحة كما في HTML 3 كنا الجداول الترتيبات ، لم يكن لديها المرونة نفعل الآن.

إذا كان لديك DSL بحيث يمكن للطلاب تصميم جزيئات فقط باستخدام الذرية الرموز (H20), بعد ذلك سيكون أسهل من القيام الترميز بنفسك, كما يمكنك أن ننظر بسرعة الجزيئية التكوين إذا كنت تعطي رموز أنواع الترابط ، على سبيل المثال.

أنا لا أعرف من ورقة تبين طريقة واحدة أو أخرى, ولكن, إذا كان جمهورك المستهدف ليس المبرمجين ، ثم DSL المنطقي ، لذلك نحن يمكن أن يكون المحاسبين كتابة التطبيقات باستخدام المصطلحات ، بدلا من إعطاء متطلبات المطورين.

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

كل فرضية "العلمية" في هذه القضية مشكوك فيها.ببساطة ليس هناك طريقة لضمان المعايير من "استنساخه", "التحكم (المجموعة)" مطلوب دراسة تطبيقية.

حد كبير في البرمجة الأعمال لا توجد جدية الدراسات التجريبية على فوائد شيئا قبل استخدامها.سواء SQL, وجوه المنحى اللغات اللغات الوظيفية ، وجمع القمامة ، إلخ.

هذه الأمور تميل إلى أن تكون قررت السوق مع مرور الوقت.

لماذا هذا هو الحال ربما هو مزيج من اثنين من الأسباب.واحد هو أنه مكلف جدا أن الدراسة التجريبية و هو أرخص بكثير من وجهة نظر اقتصادية فقط أن تحاول ذلك.والآخر هو أن كل حالة مختلفة ، لذلك دراسة تطبيقية يجب أن تبدأ مع الحد من هذه المشكلة تحت الدراسة ضيقا جدا أن يكون مناسب مقارنة بين استخدام DSL و لا تستخدم واحدة ، والنتيجة النهائية من الدراسة لن تكون مفيدة جدا أبعد من نوع معين من المشكلة التي تم اختيارها.

أعتقد أننا يمكن أن نقول من تجربتنا أن لا شيء هو الرصاصة الفضية, و الإصرار على سبب وجيه النهج سيجعل أي حل أفضل ، لأنه حتى لو DSL من شأنه أن يساعد الوضع, إذا كنت لا أعرف لماذا كنت تفعل ذلك فإنك لن تعرف إذا كنت تفعل ذلك الحق وربما في نهاية المطاف في عداد المفقودين كله ينفع.

هذا هو المعقول السؤال, وأعتقد أن هناك مشاكل التعريف ، مثل "ما هو DSL"?عندما buzword يصبح "الساخنة" يصبح فرصة التسويق و يحصل على الطلاق من العلوم الأساسية ، إذا كان هناك أي.

قبل عدة سنوات كتبت كتاب (بناء أفضل التطبيقات, ISBN 0-442-01740-5 طويلة من الطباعة) حيث حاولت أن تبدو في الأداء ، ليس فقط من البرامج, ولكن من المبرمجين.حاولت أن ننظر إليها باستخدام نظرية المعلومات.

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

رسالتي هي أن أكثر تستعصي على رمز هو المقياس ، وأكثر ما يأتي تشبه النموذج العقلي المجال ، لذلك فمن المعقول أن يطلق عليه أكثر "المنحى المشكلة" أو أكثر "المجال محددة".واحدة من سمات لاحظت من هذه المدونة هو أنه يميل إلى أن يكون أكثر بيان المشكلة بدلا من الحل من المشكلة.الحل لا يكمن في اللغة ، ولكن في تنفيذ اللغة الهيكل الفرعي.هذا هو صدى ، على الرغم من عدم اتفاق مباشر مع مفهوم "التعريفي" مقابل"حتمية" اللغة.

وذلك في محاولة الإجابة على سؤالك أود أن أقول دعنا نبتعد عن الناس ما قد تريد "DSL" يعني وبدلا من البحث في تعريف هذا على الأقل معتدلة لا لبس فيها.

كجزء من تطوير هذه الفكرة, أنا قد عثر على عدد من التقنيات ، واحدة منها التفاضلية التنفيذ, الذي يبدو أنه يعطي الصيانة الجيدة لترميز UIs, ويقلل أيضا من حجم التعليمات البرمجية المصدر من قبل ما يقرب من أمر من حجم.نظريتي هي أن هذا مثال ناجح ما DSL قد يكون.

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

من اللغويين سفير و وورف ، يمكننا أن نتعلم أن الخصائص النحوية للغة تأثير تفكيرنا = إذا قمت بإنشاء DSL, سوف أفكر أكثر في مجال معين و ربما أقل الأغراض العامة.ذلك هو كل شيء عن التجريد ، مثل الغرض العام لغات البرمجة تميل إلى مجردة من الجهاز, لذلك نحن قادرون على التركيز أكثر على خوارزميات وهياكل تصميم من مجموعة التعليمات ، معالجة أوضاع التسجيل أحجام الخ.

لست متأكدا من أي شخص قد فعلت أي دراسات بالقدر الذي تحتاجه.تجربتي على الرغم من أن DSL يمكن أن يكون مكلفا خلق في المقام الأول (ربما 2X أو المزيد من الجهد من أبسط نموذج كائن إلى أن تفعل الشيء نفسه).ولكن مرة واحدة تم إنشاؤها المطورين سوف تحصل على فائدة مباشرة من خلال كونها قادرة على أن تفعل الأشياء بشكل أسرع مع DSL من النموذج.

المشكلة في السؤال هو علاج جميع DSLs على قدم المساواة.بعض سيكون من الأسهل لتنفيذ الآخرين أصعب ما إذا كان واحد هو القيام بطلاقة واجهات/الداخلية DSLs أو الخارجية DSLs من شأنه أن يؤدي إلى أوقات مختلفة/تكلفة التنفيذ.

واحد الميزة الرئيسية التي قد لا تكون مشمولة في مثل هذه الدراسات هو السهولة التي DSL يمكن أن يؤدي إلى التعبير عن تنفيذ التعليمات البرمجية.كما يمكن أن تساعد الآخرين على فهم القصد من القانون ربما أسهل و منذ صيانة المرحلة من حياة تطوير البرمجيات هو كبير مكون من SDLC هذا يمكن أن يؤدي إلى أكبر بكثير من الفوائد (في المدى الطويل) من البداية فقدت في إيجاد DSL.

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