WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте
Стратегии вычисления
Строгие вычисления
Нестрогие вычисления
Недетерминированные стратегии
Другие

Ленивые вычисления (англ. lazy evaluation, также отложенные вычисления) — применяемая в некоторых языках программирования стратегия вычисления, согласно которой вычисления следует откладывать до тех пор, пока не понадобится их результат. Ленивые вычисления относятся к нестрогим вычислениям. Усовершенствованная модель ленивых вычислений — оптимистичные вычисления — переходит в разряд недетерминированных стратегий вычисления.

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

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

Некоторые языки программирования, реализующие ленивые вычисления:

  • Haskell — язык программирования, в котором наиболее полно реализованы отложенные вычисления, в частности, в языке нет оператора присваивания значения переменной, а только операцию определения функциональной зависимости; благодаря ленивым вычислениям в языке возможно оперирование бесконечными коллекциями. Строго говоря, Haskell — ленивый по умолчанию, он предоставляет как стандартные средства (seq, deepseq, строгое вычисление полей в алгебраических типах), так и языковые расширения (BangPatterns) для строгого вычисления.
  • Mathematica и Maxima допускают отложенные вычисления с помощью оператора определения «:=».
  • в Python, C#, Java 8 и ряде других языков ленивые вычисления реализованы с помощью функций-генераторов и ключевого слова yield.
  • в языке D имеется ключевое слово lazy.

Для использования ленивых вычислений не обязательна встроенная поддержка на стороне языка программирования, во многих случаях отложенные вычисления могут быть реализованы любыми доступными средствами. Например, в практике многих языков широко применяется шаблон проектирования «отложенная инициализация», предписывающий переносить выполнение ресурсоёмких операций по созданию объектов или получения значения непосредственно перед использованием. Для ряда языков созданы библиотеки, обеспечивающие работу с ленивыми вычислениями, например, для JavaScript таковы Streams.js, linq.js, Immutable.js и node-lazy.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии