Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Software Engineering2011.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

Процедурное программирование

Теоретической моделью процедурного программирования служит алгоритмическая система под названием Машина Тьюринга. При таком программировании описывается, что делать (алгоритм), в отличии от декларативного программирования. Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих процедуру решения задачи.

Основным является оператор присваивания, служащий для изменения содержимого областей памяти. Концепция памяти как хранилища значений, содержимое которого может обновляться операторами программы, является фундаментальной в императивном программировании.

Выполнение программы сводится к последовательному выполнению операторов с

целью преобразования исходного состояния памяти, то есть значений исходных данных, в

заключительное, то есть в результаты. Таким образом, с точки зрения программиста имеются программа и память, причем первая последовательно обновляет содержимое последней.

Примеры языков: Аda (язык общего назначения), Basic (версии начиная с Quick Basic до появления Visual Basic), Си, КОБОЛ, Фортран, Pascal.

Функциональное программирование

Функциональное программирование — парадигма программирования, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании). Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательность изменения состояний (в значении, подобном таковому в теории автоматов). На практике отличие математической функции от понятия «функции» в императивном программировании заключается в том, что императивные функции могут опираться не только на аргументы, но и на состояние внешних по отношению к функции переменных, а также иметь побочные эффекты и менять состояние внешних переменных. В отличие от императивного стиля, описывающего шаги, ведущие к достижению цели, функциональный стиль описывает математические отношения между данными и целью. К преимуществам функционального программирования можно отнести удобство тестирования и более высокую надежность (достаточно независимо протестировать работу каждой функции исходя лишь из параметров и результата, так как функции не порождают побочных эффектов, одинаковые параметры приведут к одному результату). Программу возможно оптимизировать при компиляции, так такой подход к написанию не задает жесткой последовательности действий, и полностью независимые функции могут выполняться параллельно.

Недостатком функционального программирования является постоянное порождение новых данных вместо изменений, требующее постоянного выделения и автоматического освобождения памяти. Поэтому в этом случае необходим высокоэффективный сборщик мусора. Примером чисто функционального языка программирования является Haskell, названный в честь Хаскелла Карри, частично функциональную парадигму использует SQL.

Событийно-ориентированное программирование

Событийно-ориентированное программирование - парадигма программирования,

в которой выполнение программы определяется событиями — действиями пользователя

(клавиатура, мышь), сообщениями других программ и потоков, событиями операционной

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

1. при программировании пользовательских интерфейсов (в том числе GUI: AWT/Swing, MFC);

2. при создании серверных приложений в случае, если при проектировании отказались от порождения обслуживающих процессов;

3. при программировании игр, в которых осуществляется управление множеством

объектов.

Следует обратить внимание, что событийно-ориентированная архитектура предъявляет довольно жесткие требования к обработчикам событий - они должны завершаться за небольшое время и нигде не блокироваться. Далеко не для всех задач легко выполнить эти требования.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]