ما هي اللغة الخاصة بالمجال؟هل يستخدمه أحد؟وبأي طريقة؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

أعتقد أنني أبحث عن نوع من المقدمة ومعرفة ما إذا كان أي شخص قد استخدمها.هل هناك أي مزايا خاصة لاستخدامه؟

ويكيبيديا:

لغة خاصة بالمجال (DSL) هي لغة برمجة أو لغة مواصفات مخصصة لمجال مشكلة معين، وتقنية تمثيل مشكلة معينة، و/أو تقنية حل معينة.

هل يمكن لأي شخص أن يعطي أي أمثلة محددة لكيفية تنفيذه أو كيف يمكن أن يكون مفيدًا في سيناريو معين؟

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

المحلول

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

ومارتن فاولر هو مؤيد كبير للفكرة، و هنا .

نصائح أخرى

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

وتشمل الأمثلة على DSL بجميع لغات الاستعلام (SQL، كسباث، ...)، بجميع اللغات قالب (جانغو، هندى، ...)، ومخطوطات قذيفة، وخاصة بما في ذلك أشياء مثل حك، أمر مدفوعة متصفح الويب (تستخدم في الغالب لاختبار الآلي)، وتخزين البيانات وتبادل لغات (XML، YAML، ...)، واللغات وثيقة مثل اللثي، HTML أو CSS.

وبعض اللغات مع تركيب ومرنة للغاية مثل TCL واللثغة بناء DSL بشكل مباشر إلى اللغة ... عندما يكون ذلك ممكنا. معظم لغات استخدام السلاسل، وتحميلها عادة من الملفات الخارجية.

هل هناك أي مزايا خاصة من استخدامها؟ استخدامها للأغراض المقصودة منها هو مفيد جدا لدرجة أنك سوف يتوب عليهم دون معرفة، مثلك تماما وقد تم استخدام (أفترض) SQL أو HTML دون تفكير منهم كما تراخيص اشتراك الجهاز.

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

و(معالجة جوهر المسألة)

وأعتقد أن المرة الأولى التي رأيت DSL مكان ما، وتعريفه بأنه "مجال معين لغة " I يعتقد أيضا أنه كان واللغة ملموسة معينة أنا فقط لم يسمع عنها - ولكن، لا، لها مصطلح عام للغات التي صممت خصيصا لمنطقة تطبيق معينة.

ومن المفارقات، إذا كنت قد سمعت للتو حول TCL بأنها "لغة الأوامر أداة" كنت قد أعتقد، مثل تراخيص اشتراك الجهاز، أنه لن يكون هناك الكثير من TCLs لأدوات مختلفة - ولكن، لا، لها اسم محدد للغة البرمجة معينة

واعتقد انها لغة مناسبة لحل المشاكل بالنسبة مجال معين. يمكن أن يكون بعض اللغات معالجة حكم أو وصف الخدمة لغة.

وهناك العكس إلى لغة محددة للنطاق (DSL) هو اللغة للأغراض العامة .

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

كل شيء هو DSL ...

المجمع:موف R1 إلى R2
المجمعون:بيانات الإسناد -- A = A + 1، الشروط -- IF (TRUE) ...، الفرع -- RETURN
لغة البرمجة:...وصف بنية متداخلة
تكب / إب:وصف إلى/من العناوين
بي دي إف:وصف وضع النص/الصورة على الورق
الخطوط:وصف الشخصيات

أي لغة نستخدمها لوصف عملية معينة هي DSL.لسوء الحظ، هناك نقص في اللغات المحددة للمجال لوصف حتى عملياتنا الأساسية، لذلك نستخدم اللغات القليلة المتوفرة لدينا لوصف كل ما نقوم به.يتطلب "ضغط كافة ملفات html في موقع الويب الخاص بي" 300 سطرًا من 3 أو 4 لغات مختلفة لإكمالها.

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

سأبتعد عن استخدام الحلول الأخرى التي قد تكون ملائمة ولكنها لا تناسب المشكلة مثل HTML الذي تم استخدامه لتعريف البيانات (XML).يعد ملف CSV مفيدًا جدًا ويناسب معظم المشكلات.JSON لا يتناسب مع جزء سهولة الاستخدام، فهو مبالغة تضيف تعقيدات غير ضرورية إذا كان ملف CSV يعمل على حل معظم المشكلات.نحن نستخدم EXCEL كثيرًا لـ DSL، وهو يعمل بشكل رائع لوصف المشكلات الصغيرة، تحت 65 ألف إلى مليون صف، مثل الهياكل الشجرية أو القوائم، والعمود A هو المستوى، والأعمدة الأخرى عبارة عن أيقونات وألوان وتسميات وما إلى ذلك (EXCEL هو CSV قابل للتحرير).

لقد وجدت أن لغة HTML لم تحل مشكلة تخطيط الصفحة حقًا، لذا تخلصت منها وقمت بتحديد خط DSL مناسب.قمت بتحديد 6 مناطق في الصفحة، الرأس، والنص، والتذييل، والهوامش اليسرى/اليمين، والهوامش الكاملة اليسرى/اليمين.يمكنني بعد ذلك أن أخبر منشئ الصفحة بإضافة شريط العنوان، وشريط الحالة، والقوائم، والجدول، والنماذج،...، إلى خلايا محددة.يمكن بعد ذلك تقسيم كل خلية من هذه الخلايا إلى صفوف وأعمدة بأي عمق.يستغرق تخطيط الصفحة ثوانٍ لأي نمط.

