П. Ю. Шалимов - Функциональное программирование на языках Лисп, Эрланг
Название: | Функциональное программирование на языках Лисп, Эрланг | |
Автор: | П. Ю. Шалимов | |
Жанр: | Учебники и пособия ВУЗов, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Программирование: прочее, Lisp, Scheme | |
Изадано в серии: | неизвестно | |
Издательство: | БГТУ | |
Год издания: | 2010 | |
ISBN: | 5-89838-224-0 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Функциональное программирование на языках Лисп, Эрланг"
Рассмотрены теоретические и практические положения, а также принципиальные вопросы функционального программирования: управление памятью, типизация, виды вычислений, управление в функциональной программе, определение функций и организация повторяющихся вычислений. Дано системное представление об основах высокоуровневого программирования на примере одного из самых популярных его стилей — функционального программирования.
Учебное пособие предназначено для студентов всех формы обучения специальностей 010503 «Математическое обеспечение и администрирование информационных систем», 230105 «Программное обеспечение вычислительной техники и автоматизированных систем», а также может быть полезно для лиц, самостоятельно изучающих функциональное программирование.
Ил. 3. Библиогр. — 24 назв.
Читаем онлайн "Функциональное программирование на языках Лисп, Эрланг". [Страница - 4]
составления программ, в которых единственным действием является
10
вызов функции, единственным способом расчленения программы на
части является введение имени для функции, а единственным
правилом композиции − оператор суперпозиции функции. Никаких
ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более,
блок-схем, ни передачи управления». Основной конструкцией в
функциональных языках является символьное выражение (Sвыражение).
К S-выражениям относятся скалярные константы,
структурированные
объекты, функции, тела функций и вызовы функций.
Функция рассматривается как однозначное отображение из
области определения функции в область значений функции, что
полностью соответствует математическому определению функции.
Функциональный язык программирования включает следующие
элементы:
классы констант, которыми могут манипулировать функции;
набор базовых (определенных в данной системе) функций,
называемых примитивами;
правила построения новых функций на основе примитивов;
правила формирования выражений на основе вызовов функций.
Программа представляет собой совокупность описаний функций
и выражений, которые необходимо вычислить. Заданное в программе
выражение вычисляется посредством редукции − серии упрощений
(параграф 9.1.2) − по следующим правилам:
вызовы функций-примитивов заменяются соответствующими
значениями;
вызовы определенных программистом функций заменяются их
телами, в которых параметры замещены аргументами.
В функциональном программировании не используется
концепция «память как хранилище значений переменных»,
характерная для фон-неймановской вычислительной архитектуры
(п.1.1.). Операторы присваивания отсутствуют, вследствие чего
переменные обозначают не области памяти, а объекты программы.
Это полностью соответствует понятию переменной в математике. В
функциональном программировании отсутствуют существенные
различия между константами и функциями, т. е. между данными и
программами. В результате этого функция может быть значением
вызова другой функции, а также элементом структурированного
объекта. Число аргументов при вызове функции не обязательно
должно совпадать с числом параметров, указанных при ее описании.
11
Таким образом, функциональные языки можно определить как языки
сверхвысокого уровня по отношению к языкам высокого уровня.
Логическое программирование основывается на понятии
отношения (реляция), поэтому существует другое название
логического программирования – реляционное программирование.
Программа логического программирования представляет собой
совокупность определений отношений между объектами и цели.
Процесс
выполнения
логической
программы
рассматривается как процесс установления общезначимости
логической формулы, построенной по правилам, установленным
семантикой используемого языка. Результат вычисления
является побочным продуктом этого процесса.
В логическом программировании необходимо только
специфицировать факты, описывающие задачу, а не определять
последовательность шагов, которые требуется выполнить. Это
означает
декларативный
характер
языков
логического
программирования, которые отличаются:
высоким уровнем;
строгой ориентацией на символьные вычисления;
возможностью инверсных вычислений, при которых переменные в
процедурах не делятся явно на входные и выходные.
Логическое
программирование
не
эффективно
с
вычислительной точки зрения. Программы на языке логического
программирования имеют небольшое быстродействие, так как
вычисления осуществляются методом проб и ошибок, поиском с
возвратами к предыдущим шагам.
Несмотря
на
это,
логическое
программирование
предпочтительно именно с точки зрения приближения к
декларативной парадигме программирования. Наиболее эффективно
логическое программирование при решении неформальных задач,
задач, алгоритм решения которых неизвестен или получение
алгоритма сопряжено с большими затратами рабочего времени
высококвалифицированного специалиста. В этом случае описание
задачи в терминах того, что необходимо получить, приводит к цели с
наименьшими затратами рабочего времени. Наибольшее число
описанных задач относится к задачам --">