Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_k_ekzamenu_po_FLP_SP21_22.doc
Скачиваний:
13
Добавлен:
15.03.2015
Размер:
330.75 Кб
Скачать

Вопросы к экзамену по ФЛП

  1. Сравнение различных стилей программирования.

Процедурная, функциональная, логическая и объектно-ориентированная вычислительные модели.

Методы оценки для разных вычислительных моделей.

Обмен информацией в процессе оценки.

Современным программистам предлагаются различные стили программирования (парадигмы).

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

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

Для описания процесса вычислений используются четыре основных типа таких моделей: процедурная, функциональная, логическая и объектно-ориентированная.

Поставленная перед разработчиком задача обычно имеет некоторый набор исходных данных и цель. Это отражается в постановке задачи. Если поставленная задача решается на компьютере, то возникает проблема формализации этой задачи, так как вычислительный процесс может быть выполнен на компьютере только в том случае, если он формализован. В основу вычислительного процесса могут быть положены разные математические формализмы (вычислительные модели). Четыре основных парадигмы программирования представлены на рис.1.1.

Рис. 1.1. Различные стили программирования

1.1.1 Процедурная вычислительная модель

В этой модели алгоритм (программа) в явном виде (с помощью выполняемых операторов присваивания) определяет как сами действия, так и последовательность их выполнения ( С, С++, Pascal, Ada и другие языки программирования) Концепция памяти – преобразование исходного состояния памяти (значения переменных) в заключительное состояние. Фон-неймановские машины состоят из ячеек памяти и процессора, имеющего локальную память в виде регистров. Компьютер работает на ограниченном множестве операций, и программист вынужден мыслить в терминах этого ограниченного множества операций.

1.1.2 Функциональная вычислительная модель

В этой модели программа рассматривается как множество определений функций. Отличительной чертой этих моделей является то, что в основу их положена математическая модель, называемая “лямбда-исчислением” Черча. Для представления обычной функции используется выражение f(x).При этом неясно: то ли оно означает функцию f,то ли ее значение при заданном параметре x. Для четкого описания функции было введено выражение xf(x).То есть, когда хотят рассматривать выражение P как функцию от x, следует использовать запись xP (лямбда-абстракция). Таким образом, выражение x(x+y) является функцией от x, а не от у. При этом x называют связанной переменной, а y- свободной переменной.

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

1.1.3. Логическая вычислительная модель

В этих моделях вычисления представляются с помощью логики предикатов, а языки программирования, используемые для описания вычислений, называются логическими. Компьютер используется для получения выводов из декларативного описания предметной области. В качестве основы используется раздел математической логики, называемый автоматизация доказательства теорем. Для самого описания предметной области используются хорновские дизъюнкты как часть исчисления предикатов первого порядка. В логическом программировании основными являются понятия объектов и отношений между ними. Первая часть пособия посвящена именно логическому программированию и языку Пролог, поэтому сразу после введения перейдем к более подробному изложению этого стиля программирования.