Lập trình phản ứng

Trong điện toán, lập trình phản ứng (tiếng Anh: reactive programming) là một mẫu hình lập trình khai báo liên quan đến các luồng dữ liệu và lan truyền của sự thay đổi. Với mẫu hình này, có thể dễ dàng thể hiện các luồng dữ liệu (data stream) tĩnh (ví dụ: mảng) hoặc động (ví dụ: bộ phát sự kiện) và cũng có thể truyền đạt rằng có tồn tại một sự phụ thuộc được suy ra trong mô hình thực thi liên quan, tạo điều kiện cho việc truyền tự động dữ liệu đã thay đổi lưu lượng.

Ví dụ, trong thiết lập của lập trình mệnh lệnh (imperative programming),  có nghĩa là  được gán cho kết quả của  ngay khi biểu thức được ước tính, và sau đó, giá trị của  và có thể được thay đổi mà không ảnh hưởng tới giá trị của . Ngược lại, trong lập trình phản ứng, giá trị của  được tự động cập nhật mỗi khi giá trị của  hay  thay đổi mà không cần chương trình phải thực thi lại câu lệnh  để xác định giá trị được gán hiện tại của 

Một ví dụ khác là ngôn ngữ mô tả phần cứng như Verilog, trong đó lập trình phản ứng cho phép các thay đổi được mô hình hóa khi chúng lan truyền qua các mạch.

Lập trình phản ứng được đề xuất như là một cách để đơn giản hóa việc tạo giao diện người dùng tương tác và hoạt hình hệ thống gần thời gian thực.

Ví dụ, trong kiến trúc MVC (model–view–controller), lập trình phản ứng có thể tạo điều kiện cho các thay đổi trong model bên dưới để được phản ánh tự động trong view được liên kết.

Cách tiếp cận để tạo ngôn ngữ lập trình phản ứng

Xem thêm 

 Reactive extensions, một API để thực hiện lập trình phản ứng với các luồng, các observable và toán tử có nhiều hiện thực ngôn ngữ bao gồm RxJs, RxJava, RxPy và RxSwift. 
 Elm (ngôn ngữ lập trình) Thành phần phản ứng của giao diện người dùng web. 
 Reactive Streams, một tiêu chuẩn JVM để xử lý luồng không đồng bộ với áp lực không chặn 
 Observable, quan sát được trong lập trình phản ứng.

Tham khảo

Liên kết ngoài 

 A survey on reactive programming A paper by E. Bainomugisha, A. Lombide Carreton, T. Van Cutsem, S. Mostinckx, and W. De Meuter that surveys and provides a taxonomy of existing reactive programming approaches.
 MIMOSA Project of INRIA - ENSMP, a general site about reactive programming.
Experimenting with Cells Demonstration of a simple reactive programming application in Lisp, using the Cells library
 REScala Reactive programming for OO applications.
 Deprecating the Observer Pattern A 2010 paper by Ingo Maier, Tiark Rompf and Martin Odersky outlining a reactive programming framework for the Scala programming language.
 Deprecating the Observer Pattern with Scala.React A 2012 paper by Ingo * RxJS, the Reactive Extensions library for "composing asynchronous [...] programs using observable sequences"

Mẫu hình lập trình