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


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

Почти все широко используемые сегодня языки программирования являются строгими. Примеры включают C# , Java , Perl (все версии, то есть до версии 5 и версии 7), Python , [2] Ruby , Common Lisp и ML .

Некоторые строгие языки программирования включают функции, имитирующие лень. В Raku, ранее известном как Perl 6, есть ленивые списки. [3] В Python есть функции генератора. [4] Julia предоставляет систему макросов для построения нестрогих функций, [5] как и Scheme .

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

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

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