В некоторых примерах реализации изобретения направление перемещения непосредственно соответствует движению пальца; в других же реализациях, как бы то ни было, направление перемещения отображает направление движения пальца в соответствии с правилом. Например, правило может утверждать, что, если направление движения пальца отклоняется на Y градусов от стандартной оси, то направление перемещения идет вдоль стандартной оси, в ином же случае направление перемещения практически совпадает с направлением движения пальца{52}
.Забавно, как юридические описания iPhone не в силах передать никакие чувства, которые мы, команда разработчиков Purple, испытывали, выполняя свою работу. Но, конечно, патенты пишут не для того, чтобы вызывать улыбки на лицах людей. Тем не менее на самом высоком уровне «Патент-949» дает понять нечто фундаментальное, связанное с работой на пересечении наук. Прямо в его заглавии упомянут один из основных блоков такой работы — эвристические правила.
Мы использовали выражение «эвристические правила», чтобы описать особенности разработки программного обеспечения, связанные с гуманитарными науками. Его эквивалент — алгоритмы — используется в технических науках. Эвристические правила и алгоритмы — это словно две стороны одной монеты. И те и другие являются конкретными процедурами, заставляющими ПО делать то, что оно делает: ввод информации, выполнение операции и вывод информации. Тем не менее цели у них разные.
Алгоритмы производят количественно измеримые результаты, где прогресс можно определить движением в заранее определенном направлении, как в случае, когда мы почти год пытались повысить производительность Safari. Тест загрузки страницы сообщал, как работает наш код и выражал результат в одном числе — среднем времени загрузки страницы.
У нас постоянно была совершенно четкая цель — уменьшить это число. Она никогда не ставилась под вопрос. Чем быстрее, тем лучше.
То же самое можно было сказать о движении точки ввода в текстовом редакторе. Когда мерцающая линия помещается в конец английского слова в середине строки, нажатие клавиши «пробел» должно вставить пробел и передвинуть курсор вправо на один символ. Нет никаких споров по поводу того, правильно это или нет. Если после нажатия клавиши пробел не появляется, а точка ввода остается в прежней позиции — это ошибки. Алгоритмы работают так. Они объективны.
Эвристические правила также могут измеряться или иметь связанное с ними значение — продолжительность анимации или значения красного-зеленого-синего для цвета на экране, но в них нет такой «стрелки улучшения», которая всегда указывает в одном направлении. В отличие от оценочных алгоритмов, по эвристическим правилам труднее принять решение. Например, как быстро должна останавливаться прокрутка списка после того, как вы ее запустили? Мы всегда делали демоверсии, чтобы оценить все возможности. Я часто сидел с разработчиками команды HI, например, Басом или Имраном, чтобы принять предварительные решения по жестам или анимации, затем мы пересматривали эти решения в более крупной группе, а потом вся команда какое-то время пользовалась результатами этих решений. Эту схему мы использовали для того, чтобы разработать эвристические правила для всей системы.