Вопрос возник из лени.
Может кто-нибудь подкинуть ссылки, желательно на русскоязычные ресурсы, где объясняются плюсы детерминированности функций проверки значений или проведения вычислений над параметрами, и объясняются минусы изменения параметров таких функций или внешнего окружения?
Грубо говоря, объясняющие, почему bool IsCorrect(CObject obj, CRef value), не должен менять внутреннее состояния obj.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Здравствуйте, VVP, Вы писали:
VVP>Вопрос возник из лени. VVP>Может кто-нибудь подкинуть ссылки, желательно на русскоязычные ресурсы, где объясняются плюсы детерминированности функций проверки значений или проведения вычислений над параметрами, и объясняются минусы изменения параметров таких функций или внешнего окружения?
Детерминированность — зависимость функции ТОЛЬКО от параметров. То есть при одинаковых параметрах функция всегда возвращает одинаковое значение. Это позволяет производить некоторые оптимизации, заменять вычисления на таблицы, кешировать (мемоизировать) результаты.
VVP>Грубо говоря, объясняющие, почему bool IsCorrect(CObject obj, CRef value), не должен менять внутреннее состояния obj.
Тут мы уже касаемся "чистоты" (purity). Чистота функции означает что она не изменяет никакое состояние. Это позволяет переупорядочивать вычисления, распараллеливать их.
Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее.
Здравствуйте, gandjustas, Вы писали:
G>Детерминированность — зависимость функции ТОЛЬКО от параметров. То есть при одинаковых параметрах функция всегда возвращает одинаковое значение. Это позволяет производить некоторые оптимизации, заменять вычисления на таблицы, кешировать (мемоизировать) результаты. G>Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее.
Гхм, как бы помягче сказать...
За приведенные высказывания, конечно, спасибо. Но мне нужно немного другое, — ссылки на некие "авторитетные" объяснения-сравнения.
Я то все выгоды прекрасно понимаю, и вопрос собственно возник из необходимости в дискуссии сослаться на "непокобелимые" источники информации.
Нужен какой-нить классик-методолог, который бы подвел теоретическую базу.
Из серии, что допускание изменений входящих параметров в одной-другой-третьей функции проверки объектов, ведет к бардаку во всем программном коде. Ну и почему ведет.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Здравствуйте, VVP, Вы писали:
VVP>Здравствуйте, gandjustas, Вы писали:
G>>Детерминированность — зависимость функции ТОЛЬКО от параметров. То есть при одинаковых параметрах функция всегда возвращает одинаковое значение. Это позволяет производить некоторые оптимизации, заменять вычисления на таблицы, кешировать (мемоизировать) результаты. G>>Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее. VVP>Гхм, как бы помягче сказать... VVP>За приведенные высказывания, конечно, спасибо. Но мне нужно немного другое, — ссылки на некие "авторитетные" объяснения-сравнения.
А логика — не авторитет?
VVP>Я то все выгоды прекрасно понимаю, и вопрос собственно возник из необходимости в дискуссии сослаться на "непокобелимые" источники информации. VVP>Нужен какой-нить классик-методолог, который бы подвел теоретическую базу.
Ссылайся на Мейера, Грэма и SPJ, один хрен никто не полезет проверять.
VVP>Из серии, что допускание изменений входящих параметров в одной-другой-третьей функции проверки объектов, ведет к бардаку во всем программном коде. Ну и почему ведет.
Вообще в Framework Design Guidelines было про изменения входных параметров.
Здравствуйте, VVP, Вы писали:
VVP>За приведенные высказывания, конечно, спасибо. Но мне нужно немного другое, — ссылки на некие "авторитетные" объяснения-сравнения. VVP>Я то все выгоды прекрасно понимаю, и вопрос собственно возник из необходимости в дискуссии сослаться на "непокобелимые" источники информации. VVP>Нужен какой-нить классик-методолог, который бы подвел теоретическую базу.
Здравствуйте, gandjustas, Вы писали:
G>Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее.