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

أحد أشهر الأمثلة عندما قرروا نسيان التوافق العكسي هو مظهر موصل USB 3.1 Type C (USB-C). لسنوات عديدة لم نكن نعرف المشاكل: يمكن توصيل أي أداة مع موصل microUSB أو miniUSB بأي منفذ USB المقابل. لكن كونسورتيوم USB-IF قد أنشأ موصلًا من النوع C ، غير متوافق ميكانيكيًا تمامًا مع أي من مئات الملايين ، أو حتى مليارات الهواتف الذكية والكابلات وأجهزة الشحن والأدوات الأخرى.
هناك مشكلة أخرى هي أنه ليس كل كابل USB-C ومنفذ وجهاز وقوة متوافقة مع بعضها البعض: بعض كابلات USB-C في كلا الطرفين يمكنها فقط نقل 5 جيجابت / ثانية ، والبعض الآخر متوافق مع 10 جيجابت / ثانية ، و هناك تلك التي لا يمكن استخدامها للأغذية.

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

لا يزال هناك قفزة غير صحية في عالم المعالجات حتى يومنا هذا: لم يعد من الممكن وضع نموذج مفعم بالحيوية يمكنك قيادته وقيادته بعد بضع سنوات على اللوحات الأم الجديدة. من الصعب على الشركات المصنعة مقاومة إغراء إجراء احتياطيات حديدية عديمة الفائدة بانتظام بين المستخدمين ، مما يجبرهم على حمل المال لنماذج جديدة. إن عدم التوافق مع الإصدارات السابقة لا يسخن الروح عندما يجب استبدال المعالج الذي تم شراؤه قبل ثلاث سنوات بنفس المعالج تقريبًا ، لأن اللوحة الأم قد ماتت.
يمكن أن يصبح الموصل العالمي المصمم للبيانات والطاقة المنفذ الوحيد على الجهاز - وهذا هو إضافة محددة لـ USB Type-C. يمكنك أن تتصالح مع عدم وجود توافق عكسي في الأدوات ، وحتى ملاحظة المزايا (سرعة نقل البيانات الأعلى وإعدادات الطاقة الأخرى) ، ولكن في صناعة البرمجيات ، يكون عدم توافق الإصدارات الجديدة مع الإصدارات القديمة أكثر إيلامًا. وينطبق هذا بشكل خاص على منتجات الشركات ، التي تكون تكلفتها وتأثيرها على عمليات الأعمال كبيرة جدًا.
غامديف
في النظام البيئي للكمبيوتر الشخصي ، كانت الألعاب متوافقة مع الإصدارات السابقة منذ عقود. تسمح لنا الأدوات المساعدة مثل DOSBox بتشغيل حتى أقدم إصدارات الكمبيوتر. يبدو أن عامل التوافق ، الذي لا ينطوي فيه الانتقال إلى إصدار جديد من النظام مع احتمال كبير على مشاكل ، قد لعب دورًا في الهيمنة الحالية لـ Windows. نعم ، نتيجة لذلك ، دعمت إصدارات 32 بت من Windows إطلاق برنامج Windows 16 بت وبعض برامج MS-DOS (وإصدارات 64 بت ، على التوالي ، تشغيل برامج 32 بت) ، لكن Microsoft حصلت على منصة ثقيلة ضخمة لديها التوافق حتى مع الأخطاء.
وماذا عن لوحات المفاتيح؟

