Радости сортировки
Сортировка лежит в основе работы компьютеров. По сути, именно необходимость сортировки послужила причиной создания компьютера.
В конце XIX века прирост населения Соединенных Штатов составлял 30 % за десятилетие, и количество «объектов исследования» Бюро переписи населения за 10 лет с 1870 по 1880 год возросло с пяти до более чем двухсот. Подведение итогов переписи 1880 года заняло восемь лет, и почти сразу после окончания работ стартовала перепись 1890 года.
Как выразился один писатель того времени, было удивительно, как «канцелярские работники, заваленные бессчетным количеством бумаг… не ослепли и не сошли с ума».
Само ведомство едва не рухнуло под собственным весом. Нужно было срочно что-то делать.
Вдохновленный существовавшей в то время системой компостирования железнодорожных билетов изобретатель Герман Холлерит решил использовать технологию компостирования карточек из манильской бумаги для хранения информации. Для учета и сортировки карточек им была изобретена первая табулирующая машина, которая позднее была названа его именем. Он получил патент на устройство в 1889 году, а уже в 1890-м машина Холлерита была одобрена правительством для использования при переписи населения. До этого никто не видел ничего подобного.
Восхищенный обозреватель писал: «Этот аппарат работает с божественной точностью, но по скорости превосходит даже высшие силы». Другой обозреватель тем не менее отметил, что область применения машины ограничена и «изобретатель вряд ли разбогатеет на этом устройстве, поскольку никто кроме правительства не станет его использовать». Этому прогнозу, который Холлерит взял на заметку, не было суждено сбыться в точности. Фирма Холлерита объединилась с рядом других компаний в 1911 году и вошла в промышленный конгломерат CTR (Computing-Tabulating-Recording Company). Спустя несколько лет компания была переименована в IBM (International Business Machines).
Техника сортировки продолжала подстегивать развитие компьютерной науки на протяжении следующего столетия. Первым в мире кодом, написанным для ЭВМ с запоминаемой программой, стала программа для эффективной сортировки. В сущности, именно способность компьютера заменить аппараты IBM, заточенные исключительно под сортировку перфокарт, убедила американское правительство в том, что колоссальные инвестиции в создание универсальной машины оправданны.
Согласно проведенному исследованию, к 60-м годам ХХ века более четверти мировых компьютерных ресурсов были задействованы в процессах сортировки. Что неудивительно, ведь сортировка – неотъемлемая часть работы практически с любым видом информации. Будь то определение наибольшей или наименьшей величины, общего или частного, суммирование, индексирование, выявление дублирующей информации или просто поиск того, что вам нужно, – все это, в сущности, начинается с процесса сортировки.
На самом деле применение сортировки выходит далеко за рамки этих процессов, поскольку одна из ее основных целей – продемонстрировать человеку возможную пользу вещей. Из этого мы делаем вывод, что сортировка – это также ключ к человеческому восприятию информации.
Отсортированные списки в наше время применяются повсеместно и так естественно внедрились в нашу среду обитания, что нужно быть внимательными и сосредоточенными, чтобы обнаружить их (как рыбе, которая захотела бы узнать, что такое вода). Но, заметив их однажды, вы будете замечать их всегда.
В нашей входящей корреспонденции обычно отображаются последние пятьдесят из тысяч писем, отсортированных по времени получения. Когда мы ищем нужный ресторан с помощью сервиса Yelp, поиск выдает топ-10 мест из сотен, отсортированных по степени удаленности от нас или рейтингу. В блоге обычно показан список записей, отсортированных по дате. Лента новостей в Facebook, поток твитов в Twitter и домашняя страница Reddit представляют собой списки, составленные по тому или иному определенному критерию. Мы считаем сайты вроде Google или Bing поисковыми системами, на самом деле это не совсем корректно: по сути, это системы сортировки. Вся сила Google как средства доступа к мировой информации заключается не в его способности найти наш текст среди сотен миллионов веб-страниц (это было под силу еще его конкурентам в 90-х), но в умении эффективно сортировать эти веб-страницы, показывая нам только те десять, которые максимально соответствуют нашему запросу.
Срез бесконечного множества – упорядоченный список в определенном смысле представляет собой универсальный пользовательский интерфейс.
Информатика помогает нам понять, что стоит за всеми этими ситуациями, а это знание в свою очередь позволяет проанализировать те моменты, когда мы сами сталкиваемся с необходимостью навести порядок в наших счетах, бумагах, книгах, носках и т. д. А происходит это гораздо чаще, чем мы думаем.
Если подсчитать все недостатки (и преимущества) беспорядка, мы можем увидеть случаи, в которых нам не следовало бы наводить порядок. Более того, если вдуматься, мы используем принципы сортировки не только при работе с информацией, но и в отношениях с людьми. Использование принципов компьютерных технологий оказалось неожиданно полезным, к примеру, на боксерском ринге. Все потому, что даже минимальное знание основ сортировки может объяснить, как люди способны мирно сосуществовать, периодически вступая в драку. Другими словами, техника сортировки может поведать нам удивительные вещи о природе нашего общества – того большого и важного порядка, авторами которого мы являемся.