Али Альмоссави

Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и жить проще

Посвящается Фатиме

МОЖНО ВЕСЬ ДЕНЬ ПЛАВАТЬ В МОРЕ ЗНАНИЙ, НО ТАК И НЕ ПРОМОКНУТЬ.

Нортон Джустер «Призрачная будка»
Из этой книги вы узнаете:
...

• как расставить приоритеты при походе в магазин

• как уместить свою мысль в ограниченное количество знаков в Твиттере

• как быстро отсортировать почту

• как найти свой размер одежды на распродаже

• как составить крутой плейлист

Предисловие

Знаете ли вы, когда Ричард Фейнман начал разрабатывать свои знаменитые уравнения, которые принесли ему Нобелевскую премию? Он увидел, как кто-то подбрасывает тарелку в воздух. Знаете ли вы, как Джон фон Нейман сконструировал основные части своего электронного компьютера? Он взял за основу идею своего друга о том, как воспоминания сохраняются в мозге человека. В курсе ли вы, что вид кривляющегося и кричащего орангутанга в клетке навел Чарльза Дарвина [Ричард Фейнманн (1918–1988) — американский физик-теоретик; Джон фон Нейман (1903–1957) — венгерский и американский математик; Чарльз Дарвин (1809–1888) — автор теории эволюции (прим. ред.).] на гениальные мысли? У Фейнманна, фон Неймана, Дарвина и других ученых есть одна общая черта: они видели физику, математику и науку повсюду, далеко за пределами своих лабораторий.

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

Поразительно, но тексты на вавилонских глиняных табличках 1800–1600 годов до н. э. показывают, что древние вавилоняне использовали алгоритмы, скажем, при вычислении сложного процента или расчете ширины и длины резервуара. Иными словами, жизнь вавилонян складывалась из точной последовательности операций. Эти операции требовали определенных усилий, подразумевали конечный результат и приносили пользу.

Алгоритмы встречаются в работах ученых, которые на протяжении многих веков вносили вклад в развитие математики. После появления компьютеров эти характеристики позволили ЭВМ выполнять задачи предсказуемым способом.

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

Цель книги — познакомить вас с алгоритмом мышления при решении повседневных задач и показать, что все эти подходы сравнимы друг с другом. Например, два метода нахождения рубашки нужного размера на вешалке можно описать графически (см. рисунок). [Все линии изображены на графике двойного логарифмического масштаба, поэтому они имеют такой вид (прим. автора).]



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

В этой книге мы рассмотрим с точки зрения алгоритмов двенадцать знакомых каждому мест, включая гостиную, мастерскую и универмаг, где нужно будет выполнить ряд заданий. После каждого рисунка следует описание сцены и комментарий. Мы приведем по крайней мере два возможных способа выполнения фундаментального задания: один — медленный, другой — быстрый. Чтобы понять разницу между ними, надо все время помнить заголовок книги, отчасти навеянный рассуждениями ученого Дональда Кнута о «хороших» алгоритмах, которые можно считать быстрыми или эффективными. [Важно в самом начале отметить, что эти характеристики не всегда применимы к другим сферам жизни, например к учебе, где скорость — не главное. По моему опыту та обучающая среда, которая требует от студентов работать быстро, настраивает их на неудачу (прим. автора).]

Введение

Для чего нужны относительные величины?

Сравнения — чрезвычайно мощная штука. Одно из первых абстрактных понятий, которые усваивают дети, — разница между большим и маленьким. Когда ребенок спрашивает: «А какого размера тот титанозавр из Музея естественной истории?», то ответ типа «Не очень большой. Всего семнадцать футов в высоту» мало что скажет малышу. Зато он поймет такое объяснение: «Если бы Сюзан, Маргарет и Яша встали друг другу на плечи, то Яша, наверное, смог бы дотянуться до нижней челюсти ящера».

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

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

Именно это обстоятельство стало основной причиной написания этой книги. В школе и колледже я часто прибегал к сравнениям, оценкам, прикидкам и приблизительным величинам для понимания различных терминов и концепций. Я не осмеливался никому признаться в этом, потому что такие методы выглядели слишком простыми. И только прочитав книги «Самый странный человек» [В этой книге есть смешной отрывок об Оливере Хивсайде, остром на язык отшельнике, чей подход к математике проектирования отличался особой прагматичностью. Инженеры хвалили метод Хивсайда, но математики смеялись над ним из-за недостатка точности. У Хивсайда же не было времени проявлять дотошность («Стоит ли мне отказываться от ужина, если я не понимаю, как происходит пищеварение?»). (Прим. автора.)] и «Общество разума», я узнал, что не я один считаю полезным этот тип мышления. Позже я познакомился с работой «Искусство озарения в науке и инженерном деле» и другими книгами, посвященными этой идее.

Я надеюсь, что моя книга поможет вам лучше мыслить и понимать побочные эффекты этой методики. Она не будет учить вас, как лучше находить пары носков — этой интуитивной способностью обладают почти все люди. Скорее она заставит вас задуматься: «Надо же, я и не знал, что о носках можно рассуждать в таких категориях». Похоже, критическое, алгоритмическое мышление — высокоэффективный инструмент, который влияет на наше поведение, меняя его в лучшую сторону.

Зачем фокусироваться на повседневных задачах?

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

Алгоритмы не оторваны от реальности. Не случайно многие объяснения в этой книге сопровождаются иллюстрациями. Рассказывать о чем-либо при помощи рисунков удобно не только потому, что они добавляют красок и эмоций в однообразное повествование. Изображения погружают человека в знакомую среду, включают его в процесс. Вы становитесь способны на более сложные суждения и более интенсивное мышление, когда соединяете новую информацию с известной. Именно поэтому аналогии — очень эффективный инструмент.

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

В этой книге каждый урок представлен в виде сценария или плана на целый день. Такой план заставляет вас развивать собственный подход путем погружения и проигрывания различных ситуаций, проговаривания их; он помогает вам в мыслях выйти за пределы ежедневной рутины. Интерактивный подход делает чтение увлекательнее и дает читателю более полезный обучающий опыт. Мои самые яркие детские воспоминания об учебе — это беседы с родителями или с учителем. Все они понимали, что в обучении процесс так же важен, как способности.

Я допускаю возможность разных итогов. Один из моих любимых афоризмов об обучении принадлежит Фрэнсису Бэкону: [Фрэнсис Бэкон (1561–1626) — один из крупнейших философов Нового времени, основоположник эмпиризма и английского материализма (прим. ред.).] «Второстепенная и неочевидная польза не менее важна, чем признанный всеми положительный результат». На каждый вопрос существует не один ответ. Представьте себе некий музей науки — родители читают надписи на экспонатах и пересказывают их детям как могут. Никто не приходит в этот мир готовым ученым, никто не покидает его, зная все; но каждый обретает что-то ценное за счет своего опыта.