~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 20C4B42FBBF52935519CDEA734750961__1710081960 ✰
Заголовок документа оригинал.:
✰ Dataflow programming - Wikipedia ✰
Заголовок документа перевод.:
✰ Программирование потоков данных — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Dataflow_programming ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/20/61/20c4b42fbbf52935519cdea734750961.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/20/61/20c4b42fbbf52935519cdea734750961__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 10:14:20 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 10 March 2024, at 17:46 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Программирование потоков данных — Википедия Jump to content

Программирование потоков данных

Из Википедии, бесплатной энциклопедии

В компьютерном программировании программирование потоков данных — это парадигма программирования , которая моделирует программу как ориентированный граф данных, передаваемых между операциями, тем самым реализуя потока данных . принципы и архитектуру [1] потоков данных Языки программирования имеют некоторые общие черты с функциональными языками и обычно разрабатываются для того, чтобы перенести некоторые функциональные концепции в язык, более подходящий для числовой обработки. Некоторые авторы используют термин «поток данных» вместо «поток данных» , чтобы избежать путаницы с вычислениями потоков данных или архитектурой потоков данных , основанной на недетерминированной машинной парадигме. Программирование потоков данных было впервые разработано Джеком Деннисом и его аспирантами Массачусетского технологического института в 1960-х годах.

Соображения [ править ]

Традиционно программа моделируется как серия операций, выполняемых в определенном порядке; это можно назвать последовательным, [2] : стр.3 процедурный, [3] поток управления [3] (указывающее, что программа выбирает конкретный путь), или императивное программирование . Программа фокусируется на командах в соответствии с принципом фон Неймана. [2] : стр.3 видение последовательного программирования, где данные обычно «покоятся». [3] : стр.7

Напротив, программирование потоков данных подчеркивает движение данных и моделирует программы как серию связей. Явно определенные входы и выходы соединяют операции, которые функционируют как черные ящики . [3] : стр.2 Операция запускается, как только все ее входные данные становятся действительными. [4] Таким образом, языки потоков данных по своей сути параллельны и могут хорошо работать в больших децентрализованных системах. [2] : стр.3 [5] [6]

штат [ править ]

Одной из ключевых концепций компьютерного программирования является идея состояния , по сути, моментального снимка различных состояний в системе. Большинство языков программирования требуют значительного объема информации о состоянии, которая обычно скрыта от программиста. Часто компьютер сам понятия не имеет, какая часть информации кодирует постоянное состояние. Это серьезная проблема, поскольку информация о состоянии должна распределяться между несколькими процессорами в параллельных вычислительных машинах. Большинство языков вынуждают программиста добавлять дополнительный код, чтобы указать, какие данные и части кода важны для состояния. Этот код имеет тенденцию быть дорогим с точки зрения производительности, а также трудным для чтения и отладки. Явный параллелизм — одна из основных причин низкой производительности Enterprise Java Beans при создании приложений, не поддерживающих OLTP , с интенсивным использованием данных . [ нужна цитата ]

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

Представительство [ править ]

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

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

Для параллельной работы требуется общий доступ только к списку; это состояние всей программы. языка Таким образом, задача поддержания состояния снимается с программиста и передается среде выполнения . На машинах с одним процессорным ядром, где реализация, предназначенная для параллельной работы, просто приведет к накладным расходам, эти накладные расходы можно полностью устранить, используя другую среду выполнения.

Дополнительные обновления [ править ]

Некоторые недавние библиотеки потоков данных, такие как Differential / Timely Dataflow, использовали инкрементные вычисления для гораздо более эффективной обработки данных. [1] [7] [8]

История [ править ]

Пионером языка потоков данных был BLODI (BLOck DIAgram), опубликованный в 1961 году Джоном Ларри Келли-младшим , Кэрол Лохбаум и Виктором А. Высоцким для определения систем выборочных данных . [9] Спецификация BLODI функциональных блоков (усилителей, сумматоров, линий задержки и т. д.) и их взаимосвязей была скомпилирована в единый цикл, который обновлял всю систему за один такт.

В 1966 году доктор философии. диссертация « Онлайн-графическая спецификация компьютерных процедур» , [10] Берт Сазерленд создал одну из первых сред графического программирования потоков данных, чтобы упростить параллельное программирование. Последующие языки потоков данных часто разрабатывались в крупных суперкомпьютерных лабораториях. POGOL, традиционный язык обработки данных, разработанный в АНБ , компилировал крупномасштабные приложения, состоящие из множества операций между файлами, например, слияния, выбора, суммирования или преобразования, в эффективный код, исключающий создание или запись в промежуточный код. файлы в максимально возможной степени. [11] SISAL , популярный язык управления потоками данных, разработанный в Ливерморской национальной лаборатории имени Лоуренса , похож на большинство языков, управляемых операторами, но переменные следует назначать один раз . Это позволяет компилятору легко идентифицировать входные и выходные данные. Был разработан ряд ответвлений SISAL, в том числе SAC , Single Assignment C , который пытается оставаться как ближе к популярному языку программирования C. можно

