ما هي لغة البرمجة النصية التي يجب دعمها في قاعدة التعليمات البرمجية الموجودة؟

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

  •  08-06-2019
  •  | 
  •  

سؤال

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

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

هذه هي المتطلبات الحقيقية الوحيدة؛

  1. يجب أن تكون مكتبة مشتركة بين الأنظمة الأساسية يمكن تجميعها من المصدر
  2. يجب أن تكون البرامج النصية قادرة على استدعاء وظائف جانب التعليمات البرمجية المسجلة
  3. يجب أن يكون الكود قادرًا على استدعاء وظائف جانب البرنامج النصي
  4. يمكن استخدامه ضمن قاعدة بيانات C/C++.
هل كانت مفيدة؟

المحلول

بناءً على تجربتي الخاصة:

  • بايثون.IMHO هذا هو اختيار جيد.لدينا قاعدة رموز كبيرة جدًا تضم ​​الكثير من المستخدمين وقد أعجبتهم كثيرًا.
  • روبي.هناك بعض التطبيقات الرائعة مثل Google Sketchup التي تستخدم هذا.لقد كتبت مكونًا إضافيًا لـ Sketchup واعتقدت أنه جميل جدًا.
  • تي سي ال.هذه هي لغة البرمجة النصية القابلة للتضمين في المدرسة القديمة، ولكنها لا تتمتع بالكثير من الزخم هذه الأيام.إنها ذات جودة عالية، ويستخدمونها في تلسكوب هابل الفضائي!
  • لوا.لقد قمت فقط باستخدام أشياء صغيرة ولكن IIRC يحتوي فقط على نوع رقمي بفاصلة عائمة، لذا تأكد من أن هذه ليست مشكلة بالنسبة للبيانات التي ستعمل معها.

نحن محظوظون لأننا نعيش في العصر الذهبي للكتابة النصية، لذلك من الصعب اتخاذ قرار سيء إذا اخترت أيًا من الخيارات الشائعة.

نصائح أخرى

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

لست متأكدًا تمامًا ولكن أعتقد أن Spidermonkey هي متطلباتك الأربعة.

لقد استخدمت بايثون على نطاق واسع لهذا الغرض ولم أندم على ذلك أبدًا.

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

AngelScript

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

بالنسبة لكاتب البرنامج النصي، تتبع لغة البرمجة النصية بناء الجملة المعروف على نطاق واسع لـ C/C++ (مع تغييرات طفيفة)، ولكن دون الحاجة إلى القلق بشأن المؤشرات وتسرب الذاكرة.

السؤال الأصلي وصف Tcl بحرف "T".

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

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

تأتي Tcl أيضًا مع مجموعة أدوات واجهة المستخدم الرسومية (GUI) من الدرجة الأولى (Tk) والتي يمكن القول إنها واحدة من أسهل مجموعات أدوات واجهة المستخدم الرسومية المتاحة عبر الأنظمة الأساسية.كما أنه يتفاعل بشكل جيد جدًا مع SQLite وقواعد البيانات الأخرى، ويحتوي على دعم مدمج لليونيكود لبعض الوقت.

إذا كانت واجهة البرمجة النصية متاحة لعملائك (بدلاً من مجرد تمكين مهندسيك من العمل على مستوى البرمجة النصية)، فمن السهل جدًا تعلم Tcl حيث يوجد إجمالي 12 قاعدة فقط تحكم اللغة بأكملها (مثل تي سي ال 8.6).في الواقع، تتألق Tcl كوسيلة لاختراع لغات محددة للمجال والتي غالبًا ما يتم استخدامها كحل للبرمجة النصية للمستخدم النهائي.

كانت هناك بعض الاقتراحات الممتازة بالفعل، لكني أردت فقط أن أذكر أنه يمكن أيضًا استدعاء / الاتصال بـ Perl إلى C/C++.

ربما يمكنك استخدام أي لغة برمجة نصية/لغة بايت كود حديثة.

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

أعتقد أن معظم الناس ربما يذكرون لغة البرمجة النصية الأكثر دراية بها.من وجهة نظري، تم تصميم Tcl خصيصًا للتفاعل مع لغة C، لذا فإن مجال مشكلتك مصمم خصيصًا للغة.ومع ذلك، أنا متأكد من أن Python أو Perl أو Lua ستكون مناسبة.ربما ينبغي عليك اختيار اللغة الأكثر دراية لفريقك الحالي، لأن ذلك سيقلل من وقت التعلم.

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