2008-09-16 11 views
15

Acabo de encontrar la biblioteca propuesta Boost::Dataflow. Parece un enfoque interesante y me preguntaba si existen otros marcos alternativos para C++, y si hay algún patrón de diseño relacionado. No he descartado Boost :: Dataflow, solo estoy buscando alternativas disponibles para que pueda entender mejor el dominio y mis opciones (o rodar las mías si es necesario).Programación de flujo de datos - Patrones y marcos

+1

Tenga en cuenta que esta es una biblioteca propuesta, que aún no forma parte de Boost. –

+0

C++: mónadas basadas en plantilla. Copió el concepto de los lenguajes basados ​​en FP e incluso utilizó la notación similar a Haskell. Sin embargo, parecen haber evitado el nombre "mónada". Alguien sabe si esto es intencional? –

Respuesta

2

si desea este diseño para el procesamiento de imágenes o la visualización, puede encontrar un buen recurso en itk. Y si quiere una guía para este flujo (de datos/trabajo) puede usar devide. Mis 2cents, Johan

5

Wikipedia

Hay un par de buenos artículos en la Wikipedia acerca de la teoría de la programación de flujo de datos:

Estos artículos son escritos por varios autores, por lo que hay algunas coincidencias, y algunas cosas importantes que faltan, pero es un muy buen punto de partida.

TinyOS

Este es un sistema operativo de código abierto basado en el principio de flujo de datos. Tengo malos sentimientos al respecto: ni siquiera mencionan el término "flujo de datos". Sin embargo, es eso, y tal vez es worth studying it.

+0

¡Gracias por la edición! Ahora hay un libro prometedor, que se enviará en algunos meses: http://dataflowbook.com/ El video promocional también es una muy buena introducción al tema. – ern0

0

Si su área es la generación/procesamiento de sonido, utilice http://www.synthedit.com/

parece prometedor, he encontrado una buena respuesta para un problema profundo en la documentación del SDK (polifonía). Es curioso, pero no mencionan la palabra dataflow.

0

Dataflow programming es una de esas cosas que ha estado al acecho durante décadas y que nunca se ha quitado ... para el software de todos modos; en el mundo VHDL/Verilog, usted se encuentra naturalmente adoptando la mentalidad de flujo de datos mucho más fácilmente. Pero en el mundo del software ... de alguna manera parece que nunca se escala más allá de los sistemas de juguetes, tal vez porque la gente insiste en vincularlo con la programación visual (y veo boost dataflow also treads this path). Algunas personas recurren a la programación de flujo de datos para resolver la crisis del software al hacer que se parezca más al diseño HW con componentes conectables con pines interconectables ... pero esperen, ¡el diseño HW es muy difícil también! (Curiosamente, mientras que en el mundo HW los sistemas de programación visual hacen exist, nadie en realidad los usa para construir algo grande).

El ejemplo moderno activo más interesante que conozco al usar los principios del flujo de datos es el entorno de programación audiovisual PureData.

+2

La programación de Dataflow ha tenido un gran éxito con Labview de National Instruments (http://www.ni.com/labview/). Apenas llamaría a Labview un "sistema de juguetes". ;-P Me sorprende que nadie lo haya mencionado. –

+0

Olvidé LabVIEW; gracias, sí, es un buen ejemplo. Veo que está registrado por TIOBE, aunque solo en algún lugar del # 51-100 sin clasificar. Tengo curiosidad por saber cuáles son los sistemas más complejos que se han construido con él. – timday

+1

Sé por experiencia que es doloroso en Labview programar un comportamiento algorítmico complejo. OMI, se usa mejor para los problemas que les prestan bien al paradigma del flujo de datos. Es genial para los que no son programadores (científicos, ingenieros) implementar rápidamente el procesamiento, la visualización y el control de señales para experimentos, prototipos y bancos de pruebas. Desafortunadamente, el paradigma de programación visual dificulta que muchas personas trabajen en paralelo utilizando las herramientas de control de versiones de software existentes. –

3

También puede mirar los dos principales robótica marcos de código abierto, y ROSOrocos. También está Rock, pero está basado en Orocos, por lo que es equivalente si solo está buscando un marco de componentes C++.

1

Hay algunas bibliotecas de flujo de datos en C++ que he encontrado:

  • cellspp - permite utilizar una hoja de cálculo modelo de evaluación.
  • DSPatch y Route11 - marcos de flujo de datos C++. Permite escribir programas en forma de flujo de datos. Parece interesante.
1

Es posible comprobar mi aplicación de flujo de datos aquí: http://ambient.comp-phys.org

Es compatible con MPI y roscado y se basa en los tipos de flujo de datos personalizados (es decir ambiental :: vector) que funcionan a través del sistema de control de versiones de objetos en tiempo de ejecución.