Interested Article - Реактивное программирование

Парадигмы программирования

Реактивное программирование парадигма программирования , ориентированная на потоки данных и распространение изменений. Это означает, что должна существовать возможность легко выражать статические и динамические потоки данных, а также то, что нижележащая модель исполнения должна автоматически распространять изменения благодаря потоку данных.

К примеру, в императивном программировании присваивание a = b + c будет означать, что переменной a будет присвоен результат выполнения операции b + c , используя текущие (на момент вычисления) значения переменных. Позже значения переменных b и c могут быть изменены без какого-либо влияния на значение переменной a .

В реактивном же программировании значение a будет автоматически пересчитано, основываясь на новых значениях.

Современные табличные процессоры представляют собой пример реактивного программирования. Ячейки таблицы могут содержать строковые значения или формулу вида «=B1+C1», значение которой будет вычислено исходя из значений соответствующих ячеек. Когда значение одной из зависимых ячеек будет изменено, значение этой ячейки будет автоматически обновлено.

Другой пример — это языки описания аппаратуры (HDL), такие как Verilog . Реактивное программирование позволяет моделировать изменения в виде их распространения внутри модели.

Реактивное программирование предлагалось как путь для лёгкого создания пользовательских интерфейсов, анимации или моделирования систем, изменяющихся во времени.

К примеру, в MVC архитектуре с помощью реактивного программирования можно реализовать автоматическое отражение изменений из Model в View и наоборот из View в Model.

Концепции

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

Императивное реактивное программирование

Можно соединить парадигмы реактивного и императивного программирования. В такой связке императивные программы могли бы работать над реактивными структурами данных.

Объектно-ориентированное реактивное программирование

Объектно-ориентированное реактивное программирование (ООРП) — это комбинация объектно-ориентированного подхода с реактивным. Вероятно, наиболее естественный способ сделать это состоит в том, что вместо методов и полей у объектов есть реакции , которые автоматически пересчитывают значения, и другие реакции зависят от изменений этих значений.

Функциональное реактивное программирование

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

Функциональное реактивное программирование (ФРП) сформировалось в 1997 году, с предложением языка Fran . Позже были разработаны такие языки как Fruit, FRP и RT-FRP, FAL, Frob, Fvision, Yampa .

Простейшее функциональное реактивное выражение имеет следующую форму :

b1 `until` e => b2

что буквально означает « вести себя как b1 до возникновения события e , после этого вести себя как b2 ».

Реализации

  • Elm — функциональный реактивный язык программирования, компилирующийся в HTML , CSS и JavaScript
  • — событийно-реактивный язык для программирования веб-приложений
  • — мультиплатформенная реализация реактивного программирования для Java , JS , C# , Scala , Clojure , Swift и др.
  • — FRP-реализация для Julia
  • — мультиплатформенная реализация для .NET

Ссылки

  1. . Дата обращения: 8 сентября 2015. 11 ноября 2020 года.
  2. Mun Hon Cheong. . — The University of New South Wales, 2005. 23 июля 2014 года.
  3. Paul Hudak. . — IEEE Computer Society Press, Department of Computer Science, Yale University, 1998. 17 октября 2013 года.
Источник —

Same as Реактивное программирование