يحتوي BODY على جدول للموظفين
يحتوي HEADER على تسمية توضيحية لشريط العنوان "Hello World" مع تسجيل الدخول إلى Collins Software

لا تتناسب قائمة DSL مع تخطيط الصفحة DSL، لذلك قمت بإنشاء DSL فريد للقوائم.

الموارد القائمة الرئيسية الخاصة بي
* تحديد: القائمة، م، المستوى، التسمية، أيقونة، الإجراء؛
م،0،ملف؛
م، 1، فتح، open.gif، ملف الحوار المفتوح؛

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

وحسنا! هناك الكثير من الأشياء أوضح أعلاه. سأحاول شرح ذلك في طريقة اسهل بكثير عن بعض واحد مثلي تأتي سوف تفهم.

وكما تستخدم لغات للأغراض العامة لأغراض العظمى يرصد DSL فقط لمجال معين. مثل HTML أو CSS.

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

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

ولقد كتبت بلوق وظيفة قصيرة مناقشة لماذا أحب استخدام تراخيص اشتراك الجهاز:

أتمنى نحن مستعملة اللغات محددة المجال (تراخيص اشتراك الجهاز) من المعلومات

في ذلك، وأنا تحديد DSL على النحو التالي:

<اقتباس فقرة>   

ولغة برمجة صغيرة مصممة خصيصا للاتصال الحلول لمجال معين من المشاكل.

في شروط الاستخدام، إذا كنت قد استخدمت من أي وقت مضى النملة، لغة الاستعلام الهيكلية (SQL)، أو الأنماط المتتالية ورقة (CSS)، وكنت قد استخدمت DSL.

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

ومثال واحد بسيط لمجال اللغة محددة (DSL) هو HTML والتي تستخدم لمجال معين يسمى التطبيقات على شبكة الإنترنت.

لقد سمعت مؤخرًا عن خدمة DSL ولكني وجدت مثالًا مفيدًا حقًا:لونا (lunascript السابق).

إنها لغة/إطار برمجة مصمم خصيصًا بواسطة فريق Asana لمنصتهم الخاصة.

كما وجدت أيضًا أن العديد من الشركات تصنع أطرها ولغاتها الخاصة من أجل خلق ميزة تنافسية مناسبة، بعض الأمثلة هي:

  • SAP مع AbAp
  • PeopleSoft مع PeopleCode
  • أبل مع الهدف-C
  • يحتوي Facebook على أشياء مثل FBML وFQL

هذه مخصصة للمجال لأنك ستستخدمها بشكل حصري تقريبًا للعمل على هذه الأنظمة الأساسية.

آمل أن تساعدك هذه الإجابة في توضيح المفهوم.

مثال على DSL المستخدم في التعلم الآلي هو patsy في python:https://patsy.readthedocs.io/en/latest/formulas.html#

والذي يعتمد على صيغة DSL من R:https://stat.ethz.ch/R-manual/R-devel/library/stats/html/formula.html

https://cran.r-project.org/web/packages/Formula/vignettes/Formula.pdf

وهادلي لديه قسم جميل في كتابه المتقدم R الذي يصف كيفية إنشاء DSL w/R:http://adv-r.had.co.nz/dsl.html

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

واللغات المجال محددة تعبر عن العمليات نطاقك والمعرفة بلغة يستخدم مباشرة المفاهيم والمنطق من حقل معين.

وعلى المجتمع ينمو بالتأكيد ولكن لا يزال في مستوى التقنيات "التيار" الآخرين.

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

وهنا هو مؤتمر حيث يعطي رئيس بعض الأمثلة DSL باستخدام JetBrains MPS أو مع تكنولوجيا التحرير Projectional: https://vimeo.com/197381453

DSL - لغة المجال المحددة

DSL هي لغة كمبيوتر تستهدف نوعًا معينًا من المشكلات، وليست لغة للأغراض العامة تستهدف أي نوع من مشكلات البرامج.

أين:التكوينات (TravisCI .yaml)، إنشاء البرامج النصية (gradle) ، تبعيات الأهداف (جراب)، برمجة واجهة المستخدم (أنكو) إلخ.

DSL هي برمجة تعريفية - ماذا للقيام بدلا من ذلك كيف لكى يفعل

خطوط DSL الخارجية لديك بناء الجملة المخصص الخاص بهم وأنت تكتب محللًا كاملاً لمعالجتها (على سبيل المثال.XML، RegExp، SQL، HTML، CSS، UML).

خطوط DSL الداخلية هي طرق معينة لاستخدام اللغة المضيفة لمنح اللغة المضيفة طابع لغة معينة (على سبيل المثال.Lisp، Ruby، Java التعليقات التوضيحية، وحدات الماكرو).

اقرأ أكثر هنا, هنا

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