- •1.1.1 Процедурная вычислительная модель
- •1.1.2 Функциональная вычислительная модель
- •1.1.4. Объектно-ориентированная вычислительная модель (ооп)
- •1.2.Метод оценки (способ получения результатов)
- •5.1.Метод отката после неудачи – опн
- •Листинг 5.9. Бесконечная рекурсия (хвостовая рекурсия)
- •Влияние предиката cut на составную цель
- •Goal: a(X), b(y), !, c(X,y,z).
- •Определение
- •Список помогает сделать программу компактной, эффектив-
- •Список – это рекурсивный составной объект, поэтому
Вопросы к экзамену по ФЛП
Сравнение различных стилей программирования.
Процедурная, функциональная, логическая и объектно-ориентированная вычислительные модели.
Методы оценки для разных вычислительных моделей.
Обмен информацией в процессе оценки.
Современным программистам предлагаются различные стили программирования (парадигмы).
Внутри каждого из этих стилей имеются свои наборы различных языков.
В программировании термин парадигма используется для определения модели вычислений, то есть способа структурирования информации, организации вычислений и данных.
Для описания процесса вычислений используются четыре основных типа таких моделей: процедурная, функциональная, логическая и объектно-ориентированная.
Поставленная перед разработчиком задача обычно имеет некоторый набор исходных данных и цель. Это отражается в постановке задачи. Если поставленная задача решается на компьютере, то возникает проблема формализации этой задачи, так как вычислительный процесс может быть выполнен на компьютере только в том случае, если он формализован. В основу вычислительного процесса могут быть положены разные математические формализмы (вычислительные модели). Четыре основных парадигмы программирования представлены на рис.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. Логическая вычислительная модель
В этих моделях вычисления представляются с помощью логики предикатов, а языки программирования, используемые для описания вычислений, называются логическими. Компьютер используется для получения выводов из декларативного описания предметной области. В качестве основы используется раздел математической логики, называемый автоматизация доказательства теорем. Для самого описания предметной области используются хорновские дизъюнкты как часть исчисления предикатов первого порядка. В логическом программировании основными являются понятия объектов и отношений между ними. Первая часть пособия посвящена именно логическому программированию и языку Пролог, поэтому сразу после введения перейдем к более подробному изложению этого стиля программирования.