www videos u3cgmyjzlvm tutoriales sobre quƩ flujo explicativo diagrama algoritmos algoritmo dataflow

dataflow - u3cgmyjzlvm - videos algoritmo



Lenguajes de programaciĆ³n de flujo de datos (10)

¿Qué es un lenguaje de programación de flujo de datos? ¿Por qué usarlo? y hay algún beneficio para esto?


En realidad, es un concepto bastante antiguo: en la década de los 70, incluso se creó una máquina de lenguaje + para una programación y ejecución de flujo de datos eficiente (-> máquina de flujo de datos manchester).

Lo bueno de esto es su dualidad con los lenguajes funcionales perezosos como Haskell. Por lo tanto, si sus pasos de procesamiento son completamente funcionales, y dado que tiene suficientes unidades de procesamiento para evaluarlos y transmitir los resultados, obtendrá la máxima paralela de forma gratuita, ¡automáticamente y sin ningún esfuerzo de programación!


En un lenguaje de flujo de control, tiene una secuencia de instrucciones que operan con datos externos. Las llamadas de ejecución, saltos y procedimientos condicionales cambian la secuencia de instrucciones que se ejecutará. Esto podría verse como instrucciones que fluyen a través de datos (por ejemplo, las instrucciones operan en registros que están cargados con datos por instrucciones; los datos son estáticos a menos que la secuencia de instrucciones los mueva). Una instrucción de flujo de control "si" salta a la bifurcación correcta en la secuencia de instrucciones, pero los datos no se mueven.

En un lenguaje de flujo de datos, tiene una secuencia de datos que se pasa de instrucción a instrucción para ser procesada. Las llamadas de ejecución, saltos y procedimientos condicionales dirigen los datos a diferentes instrucciones. Esto podría verse como datos que fluyen a través de instrucciones estáticas, por ejemplo, cómo las señales eléctricas fluyen a través de los circuitos o el agua fluye a través de las tuberías. Una instrucción "if" de flujo de datos encaminaría los datos a la rama correcta.

Algunos ejemplos de características e idiomas de flujo de datos:

Lenguajes textuales

Lenguajes visuales

Productos que incorporan un lenguaje visual de flujo de datos:


Excel (y otras hojas de cálculo) son esencialmente lenguajes de flujo de datos. Los lenguajes de flujo de datos se parecen mucho a los lenguajes de programación funcionales, excepto que los valores en las hojas de todo el gráfico del programa no son valores en absoluto, sino variables (o flujos de valores), de modo que cuando cambian, los cambios fluctúan y fluyen por el gráfico .


Hay ciertos dominios donde la programación del flujo de datos tiene mucho más sentido. Los medios en tiempo real son un ejemplo, y dos entornos de programación de flujos de datos gráficos ampliamente utilizados, Pure Data y Max / MSP, están enfocados en la programación de medios en tiempo real. Supongo que su naturaleza visual también se adapta muy bien a la programación del flujo de datos.


Muchas herramientas de ETL también están en este ámbito. Las tareas de flujo de datos en MS SSIS son un buen ejemplo. Herramienta gráfica en este caso.


Puedes probar Cameleon : www.shinoe.org/cameleon que parece ser fácil de usar. Es un lenguaje gráfico para programación funcional que tiene un enfoque de flujo de datos (trabajo).

Está escrito en C ++ pero puede llamar a cualquier tipo de programa local o distante escrito en cualquier lenguaje de programación.

Tiene un enfoque de escala múltiple y parece estar completo (esta es una extensión de red de Petri).



Mozart tiene soporte para la sincronización tipo flujo de datos, y tiene algunas aplicaciones comerciales. También podría argumentar que make es un lenguaje de programación de flujo de datos


Los lenguajes de programación de Dataflow proponen aislar algunos comportamientos locales en los llamados " actores ", que se supone que se ejecutan en paralelo e intercambian datos a través de canales punto a punto. No existe una noción de memoria central (tanto para el código como para los datos) a diferencia del modelo de computadoras de Von Neumann.

Estos actores consumen tokens de datos en sus entradas y producen nuevos datos en sus productos.

Esta definición no impone los medios para ejecutar esto en la práctica. Sin embargo, la producción / consumo de datos debe analizarse con cuidado: por ejemplo, si un actor B no consume a la misma velocidad que el actor A que produce los datos, entonces se requiere una memoria potencialmente ilimitada (fifo) entre ellos . Muchos otros problemas pueden surgir como deadlocks .

En muchos casos, este análisis fracasará porque la intercalación de los comportamientos internos es intratable (fuera del alcance de los métodos formales actuales).

A pesar de esto, los lenguajes de programación de flujo de datos siguen siendo atractivos en muchos dominios :

  • por ejemplo, para definir modelos de referencia para la codificación de video: un programa C puro no hará el trabajo porque supone que todo se ejecuta como una secuencia de operaciones, lo que no es cierto en las computadoras (tuberías, VLIW, mutlicores, VLSI). Tal vez puedas echar un vistazo a esto: tesis doctoral reciente . El lenguaje de flujo de datos CAL se propone como un lenguaje unificador para la referencia de codificadores / decodificadores de video de la próxima generación.
  • Misión crítica donde se requiere seguridad: si agrega algunas suposiciones fuertes sobre la producción / consumo de datos, entonces obtiene un lenguaje con un gran potencial en términos de generación de código, pruebas, etc. (consulte los idiomas sincrónicos )

Los lenguajes de programación de Dataflow son aquellos que se enfocan en el estado del programa y hacen que las operaciones ocurran de acuerdo con cualquier cambio en el estado. Los lenguajes de programación de Dataflow son intrínsecamente paralelos, porque las operaciones se basan en entradas que, cuando se cumplen, hacen que la operación se ejecute. Esto significa que a diferencia de un programa normal donde una operación es seguida por la siguiente operación, en un programa de flujo de datos las operaciones se ejecutarán siempre que se cumplan las entradas y, por lo tanto, no haya un orden establecido.

A menudo, los lenguajes de programación de flujo de datos utilizan una gran tabla hash donde las claves son los datos del programa y los valores de la tabla son indicadores de las operaciones del programa. Esto hace que los programas multinúcleo sean más fáciles de crear en un lenguaje de programación de flujo de datos, ya que cada núcleo solo necesitaría el hashtable para funcionar.

Un ejemplo común de un lenguaje de programación de flujo de datos es un programa de hoja de cálculo que tiene columnas de datos que se ven afectadas por otras columnas de datos. Si los datos de una columna cambian, es probable que otros datos en las otras columnas cambien con ella. Aunque el programa de hoja de cálculo es el ejemplo más común de un lenguaje de programación de flujo de datos, la mayoría de ellos tienden a ser lenguajes gráficos.