Материалы по детерминированности функций
От: VVP Россия 67524421
Дата: 03.06.11 09:13
Оценка:
Вопрос возник из лени.
Может кто-нибудь подкинуть ссылки, желательно на русскоязычные ресурсы, где объясняются плюсы детерминированности функций проверки значений или проведения вычислений над параметрами, и объясняются минусы изменения параметров таких функций или внешнего окружения?
Грубо говоря, объясняющие, почему bool IsCorrect(CObject obj, CRef value), не должен менять внутреннее состояния obj.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re: Материалы по детерминированности функций
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 03.06.11 09:31
Оценка: +1
Здравствуйте, VVP, Вы писали:

VVP>Вопрос возник из лени.

VVP>Может кто-нибудь подкинуть ссылки, желательно на русскоязычные ресурсы, где объясняются плюсы детерминированности функций проверки значений или проведения вычислений над параметрами, и объясняются минусы изменения параметров таких функций или внешнего окружения?

Детерминированность — зависимость функции ТОЛЬКО от параметров. То есть при одинаковых параметрах функция всегда возвращает одинаковое значение. Это позволяет производить некоторые оптимизации, заменять вычисления на таблицы, кешировать (мемоизировать) результаты.

VVP>Грубо говоря, объясняющие, почему bool IsCorrect(CObject obj, CRef value), не должен менять внутреннее состояния obj.

Тут мы уже касаемся "чистоты" (purity). Чистота функции означает что она не изменяет никакое состояние. Это позволяет переупорядочивать вычисления, распараллеливать их.

Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее.
Re[2]: Материалы по детерминированности функций
От: VVP Россия 67524421
Дата: 03.06.11 11:37
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Детерминированность — зависимость функции ТОЛЬКО от параметров. То есть при одинаковых параметрах функция всегда возвращает одинаковое значение. Это позволяет производить некоторые оптимизации, заменять вычисления на таблицы, кешировать (мемоизировать) результаты.

G>Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее.
Гхм, как бы помягче сказать...
За приведенные высказывания, конечно, спасибо. Но мне нужно немного другое, — ссылки на некие "авторитетные" объяснения-сравнения.
Я то все выгоды прекрасно понимаю, и вопрос собственно возник из необходимости в дискуссии сослаться на "непокобелимые" источники информации.
Нужен какой-нить классик-методолог, который бы подвел теоретическую базу.
Из серии, что допускание изменений входящих параметров в одной-другой-третьей функции проверки объектов, ведет к бардаку во всем программном коде. Ну и почему ведет.
Никогда не бойся браться делать то, что делать не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник...
Re[3]: Материалы по детерминированности функций
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 03.06.11 12:32
Оценка:
Здравствуйте, VVP, Вы писали:

VVP>Здравствуйте, gandjustas, Вы писали:


G>>Детерминированность — зависимость функции ТОЛЬКО от параметров. То есть при одинаковых параметрах функция всегда возвращает одинаковое значение. Это позволяет производить некоторые оптимизации, заменять вычисления на таблицы, кешировать (мемоизировать) результаты.

G>>Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее.
VVP>Гхм, как бы помягче сказать...
VVP>За приведенные высказывания, конечно, спасибо. Но мне нужно немного другое, — ссылки на некие "авторитетные" объяснения-сравнения.
А логика — не авторитет?

VVP>Я то все выгоды прекрасно понимаю, и вопрос собственно возник из необходимости в дискуссии сослаться на "непокобелимые" источники информации.

VVP>Нужен какой-нить классик-методолог, который бы подвел теоретическую базу.
Ссылайся на Мейера, Грэма и SPJ, один хрен никто не полезет проверять.

VVP>Из серии, что допускание изменений входящих параметров в одной-другой-третьей функции проверки объектов, ведет к бардаку во всем программном коде. Ну и почему ведет.


Вообще в Framework Design Guidelines было про изменения входных параметров.
Re[3]: Материалы по детерминированности функций
От: FR  
Дата: 04.06.11 07:36
Оценка: 6 (1)
Здравствуйте, VVP, Вы писали:

VVP>За приведенные высказывания, конечно, спасибо. Но мне нужно немного другое, — ссылки на некие "авторитетные" объяснения-сравнения.

VVP>Я то все выгоды прекрасно понимаю, и вопрос собственно возник из необходимости в дискуссии сослаться на "непокобелимые" источники информации.
VVP>Нужен какой-нить классик-методолог, который бы подвел теоретическую базу.

На этой теоретической базе основано функциональное программирование.
Достаточно классическая книга с базовой теорией А.Филд, П.Харрисон. Функциональное программирование
Боле кратко и просто Введение в функциональное программирование John Harrison
Re[2]: Материалы по детерминированности функций
От: FR  
Дата: 04.06.11 07:41
Оценка: 2 (1)
Здравствуйте, gandjustas, Вы писали:

G>Два свойства совместно открывают большой простор для оптимизации программ. Возможность параллелить вычисления и кешировать результаты уже может сделать программу в разы-десятки раз быстрее.


По этой теме есть неплохая презентация от авторов D http://www.digitalmars.com/d/2.0/accu-functional.pdf
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.