Hiệu ứng lề (khoa học máy tính)

Bách khoa toàn thư mở Wikipedia

Trong khoa học máy tính, một hàm hay biểu thức được cho là có hiệu ứng lề hay tác dụng phụ (side effect) nếu nó thay đổi một số trạng thái ngoài tầm vực của nó; hoặc có một sự tương tác quan sát được (observable) với hàm gọi nó hay phạm vi bên ngoài bên cạnh việc trả lại giá trị. Ví dụ, một hàm cụ thể có thể thay đổi giá trị của biến toàn cục (global variable) hay biến tĩnh (static variable), thay đổi một trong những tham số của nó, gây ra ngoại lệ (exception), hiển thị dữ liệu hay ghi dữ liệu vào tập tin, đọc dữ liệu, hay gọi các hàm khác có hiệu ứng lề. Với sự có mặt của hiệu ứng lề, hành vi của chương trình có thể phụ thuộc vào lịch sử của nó; nghĩa là, thứ tự của đánh giá các vấn đề. Hiểu đúng và gỡ lỗi một hàm có hiệu ứng lề đòi hỏi kiến thức về ngữ cảnh và lịch sử của nó.[1][2]

Hiệu ứng lề là cách phổ biến nhất mà một chương trình tương tác với thế giới bên ngoài (con người, hệ thống tập tin, các máy tính khác trong mạng). Nhưng mức độ sử dụng hiệu ứng lề phụ thuộc vào mẫu hình lập trình. Lập trình mệnh lệnh được biết đến nhiều vì thường sử dụng hiệu ứng lề.

Trong lập trình hàm, hiệu ứng lề hiếm khi được sử dụng.

Lập trình viên sử dụng hợp ngữ phải chú ý đến hiệu ứng lề ẩn.

Tham khảo[sửa | sửa mã nguồn]

  1. ^ “Research Topics in Functional Programming” ed. D. Turner, Addison-Wesley, 1990, pp 17–42. Truy cập from: Hughes, John, Why Functional Programming Matters (PDF)
  2. ^ Collberg, CSc 520 Principles of Programming Languages, Department of Computer Science, University of Arizona