0Pricing
Lua Academy · درس

مبادئ تصميم DSL في Lua

اختر بين DSL داخلية (صياغة Lua) وDSL خارجية (محلّل مخصص)

مبادئ تصميم DSL في Lua درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

ما هي DSL؟

إن لغة خاصة بالمجال (DSL) هي لغة مصغّرة مخصّصة لمجال مشكلة محدد. وفي Lua، تعيد DSL الداخلية استخدام صياغة Lua مع واجهات برمجة ذكية.

DSL الداخلية مقابل الخارجية

تكون DSL الداخلية كود Lua صالحًا، لكنها تُقرأ كلغة خاصة بالمجال. أما DSL الخارجية فلها صياغتها الخاصة وتتطلب محللًا مكتوبًا بلغة Lua.

لماذا Lua للـ DSL؟

تجعل صياغة Lua المرنة (استدعاءات الدوال من دون أقواس للوسيط المفرد من نوع جدول أو سلسلة نصية، وصياغة النقطتين، وإعادة تحميل المعاملات عبر الميثاميثودات) بناء DSL داخلية أمرًا طبيعيًا جدًا.

استدعاء الدالة بوصفه تصريحًا

تسمح Lua باستدعاء الدوال من دون أقواس عندما يكون الوسيط المفرد جدولًا أو قيمة سلسلة نصية حرفية. ويتيح ذلك بناء DSL بأسلوب تصريحي.

task "build" {  -- task("build", {...})
  depends = {"compile", "test"},
  run = function() os.execute("make") end
}

DSL بنمط البنّاء

يجمع البنّاء الإعدادات عبر تسلسل استدعاءات الأساليب، ثم ينفّذها عند اكتمالها.

local query = DB:select("*")
             :from("users")
             :where("age > 18")
             :limit(10)
             :execute()

DSL للإعدادات

ملف إعدادات يبدو كبيانات منظّمة، لكنه في الوقت نفسه كود Lua صالح.

-- config.lua
return config {
  host = "localhost",
  port = 8080,
  debug = true,
  routes = {
    { path="/api", handler="ApiHandler" },
    { path="/web", handler="WebHandler" },
  }
}

DSL تصريحية لربط الأحداث

استخدم استدعاءات الدوال مع وسائط من نوع جدول لإنشاء صياغة تصريحية لربط الأحداث.

on("click", "#button") (function(e)
  print("Clicked:", e.target)
end)

إعادة تحميل المعاملات في DSL

تسمح الميثاميثودات لتعبيرات مثل query.age > 18 ببناء كائنات استعلام بدلًا من مقارنة القيم. ويتيح ذلك إنشاء DSL شبيهة بـ SQL.

اختيار DSL الداخلية أو الخارجية

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

قابلية القراءة أولًا

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

دعم الأدوات

تستفيد DSL الداخلية في Lua من دعم بيئات التطوير المتكاملة لـ Lua، مثل تمييز الصياغة والإكمال التلقائي. أما DSL الخارجية فتتطلب كتابة أدواتك الخاصة، مثل المحلل والمنسّق والمدقق.

سؤال حول DSL

ما هي DSL الداخلية؟

مراجعة: مبادئ تصميم DSL

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

الأسئلة الشائعة

هل درس «مبادئ تصميم DSL في Lua» مجاني؟

نعم — نص درس «مبادئ تصميم DSL في Lua» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «مبادئ تصميم DSL في Lua»؟

اختر بين DSL داخلية (صياغة Lua) وDSL خارجية (محلّل مخصص) تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «مبادئ تصميم DSL في Lua»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مبادئ تصميم DSL في Lua
  2. زيادة تحميل المعاملات لسلاسة DSL
  3. إنشاء DSL للإعدادات
  4. محلّل تعبيرات بسيط
← العودة إلى Lua Academy