Тц. Как говорится, есть у нас математические функции. Они ничего не знают о мире, они детерминированы – зависят только от своих аргументов, и единственное, что они делают, это их возврат. Это чистые функции. Но в языках программирования, императивных языках, функции не забывают о мире. Есть глобальные переменные, есть файлы, ввод/вывод... И функция может помимо вычисления своего основного значения ещё убить собаку