Парадигма: нестрогая
Нестрогий язык программирования позволяет пользователю определять нестрогие функции и, как следствие, использовать ленивые вычисления.
В большинстве нестрогих языков «нестрогость» также применяется к конструкторам данных. Это позволяет управлять бесконечными структурами данных (к примеру, списком всех простых чисел) точно так же, как и обычными конечным. Это облегчает использование очень больших, но конечных структур, к примеру таких, как полное дерево игры в шахматы.
Нестрогость имеет некоторые недостатки, которые помешали её повсеместному использованию: * из-за неопределённости касательно того, будут ли и когда будут вычислены выражения, нестрогие языки должны быть чисто функциональными для удобного использования; большинство распостранённых архитектур оптимизированы для строгих языков, т. о. лучшие компиляторы для нестрогих языков обычно производят код хуже, чем лучше компиляторы строгих; пространственную сложность (space complexity) нестрогих программ сложно понять или предсказать.
Термины «энергичные языки программирования» (eager) и «ленивые языки программирования» (lazy) часто используются как синонимы «строгие языки программирования» и «нестрогие языки программирования» соответственно.
Во многих строгих языках некоторые положительные стороны нестрогих функций могут быть достигнуты с помощью макросов.