совершенного распорядка, как если бы вы заглянули в будущее. Но то лучшее, что вы можете сделать, вычислить гораздо проще.
Это немного утешает. Как говорит обозреватель и программист Джейсон Фрайд, «вам кажется, что вы не можете продолжать, пока у вас не появится железобетонный план? Замените слово "план" на "предположение" и успокойтесь». Теория планирования подтверждает это утверждение.
Когда будущее туманно, вам нужен не календарь, а просто список дел.
Последствия приоритетного прерывания: контекстное переключение
Чем больше я тороплюсь, тем больше не поспеваю.
Вышивка, увиденная в городе Бунвиль, штат Калифорния
Программисты не разговаривают потому, что их нельзя перебивать… Синхронизация с другими людьми (или их присутствием в телефонах, сигналах пейджера или звонках в дверь) означает только, что ход мысли прерван. За прерываниями следуют ошибки. Вы не должны останавливаться.
Эллен Ульман
И все же опыт теории планирования может вдохновлять. В ее составе есть простые оптимальные алгоритмы для решения многих задач по планированию, максимально похожих на те, с которыми мы ежедневно сталкиваемся в быту. Но как только дело доходит до планирования работы одного устройства в реальном мире, все становится гораздо сложнее.
Прежде всего и людей, и операционные системы компьютеров ждет одно крайне любопытное испытание. Устройство, которое осуществляет планирование, и устройство, работа которого распланирована, – равнозначны. Таким образом, наведение порядка в списке ваших дел становится одним из пунктов этого списка, который сам нуждается в установлении очередности и координировании.
Во-вторых, прерывание не проходит бесследно. Каждый раз, переключаясь с задачи на задачу, вы платите за это определенную цену, известную в мире программирования как контекстное переключение. Когда внимание компьютерного процессора переключается с заданной программы, затраты вычислительных ресурсов возрастают. Процессор должен отметить место, в котором он остановился, и отложить всю информацию, относящуюся к этой программе. Затем он определяет, какую программу надо запустить в следующую очередь. Наконец, процессору необходимо извлечь всю соответствующую информацию для новой программы, найти ее место в коде и включиться в работу.
Эти переключения с задачи на задачу не относятся к «настоящей» работе, поскольку не меняют статус выполнения какой-либо из задач, между которыми компьютер переключается. Это метаработа. Каждое контекстное переключение – трата времени. У людей контекстное переключение тоже приводит к определенным дополнительным затратам. Мы ощущаем это, когда перекладываем бумаги на столе; когда открываем и закрываем файлы на компьютере; когда заходим в комнату и не можем вспомнить, зачем мы туда пришли, или когда спрашиваем «так о чем я говорил?». Психологи доказали, что у людей переключения между задачами приводят к ошибкам и задержкам памяти, которые измеряются минутами, а не микросекундами. Объективно оценивая эти цифры, можно сказать, что, перебивая человека несколько раз в час, вы напрочь лишаете его возможности работать.