Чистота языка программирования

Чистота́ (в отношении языка программирования) — отсутствие побочных эффектов. Язык программирования является чистым в том случае, если все функции в программах этого языка являются чистыми.

Программы, написанные на чистых языках программирования, проще отлаживать, верифицировать,

в них проще обнаруживать ошибки, которые не удалось обнаружить с помощью тестирования.

Программы на чистом языке программирования проще переписывать, избегая внесения ошибок.

В то же время, сам процесс планирования программы с расчётом на чистоту сложнее.

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

Чистые функциональные языки временами называют «детерминированными» в том смысле, что для всякой функции каждый вызов всегда даёт один и тот же эффект (в императивных языках это, вообще говоря, не верно). В то же время, такие языки называют «недетерминированными» в том смысле, что порядок действительного исполнения программы может сильно меняться в зависимости от конкретной реализации языка: алгоритмы могут неявно распараллеливаться, промежуточные данные могут исключаться из цепочки преобразований, представление одних и тех же типов может варьироваться даже в рамках одной программы, и т. д. (для императивных языков это попросту невозможно). Проще говоря, чистые языки детерминированы на уровне исходных кодов и недетерминированы на уровне реализации (императивные — наоборот).

Источник: Википедия

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я