Функциональное и логическое программирование
|
Учебных занятий по дисциплине
|
100 час.
|
|
из них:
|
|
|
лекции
|
34 час.
|
|
лабораторные занятия
|
17 час.
|
|
индивидуальные занятия
|
17 час.
|
|
самостоятельная работа
|
32 час.
|
|
лектор курса
|
Краткая аннотация курса:
Особенности функциональных программ как суперпозиции функций. Строго функциональный язык. Выполнение Лисп-программы. Элементарные предикаты. Рекурсивные функции и их разработка. Элементы структурного программирования. Применение функциональных программ. Логическое программирование на языке Пролог. Факты, вопросы, правила. Переменные. Согласование целевых утверждений. Рекурсивное определение правил. Операции и предикаты для работы с термами. Операторы. Списки. Рекурсивные процедуры обработки списков. Декларативный и процедурный смысл программ. Отсечение и отрицание. Структуризация данных и их обработка. Применение логических программ.
Аннотация курса:
Дисциплина читается в весеннем семестре 3-го курса; согласно стандарту на нее отведено 34 часа лекций и 17 час лабораторных работ; в конце семестра - зачет.
Дисциплины, предшествующие ФиЛП:
Информатика: методы обработки информации, технические и программные средства вычислительных систем, математические основы информатики;
Дискретная математика: логика предикатов, графы и операции над ними;
Дисциплина, следующая за ФиЛП -
Искусственный интеллект: семантические сети, экспертные системы.
Курс состоит из 2-х разделов:
- Функциональное программирование
- Логическое программирование
В этих разделах подробно рассматриваются следующие вопросы:
- Введение в функциональное программирование и язык Lisp; основные типы данных; cписки и функции для работы с ними; пользовательские функции; организация рекурсивных функций; циклы, массивы, структуры; функционалы и их применение; использование Lisp для символьных вычислений. Средства языка для объектно-ориентированного программирования.
- Введение в логическое программирование и язык Prolog; факты, вопросы, правила. описание механизма работы Prolog; структура программы на TProlog; управление перебором. списки, их представление в программах и рекурсивные процедуры для их обработки ; структуризация данных; динамические базы данных; применение языка Prolog для работы с графами и создания экспертных систем.
Учебно-методическая литература:
- Хювен, Сеппянен " Мир ЛИСПа". т.1,2 Мир, 1991.
- Крюков и др. " Программирование на языке R- ЛИСП", М.,Мир, 1983.
- Лавров, Силагадзе " Автоматическая обработка данных ", М.,Наука, 1978.
- Хендерсон " Функциональное программирование " . М., Мир, 1983.
- Братко И. "Программирование на языке ПРОЛОГ для искусственного интеллекта" М., Мир,1990.
- Стерлинг Л., Шапиро Э. "Искусство программирования на языке ПРОЛОГ" М., Мир, 1990
- Доорс Дж., Рейнблен А., Вадера. "Пролог - язык программирования будущего" М., Финансы и статистика 1990.
- Лутай В.Н., Байдуганов М.Ю. Программирование на ArityProlog. ТРТУ, 1994.
- Лутай В.Н. Программирование на языках Лисп и Пролог. ТРТУ,1998.
Замечания по литературным источникам:
Монографиям по функциональному программированию и языку Lisp, изданным на русском языке в центральных издательствах, не менее 15 лет. Т.е. приходится признать, что функциональное программирование не находится в main stream отечественного программирования. С другой стороны, эта дисциплина является обязательной при подготовке специалистов по программному обеспечению.
Классической монографией является Филд А., Харрисон П. Функциональное программирование - М.: Мир, 1993. - 637 с. ,ставшая, впрочем, библиографической редкостью.
С языком Lisp я знакомился по двухтомнику Хювенен Э. Сяппянен И. Мир Лиспа 1,2 т. –М.: Мир, 1991
Язык Common Lisp очень хорошо изложен в David S. Touretzky COMMON LISP: A Gentle Introduction to Symbolic Computation. The Benjamin/Cummings Publishing Company,Inc. 1990 (Доступен в Интернете).
Вообще в Интернете можно получить много сведений по запросу «Лекции по Lisp». Но в полученном таким образом материале, как впрочем, и ранее названном, излагаются только классические возможности языка: рекурсивные функции, символьные вычисления и т.п. Между тем, Common Lisp обладает средствами объектно-ориентированного программирования, и вполне способен конкурировать с С++/С#. С этими его возможностями можно познакомиться в Люггер Д. Ф. Искусственный интеллект: стратегии и методы решения сложных проблем. – М.: Издательский дом 'Вильямс', 2003. - 864 с.
Peter Seibel. Practical Lisp. 2003
Существует язык Visual Lisp. Но он является частью системы AutoCad и обладает спецификой, связанной с особенностями системы. Он изложен в Полещук В. И., Полещук Н. Visual LISP и секреты адаптации AutoCAD.: БХВ-Петербург, 2001г.576 стр.В учебном пособии Лутай В.Н. Программирование на языке Common Lisp. ТТИ ЮФУ 2008 5 п.л. содержится описание как классических возможностей Lisp, так и его средств ООП.
Перечень изданных на русском языке в центральных издательствах монографий по логическому программированию тоже не поражает воображение, но более широк, чем по функциональному и языку Lisp. Это прежде всего классика Братко И. Программирование на языке Пролог для искусственного интеллекта 1990. - 552 с. Здесь изложены основы логического программирования и его применения. В качестве инструментальной среды используется интерпретатор языка.
Далее, можно пользоваться
-
Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог - М.: Мир, 1990. - 333 с.
-
Малпас Дж. Реляционный язык Пролог и его применение - М.: Наука, 1990. - 464 с.
Следующая монография рассказывает о логическом программировании в системе Турбо Пролог, использующую компиляцию логических программ. Марселлус Д. Программирование экспертных систем на Турбо Прологе: пер. с англ. - М.: Финансы и статистика, 1994. - 256 с.
В связи с разработкой и активным внедрением языка Visual Prolog, способным создавать программы под Windows, на русском языке появилась книга Адаменко А.Н., Кучуков А.М. Логическое программирование и Visual Prolog. СПб.: БХВ Петербург, 2003. – 992 с. в которой излагается основы работы на Visual Prolog 5.2.
Темы лекционных занятий по дисциплине:
- Тема 1.Введение в функциональное программирование (2 часа)
- Тема 2. Строго функциональный язык программирования (6 часов)
- Тема 3. Элементы структурного программирования(2 часа)
- Тема 4. Применение функциональных программ(4 часа) .
- Тема 5. Основные элементы языка (10 часов)
- Тема 6. Управление базами данных(8 часа)
- Тема 7. Применение логических программ(4 часа).
Банк контрольных вопросов по дисциплине:
ФУНКЦИОНАЛЬНОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ЛИСП
- Типы данных языка.
- Представление данных в памяти
- Выполнение Лисп-программы
- Селекторы и конструктор
- Элементарные предикаты
- Арифметические и логические встроенные функции
- Встроенные функции для работы со списками
- Функции, определенные пользователем
- Разработка рекурсивных функций
- Рекурсивные функции для работы с числами
- Элементы структурного программирования : функции Set, Setq, Progn
- Встроенные функции, модифицирующие списки
- Встроенные функции для работы с атомами
- Ассоциативные списки
- Функции высших порядков
- Ввод-вывод в Лиспе
- Применение Лиспа для работы с графами
ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ
- Факты и вопросы
- Правила
- Рекурсивное определение правил
- Типы данных языка
- Операции и встроенные предикаты для работы с термами
- Операторы
- Арифметические операторы и операторы сравнения
- Списки
- Рекурсивные процедуры обработки списков
- Отсечение и отрицание
- Ввод - вывод в Прологе
- Предикаты управления базой данных
- Структуризация данных и их обработка
- Применение ПРОЛОГа для обработки графов







