يتم نسخ العديد من النسخ في المناقشات حول سبب ثعبان الثعبان - لا يحظر استدعاء الأساليب غير العامة. وبالطبع ، فإن التفسيرات بروح "نحن جميعنا بالغون هنا" قد بدت أكثر من مرة ، لكن يبدو أنها لم تكن كافية ، وأعتقد أنني فهمت أخيرًا كيف أشرح ذلك بشكل أكثر وضوحًا ، وآمل أن يكون هذا صحيحًا.
اسمحوا لي أن أذكرك أنه بالنسبة للطرق الخاصة ، فإن الثعبان يغير الاسم بشكل حيوي فقط ولا يقيد الوصول إليه بأي شكل من الأشكال ، ولكن بالنسبة للحماية ، لا يفعل ذلك ، إنه مجرد اصطلاح تسمية للطرق ، لأولئك الذين لا يعرفون حقًا ، هناك مواد إضافية
هنا وهنا .
أولاً ، عليك أن تبدأ بالسؤال ، لماذا يجب أن تحظر اللغة استدعاء بعض الرموز؟ تقوم العديد من اللغات بهذا ، لكن لا يتبع هذا أنه صحيح ويجب أن يكون كذلك.
!= .
ما هي الخيارات الممكنة؟
- أنت مؤلف الكود ، لسبب ما قررت أن هذه الطريقة ليست ضرورية في المجال العام ، حسناً ، حقك في التفكير بذلك ، ولكن لماذا يجب حظره تقنياً؟ هل هذا الكود استدعاء الشياطين وتحتاج إلى أن تكون مخفية؟ أم أنه رمز عادي ومبرمج آخر مثلك قد يكون في موقف لا يمكنك التفكير فيه والذي يحتاج إلى استخدام هذا الرمز. أو هل تعتقد أنك سوبرمان وأنت تعرف تمامًا أن هذا لا يمكن أن يكون؟
- أنت مستخدم لرمز شخص آخر - عادة لا تعرف أي شيء عن وجود طرق غير عامة إلا إذا بذلت جهودًا خاصة (يمكن توثيق الطرق المحمية ، ولكن مع الإشارة إلى ما هي عليه). حسنًا ، دعنا نقول أنك علمت عن علم وعن قصد بوجود طريقة غير عامة وسمّتها ، ماذا حدث؟ هل انفتحت الارض و قفز الشيطان وصدام؟ أم أنها تعمل كما هو متوقع؟ أسمع شخصًا يصرخ - قد ينكسر أثناء الترقية ، لكن بالطبع نظرًا لأنك استخدمت الأسلوب غير العام عمداً ، فأنت تتفهم هذا الخطر (إن لم يكن ، فأنت في غير محله). علاوة على ذلك ، لا يعد التحديث عملية تلقائية ، مثل تحلل نواة ذرة اليورانيوم ، فإن كل شيء في بيئة الاختبار سينكسر. بالطبع ، يحدث للبعض أن التحديثات ذات طبيعة كمية وتحدث في أكثر اللحظات التي لا يمكن التنبؤ بها في أكثر الأماكن التي لا يمكن التنبؤ بها ، ولكن بعد ذلك سيكون من السخف التحدث عن بعض الطرق الخاصة هناك ، وستكون هناك الكثير من المشاكل بدونها.
في الواقع ، وراء كل هذه الحجج ، هناك مبدأ مهم ، يمكن للمرء أن يقول مبدأ فلسفي: "الآلة غبية ، والشخص ذكي". أي ليس الجهاز هو الذي يجب أن يتخذ القرارات بشأن ما هو ممكن وما هو غير ذلك ، يجب أن يتخذ القرار من قبل شخص ما.
يمكنك مواجهة هذا بالقول إن مؤلف الشفرة (شخص أو شخص عقلاني) قرر أن ذلك مستحيل ، ولكن بعد ذلك يتم تطبيق مبدأ آخر ، مبدأ الحرية والمسؤولية: "إذا كنت قد شاركت شيئًا ما مع الآخرين ، فلا تملي كيف يتم ذلك. يجب أن نستخدمها ، فهم أنفسهم مسؤولون عن أفعالهم "، وهنا توصلنا للتو إلى نتيجة مفادها أننا جميعًا بالغون هنا ومسؤولون عن أفعالنا.
سيقول شخص ما إن الكتابة هي نفس القيود - صحيح ، ولكن هذا هو الحال عندما يخبر الجهاز شخص ما ، يا غبي ، لا أعرف ماذا أفعل - من وما نوع ما يجب أن أشرح له ، أرجو التوضيح.
بالمناسبة ، هناك مثال رائع لحالة قرر المؤلفون فيها أن يتمكنوا من جعل السيارة ذكية ، لكنهم لم ينجحوا - هذا هو تنسيق YAML ، وكتب المؤلفون مواصفات كبيرة مفادها أن
قلة منهم تبدو
قادرة على تنفيذها أو أنها ليست واضحة بما فيه الكفاية ، ولكن هناك
مشاكل أساسية التي لا تتعلق بالتنفيذ عندما تؤدي محاولات تخمين نوع الصابون (التظاهر بأن الجهاز ذكي) إلى الفشل.
في
عالم الثعبان كان هناك رجل يفهم هذا (
ووصف بالتفصيل). تبدو مكتبته تمامًا مثل النهج الصحيح - فالبيانات قابلة للقراءة من قبل الإنسان ، لكن بالنسبة للبيانات ، يوجد مخطط منفصل مكتوب بشريًا يسمح للجهاز بعدم التظاهر بالذكاء ، ولكن لمعرفة مكانه ، لكن لسوء الحظ ، لم يصبح هذا النهج سائدًا.
آمل أن أتمكن من تحسين شرح فلسفة بيثون والاستمتاع بالنهج الأخرى)