ВМС США финансировали разработку ACOS и SPGN (обозначение графа обработки сигналов), начиная с начала 1980-х годов. Сегодня это используется на ряде платформ. [12]

Более радикальная концепция — Prograph , в которой программы создаются в виде экранных графиков, а переменные полностью заменяются линиями, связывающими входные данные с выходными данными. Кстати, изначально Prograph был написан на Macintosh , который оставался однопроцессорным до появления DayStar Genesis MP в 1996 году. [ нужна цитата ]

Существует множество аппаратных архитектур, ориентированных на эффективную реализацию моделей программирования потоков данных. [ нечеткий ] Архитектура потока данных с тегированными токенами MIT была разработана Грегом Пападопулосом . [ чрезмерный вес? - обсуждать ]

Был предложен поток данных [ кем? ] как абстракция для определения глобального поведения компонентов распределенной системы: в живых распределенных объектов модели программирования распределенные потоки данных используются для хранения и передачи состояния и, как таковые, играют роль, аналогичную переменным, полям и параметрам в Java. - как языки программирования.

Языки [ править ]

Языки программирования потоков данных включают в себя:

Библиотеки [ править ]

  • Apache Beam : Java/Scala SDK, который унифицирует потоковую (и пакетную) обработку с поддержкой нескольких механизмов выполнения (Apache Spark, Apache Flink, Google Dataflow и т. д.).
  • Apache Flink : библиотека Java/Scala, которая позволяет выполнять потоковые (и пакетные) вычисления поверх распределенного кластера Hadoop (или другого).
  • Апач Спарк
  • SystemC : библиотека для C++, в основном предназначенная для проектирования аппаратного обеспечения.
  • TensorFlow : библиотека машинного обучения, основанная на программировании потоков данных.

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б Шварцкопф, Мальта (7 марта 2020 г.). «Замечательная полезность вычислений с потоками данных» . АСМ СИГОПС . Проверено 31 июля 2022 г.
  2. ^ Перейти обратно: а б с Джонстон, Уэсли М.; младший Пол Ханна; Ричард Дж. Миллар (март 2004 г.). «Достижения в языках программирования потоков данных» (PDF) . Обзоры вычислительной техники ACM . 36 : 1–34. дои : 10.1145/1013208.1013209 . S2CID   5257722 . Проверено 15 августа 2013 г.
  3. ^ Перейти обратно: а б с д Это Уодж, Уильям В.; Эдвард А. Эшкрофт (1985). Lucid, язык программирования потоков данных (иллюстрированное издание). Академия Пресс. ISBN  9780127296500 . Проверено 15 августа 2013 г.
  4. ^ Перейти обратно: а б «Основы программирования потоков данных» . Начало работы с продуктами NI . Национальная корпорация инструментов . Проверено 15 августа 2013 г.
  5. ^ Хартер, Ричард. «Языки потоков данных и программирование. Часть I» . Мир Ричарда Хартера . Архивировано из оригинала 8 декабря 2015 года . Проверено 15 августа 2013 г.
  6. ^ «Почему языки программирования потоков данных идеальны для программирования параллельного оборудования» . Серия технических документов «Основы многоядерного программирования» . Национальная корпорация инструментов . Проверено 15 августа 2013 г.
  7. ^ МакШерри, Фрэнк; Мюррей, Дерек; Айзекс, Ребекка; Айсард, Майкл (5 января 2013 г.). «Дифференциальный поток данных» . Майкрософт . Проверено 31 июля 2022 г.
  8. ^ «Дифференциальный поток данных» . Своевременный поток данных. 30 июля 2022 г. Проверено 31 июля 2022 г.
  9. ^ Джон Л. Келли младший; Кэрол Лохбаум; В. А. Высоцкий (1961). «Компилятор блок-схем». Белл Систем Тех. Дж . 40 (3): 669–678. дои : 10.1002/j.1538-7305.1961.tb03236.x .
  10. ^ Сазерленд, Уильям Роберт (январь 1966 г.). Он-лайн графическая спецификация компьютерных процедур (кандидатская диссертация). Массачусетский технологический институт . hdl : 1721.1/13474 . Проверено 25 августа 2022 г.
  11. ^ Глория Ламберт (1973). «Масштабная обработка файлов: ПОГОЛ». POPL '73: Материалы 1-го ежегодного симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования . АКМ . стр. 226–234.
  12. ^ Обработка подводных акустических данных, Ю.Т. Чан

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 20C4B42FBBF52935519CDEA734750961__1710081960
URL1:https://en.wikipedia.org/wiki/Dataflow_programming
Заголовок, (Title) документа по адресу, URL1:
Dataflow programming - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)