stringtranslate.com

Строгий язык программирования

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

Описание

Строгий язык программирования — это язык программирования , который использует строгую парадигму программирования , позволяя пользователю определять только строгие функции (функции, параметры которых должны быть полностью оценены, прежде чем они могут быть вызваны). Нестрогий язык программирования позволяет пользователю определять нестрогие функции и, следовательно, может допускать ленивую оценку . [1]

Нестрогость имеет ряд недостатков, которые помешали ее широкому распространению: [ необходима ссылка ]

Строгие языки программирования часто ассоциируются с энергичной оценкой , а нестрогие языки — с ленивой оценкой , но в каждом случае возможны и другие стратегии оценки . [ требуется ссылка ] Термины «энергичный язык программирования» и «ленивый язык программирования» часто используются как синонимы для «строгого языка программирования» и «нестрогого языка программирования» соответственно. [ требуется ссылка ]

Примеры

Почти все языки программирования , которые сегодня широко используются, являются строгими. [ требуется ссылка ] Примерами служат C# , Java , Perl (все версии, т. е. до версии 5 и версии 7), Python , [2] Ruby , Common Lisp и ML . Некоторые строгие языки программирования включают функции, имитирующие ленивость. [ требуется пояснение ] Raku (ранее известный как Perl 6) имеет ленивые списки, [3] Python имеет функции-генераторы, [4] а Julia предоставляет систему макросов для создания нестрогих функций, [5] как и Scheme .

Примерами нестрогих языков являются Haskell , R , Miranda и Clean . [6]

Расширение

В большинстве нестрогих языков нестрогость распространяется на конструкторы данных . Это позволяет манипулировать концептуально бесконечными структурами данных (такими как список всех простых чисел ) так же, как и обычными конечными структурами данных. Это также позволяет использовать очень большие, но конечные структуры данных, такие как полное игровое дерево шахмат .

Цитаты

  1. ^ Скотт 2006, стр. 541.
  2. ^ Лотт, Стивен (2015). Функциональное программирование на Python . Бирмингем, Великобритания: Packt Publishing. стр. 35. ISBN 978-1-78439-699-2. Python фокусируется на строгой оценке
  3. ^ "Raku Programming/Lazy Lists and Feeds - Wikibooks, открытые книги для открытого мира". en.wikibooks.org . Получено 2021-02-09 .
  4. ^ Лотт, Стивен (2015). Функциональное программирование на Python . Бирмингем, Великобритания: Packt Publishing. стр. 35. ISBN 978-1-78439-699-2. функция генератора не является строгой. [...] мы можем использовать функции генератора для создания ленивых вычислений.
  5. ^ Иннес, Майк Дж. (2021-02-06), MikeInnes/Lazy.jl , получено 2021-02-09
  6. Клюэт и Халл, 1998, стр. 25–26.

Ссылки