Các ƣu điểm của ngôn ngữ Elm

Một phần của tài liệu Nghiên cứu lập trình phản ứng với ngôn ngữ ELM (Trang 41 - 43)

Elm là ngôn ngữ lập trình hàm phản ứng có 2 tính năng chính: Hỗ trợ khai báo đơn giản cho lập trình hàm phản ứng luồng dữ liệu không đồng bộ và tạo giao diện chức năng đồ họa ngƣời dùng một cách dễ dàng.[5]

Lập trình hàm phản ứng không đồng bộ cho phép lập trình viên tạo ra các cơ chế xử lý sự kiện để ngƣời dùng có thể tác động ngay tức thì vào luồng dữ liệu mà không làm ảnh hƣởng tới các tiến trình xử lý logic khác thông qua giao diện ngƣời dùng. Việc tính toán trong thời gian dài có thể thực thi đƣợc luồng dữ liệu không đồng bộ và không ảnh hƣởng tới việc đáp ứng giao diện ngƣời sử dụng.

Giao diện Elm sử dụng cơ chế khai báo các hàm theo một chuẩn chung, giúp tạo và kết hợp văn bản, hình ảnh, video và hiển thị đồ họa một cách đa dạng phong phú.

Lập trình hàm phản ứng áp dụng cho các mô hình lập trình hàm giống nhau với các giá trị thời gian khác nhau đƣợc biết nhƣ là các tín hiệu (signals). Lập trình hàm phản ứng là một xu hƣớng mới hiện nay cho cách tiếp cận việc thực hiện giao diện đồ họa ngƣời dùng, nơi mà các giá trị biến đổi theo thời gian có thể biểu diễn đƣợc dữ liệu đầu vào và đầu ra gồm các tƣơng tác ngƣời sử dụng, các yêu cầu và đáp ứng trên server.

Hệ thống lập trình hàm phản ứng đồng thời sẽ giúp chúng ta giải quyết 2 việc đó là: Không cần thiết tính toán lại và chậm chễ toàn cục.

42

Một chậm chễ toàn cục (Global delay) xảy ra khi một giao diện tƣơng tác ngƣời dùng không thể ngay lập tức thực thi các sự kiện đƣợc ngƣời dùng tác động. Các công thức của hệ thống lập trình hàm trƣớc đây thƣờng duy trì quá trình xử lý tuần tự của các luồng dữ liệu dẫn đến việc phải chờ đợi xử lý xong từng bƣớc mới có thể xử lý tới bƣớc tiếp theo mà trong thực tế thì đôi khi điều này thực sự không cần thiết. [6]

Không cần thiết tính toán lại (Needless recomputation) xảy ra khi dữ liệu đầu vào không thay đổi thì hàm đó không nhất thiết phải tính toán lại. Trƣớc đây khi một trong các đầu vào của một chƣơng trình lập trình hàm thay đổi thì toàn bộ chƣơng trình sẽ đƣợc tính toán lại mặc dù hầu hết các dữ liệu đầu vào không thay đổi. Hệ thống chạy đồng thời của Elm sẽ giúp tránh đƣợc điều này vì trong Elm sự kiện xảy ra là rời rạc và các dòng dữ liệu đầu vào không liên quan sẽ không cần thiết tính toán lại.

Các ngữ nghĩa của ngôn ngữ lập trình hàm phản ứng gán với sự thay đổi tín hiệu liên tục. Do đó việc thực hiện các mẫu tín hiệu đầu vào nhanh nhất có thể và liên tục tính toán lại chƣơng trình với các giá trị mới nhất của các tín hiệu. Trong thực tế nhiều tín hiệu thay đổi kín đáo và không thƣờng xuyên và cùng với các mẫu bất biến dẫn đến việc tính toán lại là không cần thiết. Ngƣợc lại Elm giả định rằng tất cả các tín hiệu rời rạc và sử dụng các giả định này để phát hiện khi một tín hiệu là không thay đổi và trong trƣờng hợp đó không cần thiết tính toán lại.

Trong Elm các tín hiệu chỉ xảy ra khi một sự kiện rời rạc xảy ra. Một sự kiện xảy ra khi một chƣơng trình đầu vào (nhƣ vị trí của con chuột) thay đổi. Các sự kiện yêu cầu tính toán lại chƣơng trình và kết quả của chƣơng trình thay đổi.

Hệ thống lập trình hàm trƣớc đây yêu cầu các sự kiện phải đƣợc xử lý đồng bộ: Các sự kiện xảy ra theo thứ tự chính xác. Tuy nhiên xử lý một sự kiện có thể mất thời gian đáng kể dẫn đến kết quả có thể chậm trễ cho toàn bộ hệ thống lập trình hàm phản ứng.

43

Việc xử lý các đƣờng dẫn (Pipeling) sự kiện có thể giảm bớt độ chậm trễ, nhƣng việc các sự kiện đƣợc lên thứ tự trƣớc cần phải đƣợc tuân thủ và một sự kiện không thể hoàn thành đến tận khi một sự kiện trƣớc đƣợc kết thúc. Trong các giao diện tƣơng tác ngƣời dùng việc tuân thủ quá trình xử lý sự kiện sẽ bị hạn chế vì giao diện ngƣời dùng cần phải đƣợc đáp ứng liên tục, thậm chí một hành động của ngƣời dùng trƣớc đó đƣợc kích hoạt và hoạt động trong một tính toán lâu dài.

Elm cung cấp cho ngƣời lập trình các nhìn trừu tƣợng đơn giản để xác định và tính toán các sự kiện diễn ra không đồng bộ. Bằng việc kết hợp các đƣờng dẫn xử lý, các cách thực thi các sự kiện cho phép xử lý đồng thời, ngay tức thì với các sự kiện khác nhau, tránh sự chập chễ toàn cục và cho phép các giao diện ngƣời dùng duy trì việc đáp ứng lại với ngƣời dùng. Khả năng xác định các tính toán không đồng bộ trong mô hình FRP chính là chìa khóa mới lạ.

Một phần của tài liệu Nghiên cứu lập trình phản ứng với ngôn ngữ ELM (Trang 41 - 43)

Tải bản đầy đủ (PDF)

(79 trang)