أظهر تقرير Ars Technica كيف يستخدم مستخدمو Xbox One و Xbox 360 أجهزتهم. من المثير للاهتمام أن البيانات الواردة في التقرير عن بادئة Microsoft تتوافق مع رأي شركة Sony Corporation ، التي لا تعتبر التوافق العكسي في PlayStation 4 شيئًا مهمًا. وفقًا لرئيس Sony Interactive Entertainment Europe Jim Ryan ، فإن هذه الميزة يتم التحدث عنها أكثر من استخدامها في الواقع. على الرغم من أن Sony قد وفرت حقًا فرصة تنزيل الألعاب لـ PS1 و PS2 على PS4.
أجرت بعض المواقع استطلاعاتها الخاصة تحسبًا لإصدار Xbox One و PS4 - ثم لوحظ أن العديد من اللاعبين أعربوا عن رغبتهم في التوافق مع الإصدارات السابقة. لفتت Microsoft انتباهًا كبيرًا إلى التوافق مع الإصدارات السابقة مع Xbox One. تم تنفيذ الوظيفة بشكل جيد بشكل عام ، ولكنها الآن لا تروق للاعبين حقًا.
تحتوي خطوط منتجات Nintendo DS و Wii أيضًا على العديد من الأمثلة على التوافق مع الإصدارات السابقة.
رحب مطورو الألعاب بجهود الشركات بحماس أكبر - لم يعد من الضروري دراسة الهندسة المعمارية من الصفر للاستفادة من معدات وحدة التحكم الجديدة. يجعل التوافق مع الإصدارات السابقة من السهل نسبيًا الاحتفاظ بالإصدارات لجميع الأجهزة بناءً على بنية مشتركة.
التوافق العكسي في اللغات

