فتح ندوة عبر الإنترنت "كيف لا تكتب في بايثون"

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

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


أثناء الدرس المفتوح ، عرض المعلم شرائح تم إنشاؤها باستخدام دفتر ملاحظات Jupyter.

لذلك دعونا نبدأ!

فلماذا لا تكتب بلغة بايثون؟

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

  • نمط حفاضات. كان الأمر يتعلق بما يسمى نمط "الحفاضات" ، والذي يعني عادةً تجربة واسعة جدًا باستثناء. على سبيل المثال ، تقوم باستدعاء دالة تكون مجمعة لشيء ما ، على سبيل المثال ، تقوم بتغليف مكتبة العميل لنوع من قاعدة البيانات. في حالة جيدة (النظام صغير) سيكون كل شيء على ما يرام في 99٪ من الحالات ، ولكن إذا كان النظام كبيرًا ، فلن يتم مضاعفة احتمالات المشكلة بأفضل طريقة. ونتيجة لذلك ، يسقط شيء ما أو ينكسر باستمرار.
  • معاداة العولمة. يعلم الجميع أن المتغيرات العالمية غير فعالة ، باستثناء بعض الحالات الاستثنائية. من الأفضل أن تمرر كل شيء في شكل سمات للوظائف وما إلى ذلك ، لتحقيق النتائج المرجوة. ومع ذلك ، يأتي البعض بـ "فكرة عظيمة" - لاستخدام الأشياء القابلة للتغيير. وهو يتألف من تمرير ليس متغيرات عامة ، ولكن الكائنات القابلة للتحويل إلى وظائف ، ثم تغييرها في الداخل ثم عدم إرجاع أي شيء مرة أخرى. هذا رائع جدًا!) في الواقع ، جزء من قالب البرمجة من لغة C ، تم نقله إلى عالم Python.
  • سلم الى الجنة. كما قد خمنت ، هذا "درج إلى الجنة". أفضل وصف لهذه المشكلة هو صورة بسيطة:

  • Javatar. غالبًا ما يرتكب أخطاء هذه الخطة هؤلاء المبرمجون الذين انتقلوا لسبب أو لآخر من Java إلى Python. بطبيعة الحال ، يأتون بميثاق خاص بهم ، لذلك ينتهكون قواعد تطوير Python بشكل جماعي. هذا هو مظهر المسافة البادئة المجنونة ، و CamelCase ، والرغبة في إنشاء المزيد من الفئات ... ونتيجة لذلك ، يصبح هيكل الكود أكثر تعقيدًا. حيث يمكن الاستغناء عن برنامج نصي بحجم 300 سطر ، نرى 10-20 ملفًا.
  • الهندسة. في كثير من الأحيان ، لا يكتمل التكرار الثاني للمشروع أو يتم تنفيذه بطريقة معقدة للغاية. يحدث هذا إذا كنت تريد إعادة كتابة رمز موجود ولكن معيب ، مما يجعله مثاليًا. في الوقت نفسه ، تنسى أن الأفضل هو عدو الخير. ونتيجة لذلك ، يقع المبرمج في فخ إعادة الهندسة المعياري ، عندما يصبح التنفيذ أكثر تكلفة وثقلًا ومرهقًا مما هو ضروري لحل المهام. وفي الواقع: هل يجب أن تصل سيارات السيدان العائلية إلى سرعات تصل إلى 350 كم / ساعة ، والهواتف الذكية ، التي تتغير الموضة كل عام ، وتعمل لمدة 100 عام؟
  • Oneliner المشكلة الملحة الأخرى هي "الخط الواحد". يتعلق الأمر بالمبرمجين الذين يحاولون بحماس يحسد عليه دفع كل شيء في سطر واحد ، خمسة طوابق من الإعلانات التجارية)). نظرًا للتعقيد المفرط للكود وخصائص تنفيذ التعبيرات العادية للآلة في Python ، فإن هذه النصوص النصية "تلتزم" أحيانًا بالتحليل ، لذلك يجب عليك استخدام وحدة خاصة لإصلاح المشكلة.
  • نسخ للقراءة. هذا ليس خطأ كبير كميزة لبرمجة Python. كثيرون على دراية بنهج النسخ عند الكتابة. فكرته هي أنه عند قراءة منطقة البيانات يتم استخدام نسخة مشتركة ، وعندما يتم إجراء تغيير ، يتم إنشاء نسخة جديدة ، أي أننا نتحدث عن تحسين عمليات الأداء. إذا تحدثنا عن Python ، ففي بعض الحالات لا نقرأ فقط مجموعة من العناصر ، بل نشير إلى جميع الهياكل الأساسية الموجودة في الذاكرة ، أي أننا "نعيد كتابة" الذاكرة ، ونغيرها. وبالتالي ، بدلاً من Copy-On-Write ، نحصل على Copy-on-Read عندما يبدو أننا نقرأ الذاكرة ، ومع ذلك ، في الواقع ، يتعين علينا نسخ هذه المعلومات من المساحة الأصلية لأنفسنا كعملية فرعية ، مما يجعلها حزينة ، نظرًا لأن النهج التحسين لا يعمل ، والاستهلاك ينمو.
  • لا يوجد شوكة. شوكة - استنساخ ظهور عملية جديدة. تتعلق المشكلة بخصائص العمل مع أنظمة Unix وعدم وضوح بعض هياكل البيانات المخفية في التنفيذ. عملية "متشعب" هي عملية تبدأ في اللحظة التي يلتقط فيها الخيط السجل في قائمة الانتظار من أجل وضع شيء فيه. أي أن العملية الجديدة التي نشأت تريد أيضًا كتابة شيء ما ، ولكن لهذا يحتاج إلى الحصول على السجل من قائمة الانتظار نفسها ، لكنه لا يستطيع القيام بذلك ، حيث تم تسجيل السجل بالفعل. ونتيجة لذلك ، نحصل على قفل. كل هذا يؤكد مرة أخرى أنه لا يستحق البرمجة ، ولا يعرف ميزات تطبيق البيئة التي تعمل فيها والأدوات التي تستخدمها.

لا يزال هناك الكثير من الأشياء المثيرة للاهتمام ، لذلك من الأفضل مشاهدة الفيديو ، لأنه إعادة البيع لا تزال قصيرة.

كما هو الحال دائمًا ، نحن في انتظار الأسئلة والتعليقات والاقتراحات هنا أو على الباب المفتوح .

Source: https://habr.com/ru/post/ar426095/


All Articles