В языке потока управления у вас есть поток инструкций, которые работают с внешними данными. Условное выполнение, переходы и вызовы процедур изменяют выполняемый поток инструкций. Это можно рассматривать как инструкции, проходящие через данные (например, инструкции работают с регистрами, которые загружаются данными инструкциями - данные статичны, если поток инструкций не перемещает их). Оператор «if» потока управления переходит к правильной ветви в потоке инструкций, но данные не перемещаются.
В языке потока данных у вас есть поток данных, который передается от инструкции к инструкции для обработки. Условное выполнение, переходы и вызовы процедур направляют данные в разные инструкции. Это можно рассматривать как поток данных через статические инструкции, например, как электрические сигналы проходят через цепи или вода течет по трубам. Оператор потока данных «if» направит данные в нужную ветвь.
Некоторые примеры функций и языков потока данных:
Текстовые языки
Визуальные языки
Продукты, которые встраивают язык визуального потока данных:
Языки программирования потока данных являются, которые фокусируются на состоянии программы и заставляют операции происходить согласно любому изменению в состоянии. Языки программирования потока данных по сути параллельны, потому что операции полагаются на исходные данные, которые при встрече заставят операцию выполняться. Это означает в отличие от нормальной программы, где одна операция сопровождается следующей операцией, в программе потока данных операции выполнятся, пока исходные данные встречены и таким образом нет никакого установленного порядка.
Часто языки программирования потока данных используют большую хеш-таблицу, где ключи являются данными программы, и значения таблицы являются указателями на операции программы. Это делает многоядерные программы легче создать на языке программирования потока данных, так как каждое ядро только нуждалось бы в хеш-таблице для работы.
типичным примером А языка программирования потока данных является программа электронной таблицы, которая имеет столбцы данных, которые затронуты другими столбцами данных. Если данные в изменении на один столбец, другие данные в других столбцах, вероятно, изменятся с ним. Хотя программа электронной таблицы является наиболее распространенным примером языка программирования потока данных, большинство из них имеет тенденцию быть графическими языками.
Excel (и другие электронные таблицы) является языками чрезвычайно потока данных. Языки потока данных много похожи на языки функционального программирования, за исключением того, что значения в листах целого графика программы не являются значениями вообще, но переменными (или потоки создания ценности), так, чтобы, когда они изменяются, пульсация изменений и текут график.
Mozart имеет поддержку подобной потоку данных синхронизации, и это действительно имеет некоторое коммерческое применение. Вы могли также утверждать, что делают , язык программирования потока данных.
Один вид программирования Dataflow - это реактивное программирование . Когда этот стиль программирования используется на функциональном языке, он называется функциональное реактивное программирование . Пример функционального языка реактивного программирования для Интернета является Flapjax .
Кроме того, AIC - это язык данных DataFlow недавно на новость хакера.
Другой пример Martlet из Оксфорда.
Многие инструменты ETL также находятся в этой области. Хорошим примером являются задачи потока данных в MS SSIS. Графический инструмент в этом случае.
На самом деле это довольно старая концепция - в 1970-х годах был даже создан язык и машина для эффективного программирования и выполнения потока данных (Manchester Dataflow Machine).
Замечательной особенностью этого языка является его двойственность по отношению к ленивым функциональным языкам, таким как Haskell. Таким образом, если ваши шаги обработки являются чисто функциональными, и если у вас достаточно вычислительных блоков для их оценки и передачи результатов, вы получаете максимальную параллельность бесплатно - автоматически и без каких-либо усилий программирования!