برمجة بايثون - قواعد/نصائح لتطوير البرامج على مستوى المؤسسة في بايثون؟

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

سؤال

أنا مطور C++/Java متقدم إلى حد ما، وقد أصبحت مهتمًا مؤخرًا بـ Python وأستمتع كثيرًا بالكتابة الديناميكية وأسلوب الترميز الفعال.أستخدمها حاليًا لتلبية احتياجاتي البرمجية الصغيرة مثل حل ألغاز البرمجة والبرمجة النصية، ولكن لدي فضول لمعرفة ما إذا كان أي شخص قد استخدم بايثون بنجاح في مشروع بجودة مؤسسية؟(يفضل استخدام مفاهيم البرمجة الحديثة مثل OOP وبعض أنواع أنماط التصميم)

إذا كان الأمر كذلك، يرجى توضيح ذلك لماذا لقد اخترت بايثون (خاصة) وتعطينا بعضًا منها الدروس تعلمت من هذا المشروع؟(لا تتردد في مقارنة استخدام Python في المشروع مقابل Java أو ما إلى ذلك)

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

المحلول

أنا أستخدم لغة بايثون لتطوير تطبيق معقد لاكتتاب التأمين.

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

  1. يجب أن يتمتع الخبراء الاكتواريون بالحرية في إجراء التغييرات حيث يكتسبون رؤية أعمق للعوامل المختلفة التي تؤدي إلى المطالبات.

    • تؤدي اللغات الثابتة (Java، وC++، وC#) إلى القفل المبكر لنموذج البيانات.

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

  2. برنامجنا عبارة عن خدمة (وليست حزمة) لذلك لدينا مشكلة تكامل لا نهاية لها.

    • تحتاج اللغات الثابتة إلى مكونات رسم خرائط معقدة.غالبًا ما يكون هناك نوع من التعيينات القابلة للتكوين والتي تعتمد على XML من رسائل العملاء إلى بنياتنا الداخلية المتغيرة باستمرار.

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

  3. يتعين علينا إجراء إثبات شامل وطويل الأمد للمفهوم.تتضمن هذه العديد من سيناريوهات "ماذا لو" مع خلاصات بيانات مختلفة وميزات مخصصة.

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

    • تتطلب بايثون تخطيطًا أقل بكثير.تتيح لنا كتابة البطة (و Django) إخراج العرض التوضيحي دون الكثير من الألم.تعيينات البيانات عبارة عن تعريفات بسيطة لفئة بايثون؛إن نماذجنا الاكتوارية في حالة تغير مستمر إلى حد ما.

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

    • ترتبط اللغات الثابتة بافتراضات حول العقود، وتتطلب تصميمات معقدة إلى حد ما (أو حلول بديلة) للتعامل مع تفكير رجال الأعمال الذين يتفاوضون على الصفقات.

    • في Python، نستخدم مجموعة اختبارات شاملة ونجري الكثير من عمليات إعادة الهيكلة مع وصول شروط وأحكام العقد المختلفة إلينا.

    كل أسبوع نحصل على سؤال مثل "هل يمكننا التعامل مع حكم مثل X؟" إجابتنا القياسية هي "بالتأكيد". تليها ساعة من إعادة البناء للتأكد من أننا استطاع التعامل معها إذا تم إبرام الصفقة بهذا الشكل.

  5. نحن في الغالب خدمة ويب RESTful.يفعل جانغو الكثير من هذا خارج الصندوق.كان علينا كتابة بعض الامتدادات لأن نموذج الأمان الخاص بنا أكثر صرامة قليلاً من النموذج الذي يقدمه Django.

    • لا تحتاج اللغات الثابتة إلى شحن المصدر.لا أحب النموذج الأمني؟ادفع للبائع $$$.

    • يجب أن يتم شحن اللغات الديناميكية كمصدر.في حالتنا، نقضي وقتًا في قراءة مصدر Django بعناية للتأكد من أن نموذج الأمان الخاص بنا يتناسب تمامًا مع بقية Django.نحن لا نفعل ذلك يحتاج الامتثال لـ HIPAA، لكننا نبنيه على أي حال.

  6. نحن نستخدم خدمات الويب من موفري المعلومات.urllib2 يفعل هذا لنا بشكل جيد.يمكننا إنشاء نموذج أولي للواجهة بسرعة.

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

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

نصائح أخرى

لقد كنت أستخدم لغة Python كإطار عمل للحوسبة الموزعة في أحد أكبر البنوك في العالم.تم اختياره للأسباب التالية:

  • وكان يجب أن تكون سريعة للغاية لتطوير ونشر الوظائف الجديدة؛
  • كان يجب أن تكون قابلة للتكامل بسهولة مع C وC++؛
  • كان من المقرر كتابة بعض أجزاء الكود بواسطة أشخاص مجال خبرتهم هو النمذجة الرياضية، وليس تطوير البرمجيات.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top