Язык описания атрибутных грамматик

Страницы работы

87 страниц (Word-файл)

Фрагмент текста работы

имеет структуры в смысле операционной или денотационной семантики. Выполнение функции при одних и тех же параметрах всегда приводит к одному и тому же результату. Это явление называется про­зрачностью ссылок(referential transparency). Она делает семантику чисто функциональ­ных языков программирования намного более простой, чем семантика императивных язы­ков и функциональных языков, обладающих императивными свойствами.

Функциональный язык содержит набор элементарных функций, набор функциональ­ных форм для построения сложных функций из этих элементарных функций, операцию применения функции и некоторую структуру или структуры для представления данных. Эти структуры используются для представления параметров и значений, вычисленных функциями. Хорошо определенный язык функционального программирования нуждает­ся лишь в небольшом количестве элементарных функций.

Императивные языки обычно предусматривают лишь ограниченную поддержку функционального программирования. Не­достаток использования императивного языка для функционального программирования в том, что функции в императивных языках имеют ограничения, наложенные на типы значений, которые они возвращают. В таких языках, как FORTRAN и Pascal, функ­ции возвращают только переменные скалярного типа. Еще более важным является то, что они не могут возвращать функции. Такие ограничения сужают круг функциональных форм, поддерживаемых императивным языком. Другая серьезная проблема, относящаяся к функциям в императивных языках, заключается в том, что функции могут иметь по­бочные эффекты.

Применение функциональных языков

Язык APL широко использовался в различных приложениях — от описания аппарат­ного обеспечения до информационных систем управления предприятиями. Вследствие того, что читать программы, написанные на языке APL, обычно очень трудно, более ес­тественным было бы отнести его в категорию одноразового программирования. Благо­даря наличию в нем мощного набора операций для работы с массивами, он представляет собой отличное средство для получения быстрых, но "сырых" решений проблем, связан­ных с большим количеством манипуляций с массивами.

Язык LISP был разработан для символьных вычислений и приложений, связанных с обработкой списков, относящихся в основном к области созда­ния искусственного интеллекта. В приложениях, связанных с созданием искусственного интеллекта, язык LISP и производные от него языки программирования остаются стан­дартными языками.

Язык Scheme широко применяется для обучения функциональному программирова­нию. Он также используется в некоторых университетах в рамках вводных курсов по программированию. Функционирование языков ML и Haskell большей частью ограничи­вается исследовательскими лабораториями и университетами.

Сравнение функциональных и императивных языков

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

Похожие материалы

Информация о работе