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
Respuesta
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.
¡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
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.
Solo para los registros, también puede considerar gstreamermm, que es un contenedor de C++ alrededor de gstreamer.
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.
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. –
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
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. –
Mire Intel Threading Building Blocks, en particular su tbb::flow
namespace.
datos Quizás puro (PD) tiene una API C++ ...
Visual Studio Concurrency Runtime contiene un marco de flujo de datos asincrónico en C++.
Un ejemplo de flujo de datos de procesamiento de imágenes: http://msdn.microsoft.com/en-us/library/ff398050.aspx
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.
- 1. Patrones de diseño vs Marcos
- 2. API de programación de flujo de datos para Java?
- 3. Motores y marcos de minería de datos?
- 4. Diagramas de flujo de programación funcional
- 5. Crear diagrama de flujo mediante programación
- 6. Mercurial y NTFS Flujo de datos alternativo
- 7. Aplicar sobre dos marcos de datos
- 8. Patrones de diseño para la programación simultánea?
- 9. ¿Hay marcos de almacenamiento de datos?
- 10. Patrones de base de datos
- 11. Flujo de control de SSIS frente al flujo de datos
- 12. ¿Hay marcos Silverlight útiles?
- 13. RESTful estructura de datos patrones
- 14. Pegar columnas de dos marcos de datos
- 15. ¿Hay alguna manera de generar automáticamente diagramas de flujo de datos y diagramas de flujo?
- 16. Agregar dos marcos de datos de pandas
- 17. Marcos de enlace de datos Swing
- 18. Computación de flujo de datos en python
- 19. Cifrados de bloque y cifrado de flujo
- 20. Combinar dos marcos de datos y eliminar columnas duplicadas
- 21. Creación de marcos de datos grandes
- 22. Patrones de diseño de validación de datos
- 23. ¿Cómo comparar dos marcos de datos?
- 24. Fusionar marcos de datos sin duplicar filas
- 25. necesidad de datos de flujo de entrada
- 26. Extensiones de clase y marcos
- 27. Bibliotecas y marcos de Scala
- 28. Cancelar mediante programación un flujo de trabajo de SharePoint
- 29. Patrones de diseño de datos/bases de datos?
- 30. datos de retorno subconjunto de marcos de tiempo dentro de otros marcos de tiempo?
Tenga en cuenta que esta es una biblioteca propuesta, que aún no forma parte de Boost. –
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? –