Событийно-ориентированное программирование
Эвристическое программирование
Метод программирования, основанный на моделировании мыслительной деятельности человека. Используется для решения задач, не имеющих строго формализованного алгоритма или связанных с неполнотой исходных данных.
Алгоритмическое программирование
Основная идея алгоритмического программирования – разбиение программ на последовательность модулей, каждый из которых выполняет одно или несколько действий. Единственное требование к модулю - чтобы его выполнение всегда начиналось с первой команды и всегда заканчивалось на самой последней (чтобы нельзя было попасть на команды модуля извне и передать управление из модуля на другие команды в обход заключительной).
Алгоритм на выбранном языке программирования записывается с помощью команд описания данных, вычисления значений и управления последовательностью выполнения программ.
Структурное программирование
Это метод написания программ небольшими независимыми частями – модулями, каждый из которых связан с какой-либо процедурой или функцией.
При создании средних по размеру приложений (несколько тысяч строк исходного текста) используется структурное программирование, идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста.
Для этого нужно иметь средства для создания программы не только с помощью трех простых операторов, но и с помощью средств, более точно отражающих конкретную структуру алгоритма.
С этой целью введено понятие подпрограммы – набора операторов, выполняющих нужное действие и не зависящее от других частей исходного текста. Программа разбивается на множество мелких подпрограмм, каждая из которых выполняет одно из действий, предусмотренных исходным заданием. Комбинируя эти подпрограммы, удается формировать итоговый алгоритм из законченных блоков кода, имеющих определенную смысловую нагрузку.
Декларативное программирование
Метод программирования, предназначенный для решения задач искусственного интеллекта. Программа описывает логическую структуру решения задач, указывая преимущественно, что «нужно сделать», не вдаваясь в детали «как это делается». Используются языки программирования типа Пролог.
Функциональное программирование
Это метод программирования, основанный на разбиении алгоритма решения задачи на отдельные функциональные модули, а также описании их связей и характера взаимодействия. Для данного вида программирования используются языки HOPE ML. Элементы функционального программирования реализуются также другими языками, например, Си.
Нисходящее проектирование
Наличие подпрограмм позволяет вести проектирование и разработку приложения сверху вниз – такой подход называется нисходящим проектированием.
Сначала выделяется несколько подпрограмм, решающих самые глобальные задачи, потом каждый из этих модулей детализируется на более низком уровне, разбиваясь на небольшое число других подпрограмм, пока вся задача не окажется реализованной.
Событийно-ориентированное программирование
С активным распространением системы Windows и появлением визуальных RAD-сред широкую популярность приобрел событийный подход к созданию программ – событийно-ориентированное программирование.
Идеология системы Windows основана на событиях. Структура программы, созданной с помощью событийного программирования следующая.
Главная часть представляет собой один бесконечный цикл, который опрашивает Windows, следя за тем, не появилось ли новое сообщение. При его обнаружении вызывается подпрограмма, ответственная за обработку соответствующего события.
События могут быть пользовательскими (возникающие в результате действий пользователей), системными (в ОС – сообщения от таймера) и программными, генерируемыми самой программой (например, обнаружена ошибка и ее надо обработать).