14. Обработка событий

Программирование, основанное на событиях

Перфокарта и перфолента
Перфокарта и перфолента

ЭВМ ЕС-1020
ЭВМ ЕС-1020

Распечатка
Распечатка

Вспоминаются времена, когда для запуска программы нужно было предварительно проковырять дырочки на бумажных картах (перфокартах) или бумажных лентах (перфолентах). Затем передать носители оператору, краем глаза усмотрев в приёмном окне гордый профиль пишмаша ЭВМ, а то и остов шкафа с магнитной лентой и специальными карманами, куда лента с бобины частично сматывалась для убыстрения перемотки. Несколько часов томительного ожидания, и можно было получить готовую распечатку. В лучшем случае она содержала результаты вычислений, а чаще — лишь сообщение об ошибке в программе.

Времена последовательного исполнения кода канули в лето. Компьютеры стали персональными и переселились из просторных комнат, сжавшись в размерах, на письменные столы, а программы перестали работать. Они стали ждать.

Алгоритм работы современной программы выглядит так:

  1. Ждать пока что-то произойдет.
  2. Отреагировать на событие и перейти к пункту 1.

Возьмём для примера графический редактор. Программа строит наборы меню (пользовательский интерфейс) и начинает ждать. Если пользователь тоже ждет, то совершенно напрасно. Программа переждёт его заведомо и не проявит себя ни словом, ни делом, сколько бы времени ни прошло. Современные программы умеют расслабляться!

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

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

Программисты сегодня пишут не программы, они пишут обработчики событий.

Web-браузер не является исключением в мире программ. Он загружает страницу (по вводу её адреса) и ожидает дальнейших событий. Как правило, таким происшествием является щелчок на гиперссылке — браузер оживает и загружает новую страницу. Web был бы слишком скучен, если бы его возможности на этом заканчивались. К счастью, web-разработчик сегодня может создавать собственные обработчики событий, наполняя гипертекстовую страницу функциональностью, возможности которой ограничиваются только его фантазией и здравым смыслом.