пятница, 23 сентября 2011 г.

Заметки "Управление потоками данных"

Заметки представленные ниже все лишь мой свободный перевод, а правильнее сказать мое понимание концепций первой части статьи на Wikipedia “Flow-based programming”. Перевод далек от оригинала, текст был специально изменен. Задача была не сколько перевести, сколько понять принципы.

Введение

Программирование основанное на управлении потоков представляется собой парадигму, которая определяет приложения как сеть из “черных ящиков”-процессов, которые обмениваются данными (сообщениями) через предопределенные соединения. По отношению к процессам, соединения являются внешними и не зависят от внутренней реализации процессов. Основная идея заключается в многократном использовании процессов и соединений между ними без изменения внутренней логики процесса.

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

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

Процессы обмениваются данными на основании предопределенного количества соединений. Именованные порты процессов используются при определении соединений. Имя порту назначается при формировании сети. Порты могут быть простыми, предназначенные для передачи однотипных значений или сложными, предназначенные для обмена структур данных: массивов, словарей. Блоки данных упаковывается в информационные пакеты. Информационный пакет может быть адресован как самому процессу так и быть транзитным, предназначенным другому процессу. Функции сортировки, объединения, агрегации данных, … могут быть представлены в виде “черных” ящиков - комбинации портов с асинхронными процессами.

Более чем один процесс может выполнять один и тот де код.

Асинхронная природа процессов позволяет обрабатывать данные и возвращать результат до тех пор, пока поступают данные на вход процесса. Это позволяет эффективно использовать ресурсы процессора(-ов).

Определение взаимодействия процессов или построение сети обычно выполняется на основе диаграмм, которые в дальнейшем могут быть преобразованы в код приложения. Подход визуального программирования позволяет строить более сложные сети с иерархической структурой, объединяя подсети c помощью соединений, аналогичных соединениям для процессов. Фактически без программирования можно реализовывать сложные алгоритмы обработки данных.

Презентация фреймворка PyF в основе которого лежит поточное программирование (к сожалению качество видео оставляет желать лучшего)



Ссылки
Flow-based programming, 2nd edition ebook
http://en.wikipedia.org/wiki/Flow-based_programming
http://en.wikipedia.org/wiki/Dataflow_programming
http://wiki.python.org/moin/FlowBasedProgramming
http://en.wikipedia.org/wiki/Distributed_data_flow

0 комментариев:

Отправить комментарий