Программирование, управляемое событиями: почему оно сейчас в тренде?
Опубликовано: 2019-09-17Программирование, управляемое событиями (EDP), меняет мир услуг по разработке программного обеспечения и становится неотъемлемой частью современной разработки. Его распространение стимулировали Windows и распространение визуальных сред RAD. Как следует из названия, подход к программированию фокусируется на событиях. Последние могут быть инициированы пользователем, системными и программно-генерируемыми. Наиболее распространенные области применения EDP сегодня включают создание графических интерфейсов, серверных приложений и разработку многопользовательских игр.
В отличие от программ старого стиля, контролирующих параметры пользователя и предопределяющих поток событий, более адаптивное и инновационное программирование пришло с графическим пользовательским интерфейсом (GUI). Графический интерфейс изменил взаимодействие человека с компьютером, предоставив пользователям несколько вариантов в виде раскрывающихся меню, окон, кнопок и флажков. Таким образом, вместо того, чтобы следовать заранее заданному компьютером порядку действий, пользователи получили возможность самостоятельно выбирать одну из множества доступных команд.
Что такое событийно-ориентированное программирование? Как это реализуется сегодня? Какие плюсы и минусы он предлагает программистам, предприятиям и конечным пользователям? Какие примеры такого подхода к разработке программного обеспечения доступны?
Прочитайте это подробное руководство, которое мы создали совместно с LitsLink, чтобы найти все, что вас может заинтересовать.
- Что такое событийно-ориентированное программирование?
- Обработка событий как ядро EDP
- Возможности приложений, управляемых событиями
- Языки программирования, управляемые событиями
- Преимущества событийно-ориентированного программирования
- Недостатки событийно-ориентированного программирования
- Примеры событийно-ориентированного программирования
Что такое событийно-ориентированное программирование?
В то время как традиционное программирование является линейным и основано на потоке выполнения, при котором операции выполняются в течение фиксированного промежутка времени или до достижения предварительно записанных точек принятия решения, программирование, управляемое событиями, выполняется в соответствии с определенными событиями (например, щелчком мыши, нажатием некоторых клавиш и т. д.). на клавиатуре, выбрав вариант из раскрывающегося меню). Этот тип программирования наиболее распространен для программ с графическим пользовательским интерфейсом (GUI). В случае его использования программа ожидает возникновения событий, а затем отвечает.
Давайте разберемся с некоторой вводной терминологией, чтобы лучше понять EDP.
- Событие: Событие — это условие, возникающее во время жизненного цикла программы и требующее некоторых действий со стороны системы времени выполнения. События различны по своей природе. Некоторые из них требуют, чтобы программа извлекала и отображала определенную информацию. Другие инициируют некоторые вычисления и изменяют состояние.
- Сообщение. Сообщение — это структура данных, представляющая событие во время выполнения. Он предоставляет информацию о типе события и параметрах, необходимых программе для его обработки.
- Обработчик событий: обработчик событий — это определенный модуль в программе, активированный для реагирования на событие.
- Цикл сообщений: это алгоритм опроса, используемый для реализации EDP посредством непрерывного изучения очереди сообщений и маршрутизации трафика к обработчикам событий.
Рекомендуется для вас: Руководство для начинающих по использованию Scala в Apache Spark.
Обработка событий как ядро EDP
Обработка событий составляет основу EDP и отличает эту парадигму программирования от других. Действия программы, соответствующие основам EDP, инициируются запланированными событиями, событиями оборудования, событиями операционной системы, событиями времени выполнения языка и событиями, инициируемыми инструкциями пользователя, предоставленными посредством взаимодействия с графическим интерфейсом программы. Программисты указывают эти действия во время разработки программного обеспечения в виде обработчиков событий. Проще говоря, кодеры должны ответить на вопрос: «Что должно произойти, когда произойдет определенное событие?»
Самая основная модель EDP — аппаратная модель. Он предполагает, что работа центрального процессора прерывается любым внешним стимулом, требующим его реакции. В таких условиях примитивный обработчик прерывания выполняет небольшую обработку события, в то время как функции более высокого уровня операционной системы остаются нетронутыми. Однако эта модель довольно примитивна, лишена очереди сообщений, в то время как современные системы ODP функционируют иначе.
Одним из старейших инструментов обработки событий в программной инженерии является функция обратного вызова. Это процедурная модель EDP, основанная на модели таблицы векторов прерываний. Функции обратного вызова имеют предопределенные интерфейсы, которые могут незначительно отличаться в зависимости от типа события. Типы событий — это небольшие целые числа, вычисляющие во время выполнения позицию события в таблице обратного вызова. Цикл сообщений вызывает функцию обратного вызова при обнаружении сообщения в начале очереди, соответствующей этому типу события. Чтобы функция выполнялась в процессе EDP, язык программирования, на котором это делается, должен обеспечивать метод связывания событий с конкретными функциями обратного вызова.
Возможности приложений, управляемых событиями

