Ян Мёрдок: Важность обратной совместимости

()

Меня часто спрашивают, почему я так озабочен обратной совместимостью, и как следствие - почему я сделал её основной задачей LSB в ушедшем году? Эта проблема стоит очень остро. Особенно в мире Linux, потому что есть тысячи разработчиков, создающих компоненты, которые составляют основу. И для того чтобы сделать наши жизни трудными достаточно просто нарушить совместимость. Ещё хуже - иметь в наличии устаревшие компоненты только ради обратной совместимости. Элегантность дизайна намного более сложная задача чем просто "прогулка пешком".

Почему важна обратная совместимость? Вот пример от Джоула Сполского:

Рэймонд Чен - один из членов группы Windows в Microsoft. Он работает там с 1992-го года и его блог The Old New Thing является подробной и полной технических деталей историей о том, почему многие, даже совсем на первый взгляд глупые вещи имеют место в Windows. Оказывается там на всё есть свои серьёзные причины.

Одна из причин читать блог Рэймонда -это истории невероятных усилий, которые приложила группа Windows для обеспечения обратной совместимости: "Посмотрите на это с точки зрения пользователя. Вы купили программы X, Y и Z. Потом вы обновляетесь до Windows XP. Ваша система постоянно падает. Программа Z не запускается вообще. Вы начинаете говорить друзьям, что после обновления на XP программа Z перестаёт работать, но вы не начинаете отлаживать систему, чтобы понять что на самом деле к краху приводит программа X, которая использует недокументированные функции предыдущей версии Windows. Вы просто вернёте свою копию Windows XP и потребуете вернуть свои деньги. (Вы покупали программы X, Y и Z несколько месяцев назад, и тридцатидневная политика возврата на них не распространяется. Единственное что вы можете вернуть - Windows XP)".

Я впервые услышал об этом от разработчиков популярной игры SimCity. Они рассказали, что была критическая ошибка в их приложении при работе с памятью. Под DOS всё работало замечательно, но в Windows работа с памятью организована немного иначе, и потому программа падала. Тестеры из группы Windows запускали различные приложения чтобы проверить их на совместимость, но SimCity продолжала падать. Они сообщили об этом разработчикам, которые запустили программу под отладчиком, нашли ошибку и добавили в менеджер памяти код, который проверяет - если запущена игра SimCity, то менеджер памяти переключается в специальный режим, в котором игра работает без сбоев.

Описанный случай не является рядовым. Команда тестировщиков Windows достаточно большая, а одна из основных их обязанностей - гарантировать, что любой может спокойно обновлять Windows, не зависимо от установленных приложений. И эти приложения продолжат выполняться, даже если их работа будет зависеть от такой плохой вещи, как недокументированные функции ОС. И что ошибки, которые были в Windows N, обязательно будут устранены в Windows N+1...

Многие программисты и инженеры не согласны с таким способом работы. Если приложение делает что-то, используя недокументированные функции ОС, то при обновлении системы оно вполне может сломаться. Разработчики Mac OS в Apple все придерживались этой точки зрения. Именно поэтому очень мало старых приложений для Mac OS всё ещё работают...

Для контраста приведу другой пример. У меня есть приложения, написанные мной для DOS в 1983-м году для очень оригинального IBM PC, которые до сих пор замечательно работают благодаря стараниям команды Рэймонда Чена из Microsoft.

Я почти чувствую отвращение среди свои читателей, однако, посетив в следующий раз в Best Buy или в CompUSA обратите внимание на полку с приложениями для Windows, и потом сравните её с полкой с приложениями для Mac, и вы поймёте о чём я говорю.

Глупо утверждать что требуется более хороший инженер чтобы продвинуть платформу, в тоже самое время сохранив совместимость. Гораздо проще отбросить всё лишнее - но это ведёт к проблемам.

Источник

Ключевые слова: debian.

Комментарии:

Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE