Хакни рутину. Как алгоритмы помогают справляться с беспорядком, не тупить в супермаркете и жить проще. Али Альмоссави
Читать онлайн книгу.te>
• как расставить приоритеты при походе в магазин
• как уместить свою мысль в ограниченное количество знаков в Твиттере
• как быстро отсортировать почту
• как найти свой размер одежды на распродаже
• как составить крутой плейлист
Предисловие
Знаете ли вы, когда Ричард Фейнман начал разрабатывать свои знаменитые уравнения, которые принесли ему Нобелевскую премию? Он увидел, как кто-то подбрасывает тарелку в воздух. Знаете ли вы, как Джон фон Нейман сконструировал основные части своего электронного компьютера? Он взял за основу идею своего друга о том, как воспоминания сохраняются в мозге человека. В курсе ли вы, что вид кривляющегося и кричащего орангутанга в клетке навел Чарльза Дарвина[1] на гениальные мысли? У Фейнманна, фон Неймана, Дарвина и других ученых есть одна общая черта: они видели физику, математику и науку повсюду, далеко за пределами своих лабораторий.
Даже если вы не собираетесь стать нобелевским лауреатом, в повседневной жизни есть много вещей, которые можно записать в виде алгоритма. Вы постоянно применяете алгоритмы для решения различных задач: ищете ли вы пару к носку в куче вещей, решаете ли, когда поехать за продуктами, определяете приоритетность задач на день и так далее. Алгоритм – это последовательность точных шагов, при помощи которой в конкретный промежуток времени достигается намеченная цель. Реализация этой последовательности может начаться с приложения усилий и энергозатрат, но подразумевается, что в итоге ваши действия принесут определенную пользу. Все это характеристики алгоритма.
Поразительно, но тексты на вавилонских глиняных табличках 1800–1600 годов до н. э. показывают, что древние вавилоняне использовали алгоритмы, скажем, при вычислении сложного процента или расчете ширины и длины резервуара. Иными словами, жизнь вавилонян складывалась из точной последовательности операций. Эти операции требовали определенных усилий, подразумевали конечный результат и приносили пользу.
Алгоритмы встречаются в работах ученых, которые на протяжении многих веков вносили вклад в развитие математики. После появления компьютеров эти характеристики позволили ЭВМ выполнять задачи предсказуемым способом.
Несмотря на важность алгоритмов в нашей повседневной жизни, почти вся посвященная им литература описывает исключительно их научное применение. Многие авторы игнорируют практическую пользу и эффективность многих алгоритмов. Простые ежедневные задачи можно выполнять разными способами, и чем больше мы знаем таких способов, тем легче достигаем результата. Это можно сравнить с развитием интуиции, которой мы все обладаем. И тут на помощь приходит эта книга.
Цель книги – познакомить вас с алгоритмом мышления при решении повседневных задач и показать, что все эти подходы сравнимы друг с другом. Например, два метода нахождения рубашки нужного размера на вешалке можно описать графически (см. рисунок).[2]
Графики такого вида (их называют линейными и логарифмическими) и есть те самые схемы, которые мы будем строить и обсуждать в этой книге. Бывает, что оба подхода одинаково действенны, когда у нас всего несколько предметов, но их эффективность меняется по мере того, как количество предметов растет.
В этой книге мы рассмотрим с точки зрения алгоритмов двенадцать знакомых каждому мест, включая гостиную, мастерскую и универмаг, где нужно будет выполнить ряд заданий. После каждого рисунка следует описание сцены и комментарий. Мы приведем по крайней мере два возможных способа выполнения фундаментального задания: один – медленный, другой – быстрый. Чтобы понять разницу между ними, надо все время помнить заголовок книги, отчасти навеянный рассуждениями ученого Дональда Кнута о «хороших» алгоритмах, которые можно считать быстрыми или эффективными.[3]
Введение
Для чего нужны относительные величины?
Сравнения – чрезвычайно мощная штука. Одно из первых абстрактных понятий, которые усваивают дети, – разница между большим и маленьким. Когда ребенок спрашивает: «А какого размера тот титанозавр из Музея естественной истории?», то ответ типа «Не очень большой. Всего семнадцать футов в высоту» мало что скажет малышу. Зато он поймет такое объяснение: «Если бы Сюзан, Маргарет и Яша встали друг другу на плечи, то Яша, наверное, смог бы дотянуться до нижней челюсти ящера».
Возможно, умение оперировать относительными величинами – врожденная способность, поскольку ею обладают все дети. Последние эксперименты показывают, что мозг ребенка проявляет такую же активность в ответ на изменения размера изображения, как и при изменении количества образов. Результаты других экспериментов, проведенных в отдаленных уголках мира, говорят, что люди, избежавшие напасти формального образования, судят о количестве предметов при помощи относительных величин.
Из всех подвидов человека разумного ярче всего эта интуиция выражена у ученых-компьютерщиков.
1
Ричард Фейнманн (1918–1988) – американский физик-теоретик; Джон фон Нейман (1903–1957) – венгерский и американский математик; Чарльз Дарвин (1809–1888) – автор теории эволюции
2
Все линии изображены на графике двойного логарифмического масштаба, поэтому они имеют такой вид (
3
Важно в самом начале отметить, что эти характеристики не всегда применимы к другим сферам жизни, например к учебе, где скорость – не главное. По моему опыту та обучающая среда, которая требует от студентов работать быстро, настраивает их на неудачу (