LINUX.ORG.RU

История изменений

Исправление praseodim, (текущая версия) :

Ты не отличаешь функцию с возвращаемым значением, которая втыкается в математическое выражение от процедуры, вызов которой является отдельным оператором?

Функция - это процедура с возвращаемым справа значением. Процедура - это функция без значения, которое можно присвоить. И функция и процедура могут возвращать значения (или ссылки на значения) в своих операндах.

Оператор - это тоже функция или процедура с особым синтаксисом. Есть языки ( C++) где их можно определять.

Вот и все на практике. Но Столяров и ты за ним развели целую философию вокруг.

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

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

Исходная версия praseodim, :

Ты не отличаешь функцию с возвращаемым значением, которая втыкается в математическое выражение от процедуры, вызов которой является отдельным оператором?

Функция - это процедура с возвращаемым справа значением. Процедура - это функция без значения, которое можно присвоить. И функция и процедура могут возвращать значения (или ссылки на значения) в своих операндах.

Оператор - это тоже функция или процедура с особым синтаксисом. Есть языки ( C++) где их можно определять.

Вот и все на практике. Но Столяров и ты за ним развели целую философию вокруг.