Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UMK_konspekt_TP_4_a4_2.doc
Скачиваний:
16
Добавлен:
29.09.2019
Размер:
1.57 Mб
Скачать

14. Методология и парадигма программирования

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

С каждой методологией программирования можно связать некоторые характерные для нее атрибуты:

  1. Философский подход (или основной принцип).

  2. Связное множество методов реализации.

  3. Концепции (понятия, замыслы), поддерживающие методы и позволяющие более точно их определять.

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

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

Термин «парадигма» был впервые предложен Томасом Куном. Он определял парадигму как свод норм научного мышления.

В общем случае парадигма – это правило (modus operandi) развития научного знания. Оно в течение определенного времени дает научному сообществу модель постановки проблем и их решений.

15. Современные методологии программирования

Классификацию современных методологий можно определить на основе способов описания алгоритмов:

  1. Методология императивного программирования.

  2. Методология объектно-ориентированного программирования.

  3. Методология функционального программирования.

  4. Методология логического программирования.

  5. Методология программирования в ограничениях.

  6. Методология нейросетевого программирования.

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

В приведенной классификации они указаны в порядке уменьшения связи методологии с понятием алгоритм и увеличением связи с понятием модель.

На данный момент также выделяют две разновидности организации аппаратной поддержки методологий: централизованную и параллельную.

Получение качественной оценки любой методологии основано на использовании двух параметров:

  1. Эффективность ПО на современных компьютерах.

  2. Общие затраты на разработку ПО.

Соответственно выделяют две ветви в развитии языков, поддерживающих методологии:

  1. Языки (как правило, компилируемые), ориентируемые на скорость исполнения кода программы.

  2. Языки (и компилируемые, и интерпретируемые), ориентированные на высокий уровень и удобство программирования.

16. Методология императивного программирования

Методология императивного программирования – это подход, основанный на последовательном изменении состояния вычислителя пошаговым образом.

Императивное программирование – это исторически первая поддерживаемая аппаратно методология программирования. Она ориентирована на классическую фон Неймановскою модель, которой присущи следующие характеристики:

  1. Единственная последовательно адресуемая память (программа и данные хранятся в одной памяти, адреса областей которой составляют единую последовательность).

  2. Память является линейной одномерной.

  3. Отсутствует явное различие между командами и данными (их идентифицируют неявным способом при выполнении операций).

  4. Назначение данных определяется логикой программы.

Методы и концепции:

  1. Последовательное изменение состояний вычислителя.

  2. Пошаговый контроль управления потоком команд.

Вычислительная модель представляет собой описание последовательного изменения состояний вычислителя (применяемая математическая модель - машина Тьюринга).

Применяемая структура данных – последовательность пар ячеек «адрес -> значение».

Синтаксис и семантика. Основным синтаксическим понятие - оператор. При этом различают:

  1. Атомарные операторы – никакая их часть не является самостоятельным оператором (например, оператор присваивания, оператор безусловного перехода, вызова процедуры и т.п.).

  2. Структурные операторы, объединяющие другие операторы в новый, более крупный оператор (например, составной оператор, операторы выбора, цикла и т.п.).

На практике для описания синтаксиса языков широко применяется формальная система обозначений Бэкуса – Наура. В ней одни синтаксические категории определяются через другие последовательно. В данной системе обозначений используются:

  1. Метапеременные — представляют собой слова или группы русских слов, заключённых в угловые скобки. Под значением метапеременной понимается некоторая конечная последовательность основных символов языка, из которых, в конечном счёте, состоят программы.

  2. Символ ::= означает «определяется как».

  3. Символ | означает «или».

  4. Символ * означает «произвольное количество повторений (в том числе ноль раз) того символа, за которым он указан».

Символы, указанные в квадратных скобках — являются необязательными.

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

<оператор> ::= <простой оператор>|

|<структурный оператор>;

<простой оператор> ::=<оператор присваивания>|

|<оператор вызова>|

|<оператор возврата>;

<структурный оператор> ::=

<оператор последовательного исполнения>|

|<оператор ветвления>|<оператор цикла>;

<оператор присваивания> ::= <переменная>::=<выражение>;

<оператор вызова> ::= <имя программы>(<список параметров>);

<оператор возврата> ::= return [<выражение>];

<оператор последовательного исполнения> ::=

begin <оператор>* end;

<оператор выбора> ::= if <выражение> then <оператор>*

(elseif <выражение> then <оператор>*)*

[else <оператор>*]

end;

<оператор цикла> ::= while <выражение > dо <оператор>* end;

Средство структурирования – подпрограмма (процедура или функция). Подпрограммы имеют параметры и локальные определения и могут быть вызваны рекурсивно. Функции возвращают значения как результат своей работы.

Типичный подход к решению задачи: сначала исполняется алгоритм, решающий первую задачу. Результаты его работы сохраняются в специальном месте памяти, которое известно следующему алгоритму, и используется им и т.д.

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

Считается, что первым алгоритмическим языком программирования был язык Plankalkuel (от plan calculus), разработанный в 1945-1946 гг. Конрадом Цузе (Konrad Zuse).

Наиболее известные и распространённые императивные языки программирования, были созданы в конце 50-х – середине 70-х годов XX века.

  1. Fortran (1954)

  2. Algol (1960)

  3. Pascal (1970)

  4. C (1972)

  5. ICON (1974)

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

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