Рерайт

Рерайт


Подход, основанный на понятии функции называется "функциональный" и был разработан в рамках декларативного программирования [Филд, 1993]. Данный тип программирования использует функции, как базовые примитивы, чтобы описать алгоритмы. Таким образом можно рассмотреть процессы вычисления, как последовательности вызова функций, которые могут выражаться через атомарные действия, вызовы других функций и организации рекурсивных вызовов [Guy, 1998].

Математическая функция – это чёрный ящик, обладающий кучей входов и выходов. Такой ящик нужен для того, чтобы реализовать некоторые вычисления, то есть преобразовать входные значения в выходные [Эшби, 1959]. У функций есть 2 важных качества – детерминированность и чистота [Душкин, 2008].

Что такое детерминированность? Всё просто. Это показатель того, что результат функциональных вычислений зависит от значений, которые существуют во входных параметрах. В свою очередь, чистота значит, что функция только возвращает значения, при этом никакие побочные эффекты не происходят. А значит, что свойства детерминированности и чистоты используют только ту память, которая выделена под их работу. При этом, они не применяют внешнюю память и ничего не записывают. Схема выглядит так:

Входные данные > Чёрный ящик > Выходные данные.

Эти особенности функций дают уникальную возможность для организации вычислений в виде цепи выполнения функций, когда одна функция, завершив вычисления, передает данные другой. Интересно то, что подобные цепи могут производить параллельные вычисления. Всё потому, что они никак не влияют на память друг-друга [Душкин, 2006]. Таким образом, решаются проблемы, которые обычно возникают с параллельными или конкурентными вычислениями, основанными на стандартной модели вычислений [Воеводин, 2002].

Другая важная особенность функционального подхода состоит в том, что функции могут рассматриваться с математической точки зрения, в которой существует огромное количество всевозможных методов, позволяющих анализировать функции [Колмогоров, 1972]. В рамках функционального подхода существует возможность, которая позволяет провести оптимизацию программного обеспечения на уровне исходного года. Помимо этого, можно производить анализ программ, которые описывают вычислительные процессы, состоящие из функций и их вызовов. Обычно, анализ производится на предмет корректности определений, оптимальности задействования ресурсов вычисления и возможность распараллеливания вычислений [O'Sullivan, 2008].

Таким образом уменьшается цена использования систем, которые реализованы в рамках функционального подхода. Почему? Да потому, что ошибки легко находятся и быстро исправляются. Также неисправные функции могут быть заменены на корректные [Душкин, 2008b].

Рассмотрение вопросов автоматизации технопроцессов раскрывает колоссальную роль устройств, специализирующихся на вводе и выводе. Устройства ввода – это различные датчики, а устройства вывода – исполнительные устройства, которые взаимодействуют со средой. Ввод информации из среды – недетерминированность, а вывод информации – побочный эффект. А значит, что применение устройств, которые взаимодействуют со средой во время технопроцесса – нарушение принципов функционального подхода [Lipovača, 2011].

Естественный метод описания технопроцессов – диаграммы потоков данных, на которых показаны элементы управления технопроцессов. Между ними по тем или иным регламентам осуществляется передача поток данных, материальных ресурсов или действий управления.

Главная проблема состоит в том, что устройства ввода – недетерминированы, а любые операции вывода побочный эффект. В функциональном подходе данную проблему решают посредством теоретико-категориального понятия монады, в которую помещается грязный код. Таким образом, монады помогают вернуть в системы ввода-вывода возможность использования функционального подхода со всеми его плюсами [Душкин, 2006].


Report Page