Что такое обратная совместимость

Что такое обратная совместимость

Это когда старая игра запускается на новой приставке

Совместимость — это когда что-то одно может работать с чем-то другим без дополнительных настроек, переделок или костылей.

Например, есть дизельное топливо. Оно совместимо с дизельными автомобилями — независимо от их марки, года выпуска, пробега или других параметров. А ещё можно приехать на своей машине на любую заправку с дизелем, а не искать специальную заправку только для определённой марки машин. Вот это всё — совместимость. 

В ИТ чаще всего говорят про прямую и обратную совместимость, когда в одну сторону совместимость работает, а в другую — нет.

Когда совместимости нет

Допустим, на предприятии есть программа, которая обслуживает базу данных в нестандартном формате. Проходит время, разработчики увольняются и перестают поддерживать программу. Но программа нужна предприятию, поэтому ей продолжают пользоваться. 

Как поддерживают код

Чтобы код всегда оставался актуальным и чистым, используют рефакторинг. Про это у нас есть отдельная статья.

Спустя пять лет программа конкретно устарела: в ней нет поддержки современных удобных протоколов и она не работает на новых операционных системах. Но зато она работает со старой базой. 

Предприятие ищет какое-то решение своей проблемы, но выясняется, что ни одна программа не совместима с её базой данных. Это ситуация, когда совместимости нет. 

Обычная (или прямая) совместимость

Предприятие обращается за помощью к новым разработчикам: нужно сделать программу, которая умеет работать с нужным форматом баз данных. И, кроме этого, в программе должны быть все современные протоколы и поддержка современных операционок. Разработчики создают этот софт. Это прямая совместимость. 

Прямая совместимость — это когда что-то одно может работать с другим. Это относительно простая задача для разработчика, потому что для неё достаточно добавить поддержку нужного формата данных или протоколов.

Что такое обратная совместимость

Обратная совместимость

А теперь представим другую ситуацию: разработчики не ушли с предприятия, а продолжили работать над проектом. В итоге за пять лет они придумали новую версию базы: тоже нестандартную, но более быструю. Но данные за пять лет всё ещё живут в старой базе данных, а переносить их нельзя. 

Теперь перед программистами стоит противоречие:

  • с одной стороны, надо использовать новый формат, потому что он быстрее работает с данными;
  • с другой стороны, надо поддерживать старую версию базы, потому что старые данные тоже нужны в работе.

Это обратная совместимость: новая версия программы поддерживает и новое, и старое.

Пример обратной совместимости — операционная система Windows. В каждой новой версии есть поддержка части программ, которые написаны для старых версий. Даже если вы попробуете запустить аудиоплеер, разработанный для Windows 95, в свежей Windows 10, то, вероятно, у вас это получится. 

Также обратная совместимость позволяет нам взять игру для PlayStation 4 и запустить её на новой PlayStation 5 (скорее всего). А вот прямой совместимости у них нет: игра, написанная специально для PS5, вряд ли запустится на PS4.

Что такое обратная совместимость

В чём подвох

Обратная совместимость — головная боль для разработчиков. Ради полноценной поддержки старого формата иногда приходится жертвовать скоростью работы или надёжностью. 

Например, в новой версии используется более современный протокол передачи данных. Но чтобы старые версии тоже смогли работать, разработчикам приходится поддерживать одновременно два протокола — новый и старый, каждый проверять на ошибки. Чем больше отличий в версиях — тем сложнее это поддерживать. Иногда для реализации старых технологий тратится намного больше ресурсов, чем для такой же работы — в новых.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Использовать чужой код стыдно?

Стыдно — когда видно

easy
Обязательно ли печатать вслепую, чтобы быть разработчиком?
Обязательно ли печатать вслепую, чтобы быть разработчиком?

Нет, необязательно. Вот почему.

easy
Что такое функциональное программирование
Что такое функциональное программирование

Это не про функции!

easy
Что такое эмулятор
Что такое эмулятор

Ваш пропуск в мир винтажных приставок и хакерских игрушек

easy
Что такое Design first и Code first
Что такое Design first и Code first

Это когда программисты делают то, что скажут дизайнеры, или наоборот.

easy
Чем отличается авторизация от аутентификации
Чем отличается авторизация от аутентификации

Как усложнить жизнь злоумышленникам.

medium
Дизайнер в ИТ: зачем он нужен и как им стать
Дизайнер в ИТ: зачем он нужен и как им стать

Нестыдные вопросы, в том числе — нужно ли уметь рисовать.

easy
Что такое mobile first
Что такое mobile first

Это когда сначала всё делают для смартфона, а потом для всего остального.

easy
Что такое демоны и службы в программировании
Что такое демоны и службы в программировании

Это маленькие программы, которые работают в фоновом режиме

easy
Что такое обратная совместимость
Что такое обратная совместимость

Это когда старая игра запускается на новой приставке

easy
easy