Định nghĩa và đặc điểm ngôn ngữ lập trình

Có nhiều định nghĩa khác nhau về lập trình hàm hay ngôn ngữ hàm.

Trong các thuật ngữ cơ bản nhất, lập trình hàm là việc xem các phép tính như những hàm toán học. Một định nghĩa khác theo blog Clojurefun (nói về ngôn ngữ hàm Clojure), ngôn ngữ hàm là một ngôn ngữ nhấn mạnh việc sử dụng các hàm và dữ liệu cố định.

Clojurefun cũng dẫn lại một vài định nghĩa chưa chính xác cho rằng ngôn ngữ hàm đơn giản là ngôn ngữ được phép có phong cách hàm ở các hàm bậc cao hơn hay các ngôn ngữ có hỗ trợ biểu thức lambda.

Theo Odersk nhà sáng lập ngôn ngữ hàm Scala, hàm là một đoạn code ánh xạ đầu ra với đầu vào mà không có hiệu ứng nào khác nằm bên ngoài- định nghĩa này hoàn toàn giống định nghĩa hàm trong toán học. Trong Scala, hàm còn được gọi là ‘hàm nguyên thủy’ để phân biệt với các hàm trong C.

Một ngôn ngữ hàm tập trung vào việc lập trinh với các hàm nguyên thủy sẽ mạnh và dễ đạt mục tiêu hơn.

Ngôn ngữ hàm có thể được kết hợp với các mô hình khác như lập trình hướng đối tượng. Trên thực tế chúng kết hợp rất tốt với các ngôn ngữ này, theo Odersky. Theo nghĩa này, biểu thức lambda chỉ là điều kiện cần chứ không phải là điều kiện đủ trong một ngôn ngữ có tính hàm. Bởi vì ngôn ngữ hàm không chỉ là các hàm bậc nhất hay các hàm bậc cao hơn mà là việc làm cho lập trình trở nên giống toán học. (Trong logic toán học và khoa học máy tính, phép tính lambda-lambda calculus hay λ-calculus là một hệ thống hình thức dùng trong việc định nghĩa hàm số, ứng dụng hàm số và đệ quy).

Dữ liệu cố định là điều tối quan trọng trong lập trình hàm. Các chương trình đa luồng hoạt động đồng thời trên dữ liệu cũng được hưởng lợi từ dữ liệu cố định.

Theo David Stephens, một người phát ngôn của ngôn ngữ hàm F#, đồng thời là quản lý chương trình .NET của Microsoft,ngôn ngữ lập trình hàm phổ biến nhất thế giới chính là Excel, chương trình bảng tính phổ biến của Microsoft. Một bảng tính Excel đơn giản có thể có một cột với nhiều giá trị trong nó như A1x2. A1x2 là một hàm nguyên thủy trên A1 vì A1 không thay đổi và bạn có thể tính toán các giá trị từ dữ liệu này.

Ngoài các ngôn ngữ được xây dựng là lập trình hàm ngay từ đầu như Erlang, Haskell, Lisp, ML, Scheme vả 3 ngôn ngữ được đề cập trong bài, các ngôn ngữ tương tự Java và C# đang ngày càng có tính hàm cao hơn nhờ việc có thêm hỗ trợ cho các biểu thức lambda.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

CAPTCHA ImageChange Image