Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Структурное программирование.

Читайте также:
  1. VII.Модульное программирование.
  2. Логическое программирование.
  3. Модульное программирование. Оформление модуля в ТП.
  4. Объектно-ориентированное программирование.
  5. Объектно-ориентированное программирование. Инкапсуляция. Наследование. Полиморфизм.
  6. Ситуационное программирование.
  7. Структурное деление в производственных организациях
  8. Структурное программирование
  9. ТЕМА 2.5. НЕЛИНЕЙНОЕ ПРОГРАММИРОВАНИЕ.

 

Сильные стороны

Привлекательная сторона вычислений без состояний — повышение надёжности кода за счет чёткой структуризации и отсутствия необходимости отслеживания побочных эффектов. Любая функция работает только с локальными данными и работает с ними всегда одинаково, независимо от того, где, как и при каких обстоятельствах она вызывается. Невозможность мутации данных при пользовании ими в разных местах программы исключает появление труднообнаруживаемых ошибок (таких, например, как случайное присваивание неверного значения глобальной переменной в императивной программе). Отсутствие состояний даёт возможность применять к функциональным программам достаточно сложные методы автоматической оптимизации, которые непригодны для программ с состояниями и побочными эффектами. Ещё одним преимуществом функциональных программ является то, что они предоставляют широчайшие возможности для автоматического распараллеливания вычислений. Поскольку отсутствие побочных эффектов гарантировано, в любом вызове функции всегда допустимо параллельное вычисление двух различных параметров — порядок их вычисления не может оказать влияния на результат вызова. Ещё одной, традиционно упоминаемой положительной особенностью функционального программирования является то, что оно позволяет описывать программу в декларативном стиле; программист может сосредоточиться на описании отношений, в которых результат вычислений находится с исходными данными. Последовательность операций, приводящая к вычислению результата, в явном виде не описывается, а получается автоматически.

Недостатки

Недостатки функционального программирования вытекают из тех же самых его особенностей. Отсутствие присваиваний и замена их на порождение новых данных приводят к необходимости постоянного выделения и автоматического освобождения памяти, поэтому в системе исполнения функциональной программы обязательным компонентом становится высокоэффективный сборщик мусора. Для эффективности сборки мусора необходимо отслеживать ссылки на данные, что также требует затрат времени и памяти. Отсутствие циклов для промышленных программ является очень серьёзным ограничением — далеко не все виды рекурсии могут быть автоматически преобразованы в цикл.

 

Для преодоления недостатков функциональных программ уже первые языки функционального программирования включали не только чисто функциональные средства, но и механизмы императивного программирования (присваивание, цикл, «неявный PROGN» были уже в LISPе). Использование таких средств позволяет решить некоторые практические проблемы, но это означает отход от идей (и преимуществ) функционального программирования и написание императивных программ на функциональных языках. Естественно, при этом теряется и декларативность функциональной программы — при описании функциональных зависимостей программист оказывается вынужден учитывать и задавать порядок исполнения программы.

 

 




Дата добавления: 2014-11-24; просмотров: 47 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав