Экран выбора браузера по умолчанию, 1 марта на Windows-компьютеры европейских пользователей, как выяснилось, содержит ошибку в алгоритме случайной сортировки наименований веб-обозревателей, утверждает программный архитектор Роб Меир ().
Windows-экран выбора браузера по умолчанию сортирует кандидатов как ребенок.
Напомним: с подачи , с конца 2007 года обвиняющей Microsoft в нарушении антимонопольного законодательства из-за включения Internet Explorer в состав всех ОС, Еврокомиссия утвердила самой корпорацией альтернативу в виде специального экрана с выбором любого другого браузера для его загрузки и последующего использования как основного.
Экран выбора распространяется через службу обновления Windows Update: пользователи XP получают уведомление о новом высокоприоритетном обновлении, владельцы Vista и Windows 7 — о важном патче.
Окно содержит список из 12 браузеров: пяти главных на первой странице (, , , и ) и семи дополнительных — на второй (, , , , , и ).
Формирование очередности браузеров должно закону случайного распределения.
Но это не так.
Вместо традиционного , известного с 1938 года, в «Майкрософт» допустили ошибку, которой грешат новички, — выбрали сортировку массива с заданной функцией сравнения (компаратором). Подобный подход напоминает крайне неудачный учебный алгоритм «пузырьковой» сортировки в терминах его практической непригодности.
Г-н Меир проверил свое предположение: взяв «Майкрософт», доступный на , он добавил к нему функции тестирования и выполнил 10 тыс. прогонов.
Как выяснилось, Google Chrome чаще оказывается среди тройки первых браузеров в списке, а Internet Explorer, наоборот, располагает меньшими шансами появиться в четверке первых. Более того, браузер «Майкрософт» как назло получает 50-процентную вероятность оказаться на пятой позиции — последней на первом экране выбора. Safari с 40-процентной упертостью стремится занять четвертое место, Opera тяготеет к первому, второму и пятому номерам, а Firefox избегает положения замыкающего.
Чтобы убедиться в этом, достаточно открыть (желательно в Internet Explorer) и задать нужное число итераций.
Вероятностное распределение браузеров в случае алгоритма «Майкрософт».
Вероятностное распределение браузеров в случае алгоритма Фишера-Йейтса.