Skip to main content

Lập trình chức năng là gì?

Lập trình chức năng là một mô hình lập trình trong đó cơ sở tính toán là đánh giá các biểu thức.Một số đặc điểm là việc sử dụng các chức năng bậc cao, tính minh bạch tham chiếu và đánh giá lười biếng.Những lợi thế của phong cách lập trình bao gồm các chương trình dễ đọc, rất đáng tin cậy và có thể được chia thành các thành phần.Nhược điểm là các tính toán có thể chậm và phong cách và cú pháp hoàn toàn khác với các kiểu lập trình phổ biến khác.Phong cách lập trình chức năng thường được các học giả chấp nhận hơn là của các chuyên gia khoa học máy tính. Như tên cho thấy, các chức năng là một phần cơ bản của mô hình lập trình này.Các chức năng có thể được lồng trong các chức năng khác, được gọi là các hàm bậc cao hơn và mỗi hàm bậc cao hơn có thể được chia thành các hàm khối xây dựng dễ hiểu và gỡ lỗi.Ví dụ về một số chức năng bậc cao hơn là bản đồ và tổ.Bản đồ hàm lấy hàm F và danh sách các biến, ví dụ (x, y, z) và đưa ra kết quả trong danh sách: bản đồ [f, (x, y, z)] ' (f (x), f(y), f (z)).Nest lấy hàm F, biến x và số lần lặp: Nest [f, x, 3] ' f (f (f (x))).Lập trình chức năng thuần túy có đầu vào và trả về đầu ra mà không bao giờ thay đổi trạng thái biến.Nói cách khác, một hàm có cùng đầu vào sẽ luôn cho kết quả tương tự bất kể những gì đã xảy ra trước đây trong chương trình.Điều này được gọi là minh bạch tham chiếu.Vì các chức năng toán học là minh bạch tham chiếu, nên lập trình chức năng là trực quan đối với nhiều nhà toán học, kỹ sư và nhà khoa học.Tính minh bạch tham chiếu của các hàm có nghĩa là thứ tự đánh giá chức năng không quan trọng.Do đó, các chức năng không cần phải được đánh giá cho đến khi kết quả của chúng là cần thiết, được gọi là đánh giá lười biếng.Điều này hoàn toàn trái ngược với lập trình bắt buộc, trong đó một chương trình bắt đầu bằng lệnh đầu tiên và chạy qua danh sách cho đến khi lệnh cuối cùng.Đánh giá lười biếng bỏ qua các phần của chương trình không tuân theo logic hoặc là thừa, điều này tự động tối ưu hóa chương trình và có thể giảm thời gian tính toán. Lập trình chức năng có nhiều lợi thế so với các mô hình lập trình khác.Các chức năng với đầu vào rõ ràng và đầu ra rất dễ đọc và hiểu.Khi một hàm được gỡ lỗi triệt để, nó có thể được sử dụng một cách đáng tin cậy trong các ứng dụng khác.Các máy đa lõi có thể tính toán các chức năng được đánh giá độc lập song song, cải thiện đáng kể hiệu suất của các chương trình. Thật không may, không phải tất cả các chương trình đều cho vay để tính toán song song và các chương trình chức năng tính toán có thể khá chậm.Các chương trình chức năng phụ thuộc rất nhiều vào đệ quy, thường kém hiệu quả hơn khi sử dụng các vòng lặp truyền thống hoặc phương pháp lặp.Trên thực tế, lập trình chức năng có thể khá vụng về và khó học vì nó không giống với các mô hình phổ biến khác như lập trình hướng đối tượng..Một số ngôn ngữ thuần túy là Haskell và Erlang.Mathicala chuyên về toán học tượng trưng, R được chuyên môn về thống kê và J chuyên về phân tích tài chính.Các ngôn ngữ đa nhân như Scala và F# hỗ trợ cả lập trình chức năng và các kiểu lập trình khác.