После сканирования бумаги я не могу найти, где упоминается, что она должна быть ациклической. Ничто не мешает вам создавать циклические графики в потоке данных/реактивном программировании. Ациклические графы позволяют создавать конвейерные потоки данных (например, конвейеры командной строки Unix).
Обратная связь и циклы — очень мощный механизм в потоке данных. Без них вы ограничены типами программ, которые вы можете создавать. Взгляните на Программирование на основе потоков — Сети циклического типа.
Редактировать после второго сообщения пользователя pagoda_5b
Одно заявление в газете заставило меня обратить внимание...
Для правильно упорядоченных графов этот процесс монотонно переходит на более высокие уровни, что обеспечивает непротиворечивость данных, т. е. отсутствие сбоев.
Для меня это говорит о том, что циклы не разрешены в рамках Scala.React. Казалось бы, цикл между двумя узлами заставляет систему постоянно пытаться поднять уровень обоих узлов навсегда.
Но это не значит, что вам нужно кодировать циклы в их рамках. Можно иметь один путь от элемента, который вы хотите наблюдать, а затем другой, отдельный путь обратно к графическому интерфейсу.
Мне всегда кажется, что слишком много внимания уделяется системе программирования, завершающей и дающей один ответ. Циклы затрудняют определение момента завершения. Библиотеки, которые используют термин «реактивный», обычно придерживаются этого мыслительного процесса. Но это всего лишь результат фон-неймановской архитектуры компьютеров... основное внимание уделяется решению уравнения и возврату ответа. Библиотеки, которые избегают циклов, похоже, обеспокоены завершением программы.
Поток данных не требует, чтобы программа имела один правильный ответ или когда-либо завершалась. Ответ — это ответ в данный момент времени из-за входных данных в этот момент. Ожидается обратная связь и циклы, если они не требуются. Система потока данных — это, по сути, просто большой цикл, который постоянно передает данные между узлами. Чтобы прекратить его, вы просто останавливаете его.
Поток данных не обязательно должен быть таким сложным. Это просто совсем другой способ думать о программировании. Я предлагаю вам ознакомиться с книгой Дж. Пола Морисона "Программирование на основе потоков", где вы найдете протестированную версию потока данных. или моя книга (после завершения).
person
Matt Carkci
schedule
28.01.2014