( ج )
تتميز كل لغة برمجة شائعة بتطور واضح ، ويشار إلى معظم حياتها بإصدار: لديك Java 5 ، 6 ، 7 ، وما إلى ذلك ، PHP 5.1 ، 5.2 ، 5.3 ، إلخ. كل إصدار جديد يصحح الأخطاء ويضيف وظائف. ولكن إذا كانت اللغة (أو النظام الأساسي) بها عيوب أساسية ، فإن المطورين إما يتجنبونها (إذا استطاعوا) أو يتعلمون العيش معهم.
يحصل مطورو اللغة على الكثير من التعليقات من المبرمجين الذين يستخدمون لغة برمجة أو أخرى في عملهم. يبدو أنه سيتم إصدار نسخة من اللغة ذات يوم تختفي فيها جميع المشاكل. لكن هذا لا يحدث. لماذا ذلك أحد الخيارات هو التوافق مع الإصدارات السابقة.
لدى PHP الشعبية عيوبها ، وأولئك الذين كانوا يعملون معها لفترة طويلة يعرفون جيدًا كيفية الالتفاف حول جميع الفخاخ والحفر في اللغة. لنفترض الآن أنه في الإصدار الجديد من اللغة تم إصلاح جميع السلبيات ، لكنهم فقدوا التوافق العكسي. ونتيجة لذلك ، يقضي المطور وقتًا في تحديث الرمز إلى الإصدار الحالي من PHP. في نفس الوقت الذي كان يقضيه في تلبية طلبات العملاء أو إدخال ميزات جديدة.
بالنظر إلى هذه المشاكل ، فإن دوافع أولئك الذين لا يريدون التحول إلى الإصدار الجديد من PHP أمر مفهوم ، حتى لو كان أفضل وأكثر وضوحًا وأكثر أمانًا ، وما إلى ذلك. ستقول إن هذا مثال افتراضي. ربما ... ولكن لا يزال هناك مبرمجون في العالم ما زالوا يعملون على كوبول ! ظهرت اللغة عام 1958. بحلول عام 1997 ، تم استخدام حوالي 240 مليار سطر من كود COBOL بنشاط ، عالج الرمز بهذه اللغة حوالي 90 ٪ من المعاملات المالية في العالم و 75 ٪ من المعاملات التجارية. الشيء الأكثر إثارة للاهتمام هو التوافق اللغوي المذهل: COBOL ، الذي تم استخدامه في الستينيات ، يمكنه العمل على المعدات الحديثة.
هناك منتجات لا تستطيع ، من حيث المبدأ ، كسر التوافق العكسي ، لأن هذا سيضع حدا لها. على سبيل المثال ، Java: المجال الرئيسي لتطبيق هذه اللغة هو تطبيقات الأعمال ، وقد تمت كتابة عدد فلكي من أسطر التعليمات البرمجية في جميع أنحاء العالم ، بما في ذلك قواعد قواعد الشركات الضخمة. الرمز المكتوب منذ 20 عامًا لا يزال يعمل. وإذا كان هناك غدًا إصدار من جافا يضيف فيه المطورون ميزات رائعة ، ولكن بدون توافق عكسي ، فلن يستثمر أحد الكثير من المال في تطوير تطبيقات جادة ومكلفة. لذا سيتعين على Oracle إما سحب حمولة من الإصدارات القديمة طوال حياتها ، أو فتح الطريق أمام الابتكارات ، ولكن في نفس الوقت تفقد حصة كبيرة من العملاء. الخيار الثالث - لدعم فرعين لجافا في وقت واحد ، مع الدعم الكامل والتطوير - لن توافق الشركة نفسها.
في وقت من الأوقات ، انتهك مطورو Python التوافق العكسي ، مما أثار غضب مجموعة من المستخدمين. لم يعتبر معظم المبرمجين أن Python 2.x "خاطئة" أو تحتوي على "عيوب أساسية". لم يكن لديهم نفس الشكاوى التي لدى مطوري PHP.
اليوم ، ينقسم مجتمع اللغات إلى معسكرين ، في حين أن كتلة المكتبات الجاهزة للنسخة الثانية لا تسمح للكثيرين بالهجرة إلى الثالث ، على الرغم من أنها جلبت عددًا من التحسينات القوية للغة. ونتيجة لذلك ، ثبت الرأي بقوة أن " Python 3 هو أسوأ شيء يمكن أن يحدث لمجتمع Python ".
المشكلة لها جانب سلبي - تم إصدار Python 3 في ديسمبر 2008 ، لكن الدعم اللغوي في إطار Django لم يظهر إلا بعد خمس سنوات.
على الرغم من عدم وجود توافق بنسبة 100٪ بين C و C ++ ، حتى في C ++ ، هناك توافق عكسي مع وظائف اللغة المبكرة جدًا (بما في ذلك بعض الوظائف الموروثة مباشرة من C).
تراكم الديون الفنية
في بعض الأحيان تنشأ مشكلة لأننا ببساطة لا نستطيع التنبؤ بالمستقبل. في عام 1981 ، كانت الإنترنت كافية للجميع والجميع - تم وصف أول نسخة مستخدمة على نطاق واسع من بروتوكول IPv4 ، باستخدام عناوين 32 بت ، مما يحد من مساحة العنوان البالغة 4،294،967،296 إلى عناوين فريدة محتملة.
4.3 مليار عنوان IPv4 بدا أكثر من كاف لـ ARPANet. ظهر IPv6 في عام 1998 (تم وصفه في RFC2460 ) ، لكن البروتوكول لم يكتسب شعبية. استغرق الأمر أكثر من عشر سنوات للانتباه إلى مشكلة عدد محدود من العناوين. ثم أصبح من الواضح أن القاعدة الضخمة لبرامج وأجهزة IPv4 المطورة والمثبتة تتطلب الحفاظ على التوافق العكسي بين IPv6 و IPv4.
اكتشف "فجأة" أن IPv6 تم تطويره بدون توافق كامل مع الإصدار السابق - لا يمكن للمضيف الذي يدعم IPv6 فقط الاتصال بمضيف يعمل فقط عبر IPv4. يتطلب الانتقال من IPv4 إلى IPv6 مرحلة مكونة من مجموعين ، يتفاعل خلالها الكمبيوتر المضيف مع مكدسي البروتوكول في وقت واحد ، باستخدام مكدس بروتوكول IPv6 للتفاعل مع أجهزة الكمبيوتر المضيفة IPv6 الأخرى ، ومكدس بروتوكول IPv4 للتفاعل مع أجهزة الكمبيوتر المضيفة IPv4 الأخرى .
لم تكن بعض مفاتيح التبديل وأجهزة التوجيه وأجهزة الأمان متوافقة مع IPv6. وهكذا ، واجهت عملية الانتقال إلى IPv6 العديد من المشاكل ، التي تم اقتراحها بطرق مختلفة . لا يمكن تسمية أي من الحلول الحالية بأنها مثالية ، ولكن كل منها سيجد تطبيقه.
فلسفة التوافق مع البرمجيات

