الإنجيليون مقابل الذئاب المستذئبين


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

البرامج خاصة


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

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

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

حسنا ، لماذا كل هذا؟


لا ، ليس لحقيقة أن الكود الافتراضي أكثر "هشاشة" من الواقع في الواقع - على الرغم من أن الأمر كذلك ، فهو ليس الشيء الرئيسي. والشيء الرئيسي هنا هو أن من حقيقة أن حل هذا البرنامج يمكن العمل من الناحية النظرية في نطاق معين من القيم (أي حل المشاكل محددة معينة)، فإنه لا يتبع أنه سوف حلها في الواقع - الحالات الممكنة أكثر من ذلك بكثير ، وقد تكون الملاءمة النظرية للبرنامج بينهم غير ذات صلة على الإطلاق.

على سبيل المثال ، لغة الإشارة في لعبة Factorio هي Turing-Complete:


ومعها يمكنك حتى عرض المقاطع. الآن ارفع يدك ، من يعتقد أنه سيتم كتابة البرامج التجارية عليه - على الرغم من حقيقة أن هذا ممكن تمامًا من الناحية النظرية ؟

ومع ذلك ، عندما أقرأ مقالات حول التقنيات ، غالبًا ما ألتقي بحقيقة أن الأشخاص الذين يكتبونها يفضلون أن يكونوا رياضيين متينين ويموتوا من الناحية الفنية ( أفضل أسوأ نوع من الصحيح).

من الناحية النظرية ، لا تختلف النظرية عن الممارسة


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

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

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

على من يقع اللوم وماذا تفعل؟


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

All Articles