سؤال

أنا أعمل في مجموعة تقوم بمزيج كبير من تطوير الأبحاث ورمز الشحن الكامل.

نصف الوقت الذي أقوم فيه بتطوير العمليات التي تعمل على نظام الوقت الحقيقي لدينا (في مكان ما بين الوقت الحقيقي الناعم والوقت الحقيقي الصعب، والوقت الحقيقي المتوسط؟)

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

أعمل حاليًا على عملية يجب أن أقسمها إلى فرعين مختلفين.

هناك نسخة بحثية لمجموعة واحدة، ونسخة إنتاجية ستحتاج في بعض الأحيان إلى دمجها مع كود البحث للحصول على الأحدث والأفضل في الإنتاج.

لاختبار هذه العمليات، تحتاج إلى إعداد بيئة اختبار شبه معقدة ترسل البيانات التي نحللها إلى العملية في الوقت الصحيح (نظام الوقت الحقيقي).

كنت أفكر في كيفية صنع:

  1. فكرة
  2. ينفذ
  3. امتحان
  4. اذهب إلى رقم 1

دورة سهلة وسريعة وخالية من الألم قدر الإمكان لزملائي.

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

نظرت بعيدًا عن التضمين:

يبدو أن كلاهما قابل للتنفيذ وقد يحلان المشكلة المحددة بالكامل.

هل هناك أي فكرة مشرقة أخرى؟

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

النظام معقد إلى حد ما وآمل أن أكون قد شرحته بشكل جيد.

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

المحلول

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

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

نصائح أخرى

يعد تضمين Lua أسهل بكثير من تضمين Python.

  • تم تصميم Lua منذ البداية ليتم تضمينها؛تم تطعيم قابلية التضمين في بايثون بعد وقوعها.

  • Lua أصغر بحوالي 20 مرة وأبسط من Python.

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

لست متأكدًا من أنني أفهم نظامك، ولكن إذا كان الإنشاء والنشر معقدًا للغاية، فربما يمكنك تشغيله تلقائيًا؟إذا كان النشر تلقائياً بالكامل، فهل سيؤدي ذلك إلى حل المشكلة؟

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

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

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