Событие
Это понятие впервые встречается на программе «Электроника, программирование и инженерная практика» — примерно 13-14 лет (7-8 класс).
Сигнал «что-то произошло»: нажали клавишу, щёлкнули по коту, пришло сообщение. Программа ждёт событие и отвечает на него своим действием.
Дверной звонок: занимаешься своим делом, но прозвенел звонок — идёшь открывать.
Назвать три события в любимой игре и действие в ответ на каждое (нажал пробел — герой прыгнул).
Происшествие, на которое программа отвечает: нажатие клавиши, щелчок, сообщение, сигнал таймера. На событие назначают обработчик — скрипт или функцию, запускаемую в момент события. В Scratch это блоки-шапки «когда…»: каждый скрипт ждёт своего события, и разные скрипты работают независимо.
Собрать в Scratch управление котом на событиях «когда клавиша нажата»; найти ошибку в проекте, где два скрипта назначены на одну клавишу и спорят друг с другом.
Асинхронный сигнал (действие пользователя, таймер, данные из сети), обрабатываемый событийной моделью: цикл событий берёт их из очереди и вызывает обработчики по одному. На этом построен интерфейс страниц в JavaScript; в микроконтроллерах близкий механизм — аппаратные прерывания (attachInterrupt в Arduino). Краевой случай: долгий обработчик держит очередь — остальные события ждут, интерфейс «замирает».
Назначить в JavaScript обработчик click с долгим циклом внутри; показать, что страница перестаёт отвечать, и исправить, сократив работу обработчика.
Частое заблуждение
«Обработчик события работает всё время». Нет: он ждёт; код запускается только в момент события — между двумя нажатиями кнопки обработчик не выполняется.