имеет структуры в смысле операционной или денотационной семантики. Выполнение функции при одних и тех же параметрах всегда приводит к одному и тому же результату. Это явление называется прозрачностью ссылок(referential transparency). Она делает семантику чисто функциональных языков программирования намного более простой, чем семантика императивных языков и функциональных языков, обладающих императивными свойствами.
Функциональный язык содержит набор элементарных функций, набор функциональных форм для построения сложных функций из этих элементарных функций, операцию применения функции и некоторую структуру или структуры для представления данных. Эти структуры используются для представления параметров и значений, вычисленных функциями. Хорошо определенный язык функционального программирования нуждается лишь в небольшом количестве элементарных функций.
Императивные языки обычно предусматривают лишь ограниченную поддержку функционального программирования. Недостаток использования императивного языка для функционального программирования в том, что функции в императивных языках имеют ограничения, наложенные на типы значений, которые они возвращают. В таких языках, как FORTRAN и Pascal, функции возвращают только переменные скалярного типа. Еще более важным является то, что они не могут возвращать функции. Такие ограничения сужают круг функциональных форм, поддерживаемых императивным языком. Другая серьезная проблема, относящаяся к функциям в императивных языках, заключается в том, что функции могут иметь побочные эффекты.
Применение функциональных языков
Язык APL широко использовался в различных приложениях — от описания аппаратного обеспечения до информационных систем управления предприятиями. Вследствие того, что читать программы, написанные на языке APL, обычно очень трудно, более естественным было бы отнести его в категорию одноразового программирования. Благодаря наличию в нем мощного набора операций для работы с массивами, он представляет собой отличное средство для получения быстрых, но "сырых" решений проблем, связанных с большим количеством манипуляций с массивами.
Язык LISP был разработан для символьных вычислений и приложений, связанных с обработкой списков, относящихся в основном к области создания искусственного интеллекта. В приложениях, связанных с созданием искусственного интеллекта, язык LISP и производные от него языки программирования остаются стандартными языками.
Язык Scheme широко применяется для обучения функциональному программированию. Он также используется в некоторых университетах в рамках вводных курсов по программированию. Функционирование языков ML и Haskell большей частью ограничивается исследовательскими лабораториями и университетами.
Сравнение функциональных и императивных языков
Поскольку императивные языки основаны непосредственно на неймановской архитектуре компьютеров, программисты, используя их, должны иметь дело с управлением переменными и присваиванием значений этим переменным. В результате возрастает эффективность выполнения программ, но затрудняется их создание. В функциональном языке программисту не нужно связываться с переменными, поскольку в нем не требуется абстрактно представлять ячейки памяти. Одним из результатов такого подхода является снижение эффективности
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.