عندما فكرت فيما إذا كان من الضروري الحفاظ على التوافق في الإصدار (الإصدارات) الجديدة
في البرامج ، يعني التوافق مع الإصدارات السابقة ، كقاعدة عامة ، زيادة كبيرة في حجم الملفات والتطبيق بأكمله ، ولكن الشيء الأكثر أهمية ليس هذا. يتطلب التوافق مع الإصدارات السابقة عادة حمل أمتعة تاريخية ، والتي تؤدي في اللغات المفسرة غالبًا إلى خسائر ملحوظة في الأداء.
مع التوافق مع الإصدارات السابقة ، يتم تضخيم قاعدة التعليمات البرمجية وتعقيد بنية التطبيق وتعقيد ترقية التطبيقات. هناك رغبة في رفض القديم وكتابة كود مضغوط وخفيف الوزن يستخدم أحدث التطورات.
على سبيل المثال ، لم يعد الإصدار الجديد من Skype قادرًا على إنشاء اتصالات الصوت والفيديو مع الإصدارات ضمن Windows XP. وبالطبع ، يريد بعض المستخدمين تجاهل الإصدار الجديد ، مفضلين البقاء على القديم ، ولكن مألوفًا جدًا.
نعم ، يعتبر التوافق مع الإصدارات السابقة اليوم أحد أهم الشروط في تطوير منتجات البرمجيات. يسمح للمستخدمين بالانتقال إلى منتجات جديدة بأقل قدر من الألم - وبالتالي الراحة. بالنسبة إلى الشركات المصنعة لوحدات تحكم الألعاب ، على سبيل المثال ، من المهم ضمان التوافق العكسي للألعاب الجديدة مع الأدوات القديمة من أجل زيادة جمهور المشترين المحتملين. ولكن في الوقت نفسه ، يكون من الصعب على المطورين تنفيذ مستوى جديد من الرسومات والفيزياء الواقعية ، الأمر الذي من المفارقات أنه يمكن أن يقلل من جاذبية النظام للاعبين.
نحن أنفسنا أحيانًا نواجه مشكلات مماثلة. عند كتابة حل تخزين سحابي Hotbox ، يمكنك إنشاء كل شيء تمامًا من الصفر أو استخدام التطورات الحالية في Mail and Mail.Ru Cloud. تتيح لك الكتابة من الصفر التخلص من جميع الديون التقنية المتراكمة دفعة واحدة ، ولكنها تستغرق وقتًا طويلاً. عيب استخدام التطورات الحالية هو أننا ما زلنا في لغة بيرل ، حيث يصعب العثور على مطورين جدد بسبب عدم شعبيتها. لكن مزايا هذا الحل تفوق بكثير: في هذه اللغة لدينا خبرة وأدوات ضخمة طورت على مر السنين. نظرًا لأنه كان من الضروري إطلاق المنتج في الوقت المحدد ، فقد قررنا التركيز على استخدام Perl.
والنتيجة هي منتج يناسبنا تمامًا حاليًا. في هذه الحالة ، تجاوز "التوافق مع الإصدارات السابقة" نطاق خدمة واحدة فقط - جعلنا التوافق ليس فقط مع التطورات في المشاريع الأخرى ، ولكن أيضًا مع تجربتنا الخاصة. يؤدي إدراك هذه الحقيقة إلى فكرة بسيطة: ليس دائمًا لغة جديدة ، أو إصدار جديد من برنامج أو أداة جديدة هو حل عالمي لمهمتك.