Приложения, основанные на событиях, отличаются друг от друга в зависимости от их назначения и функциональности. Тем не менее, все они должны обладать универсальным набором характеристик, таких как:
- Абстракция события часто предоставляется явно как монада;
- Возможность синхронизации событий;
- Реализация стиля передачи продолжения в виде обратного вызова;
- Источники примитивных событий.
Языки программирования, управляемые событиями
Программы, управляемые событиями, можно создавать на любом современном языке программирования, а Visual Basic, Visual C++ и Java специально подходят для этой цели. Например, языки визуального программирования Visual C++ и Visual Basic оснащены пакетом интегрированной среды разработки (IDE) с многочисленными стандартными параметрами управления, событиями и шаблонами кода обработчика событий. Python также используется в качестве подходящего инструмента EDP.
Вам может понравиться: Введение в программирование: краткий обзор Node JS, Laravel, React, Ruby, Vue и Python.
Преимущества событийно-ориентированного программирования
Этот подход к кодированию программного обеспечения имеет многочисленные преимущества для всех заинтересованных сторон. Это требует меньше закодированных решений, чем консольные приложения. Многие события определяются действиями пользователя, а не предварительным кодированием всех возможных сценариев. В то время как консольные приложения действуют, приложения, управляемые событиями, реагируют. Во-вторых, исключается возможность ввода недопустимого значения. Консольное приложение задает вопрос и позволяет пользователю ввести ответ. Приложения, основанные на событиях, обычно предлагают набор параметров либо в виде кнопок, либо в виде раскрывающегося меню.
ODP идеально подходит для последних тенденций разработки программного обеспечения, таких как облачные вычисления, микросервисы и потребность в улучшенной масштабируемости с помощью гибких распределенных систем. Использование ODP избавляет от необходимости исправлять и корректировать существующий код при добавлении или удалении какого-либо модуля. Система ODP продолжает работать безотказно, независимо от каких-либо корректировок такого рода. Таким образом, программисты хвалят парадигму ODP за то, что она интуитивно понятна и хорошо подходит для приложений с потоками управления, основанными на комплексе внутренних и внешних событий, а не на структуре. К другим преимуществам ODP относятся:
- Использование в качестве основы объектно-ориентированного программирования;
- Улучшение результатов проектирования программного обеспечения;
- Лучшая отзывчивость и гибкость результирующих программ;
- Более быстрая обработка за счет распределения данных по нескольким процессорам и обработчикам событий;
- Улучшена масштабируемость приложения;
- Лучше слабое сцепление.
Недостатки событийно-ориентированного программирования
Одним из наиболее часто упоминаемых недостатков программирования на основе событий является сложный поток управления и ручное управление стеком. Из-за этих недостатков этот подход к кодированию не является лучшим вариантом для простых небольших приложений, поскольку усилия нецелесообразны.
Кроме того, следует иметь в виду, что событийно-ориентированное программирование не заменяет традиционное структурное программирование, а лишь дополняет его. Традиционные методы программирования по-прежнему имеют решающее значение для написания фактической программы, в то время как элементы кодирования, управляемые событиями, могут помочь в разработке графического пользовательского интерфейса.
Гибкость ODP, ее неоспоримое преимущество, в некоторых сценариях оборачивается и недостатком. Одним из таких проявлений является непредсказуемость программы ОРО в случае изменений и ослабление контроля над системой в целом. В то время как кодировщики любят ODP для беспроблемных корректировок, например удаления или добавления некоторых функциональных модулей, эти корректировки могут привести к неожиданным изменениям в функциональности. В традиционном программировании система сразу обнаруживает такие нарушения функциональности и предоставляет кодеру отчет о причинах их возникновения, в среде ODP обнаружение таких нарушений происходит медленнее и сложнее.
Вам также может понравиться: Плюсы и минусы языка программирования Elixir.
Примеры событийно-ориентированного программирования
Сегодня программы, ориентированные на события, стали очень распространенным явлением. Наиболее популярные примеры включают обработку текстов, наборы инструментов для рисования, электронные таблицы и т. д. Большинство современных систем обмена сообщениями также следуют шаблонам, управляемым событиями, в то время как крупномасштабные веб-сайты используют масштабируемые, управляемые событиями архитектуры распределенного характера. ODP также занял прочное место в современных многозадачных ОС и различных средах программирования. Обладая такими преимуществами и высокой степенью интуитивной и гибкой настройки, ODP, несомненно, останется очень популярным вариантом кодирования в сообществе потребителей, желающих большей настройки и индивидуализации программного обеспечения, которое они используют.