Functional Programming được đánh giá là có nhiều điểm vượt trội so với nhiều mô hình lập trình khác. Trong đó Functional Programming và Object-oriented Programming là hai mô hình hay được đưa lên bàn cân nhất. Vậy bạn có biết Functional Programming là gì? Object-oriented Programming là gì? Cũng như sự khác nhau giữa hai mô hình này như nào? Hãy cùng nhau tìm hiểu những vấn đề này ngay trong phần nội dung chia sẻ sau đây.

Bạn đang xem: Functional programming là gì

Khái lược về Functional Programming

Functional Programming là gì?

Functional Programming hay thường được viết tắt là FP. Đây là phương pháp lập trình lấy các hàm làm đơn vị thao tác cơ bản. Mô hình lập trình này hoàn toàn dựa trên các hàm toán học (function), tránh cho việc thay đổi giá trị của dữ liệu. 

*

Định nghĩa Functional Programming là gì?

Với FP thì chỉ có hàm, hàm và hàm. Khác với nhiều phương pháp lập trình khác, FB không có lệnh gán (assignment statements), không lưu giữ trạng thái toàn cục (global state) cũng như không cần tới các biến (variables). 

Trong phương pháp FP, chúng ta điều khiển chương trình bằng cách phối hợp các hàm lại với nhau. Chúng ta tung hứng các hàm qua lại, nhận hàm vào, nhả hàm ra, lồng ghép, xâu chuỗi, biến hóa các hàm theo mọi cách có thể nghĩ ra.

Functional Programming được gọi là không gian các hàm hạng nhất – nơi mà lập trình viên đối xử với các hàm như những công dân hạng nhất. Ở đâu mà các hàm toán học được coi trọng như vậy, thì ở đó ta có thể lập trình theo phương pháp Functional Programming. Ví dụ như JavaScript, Python, Golang và ngay cả PHP. 

Ngôn ngữ lập trình hàm – Functional Programming

Các ngôn ngữ lập trình hàm được thiết kế đặc biệt để xử lý các ứng dụng tính toán biểu tượng và xử lý danh sách. Lập trình hàm dựa trên các hàm toán học với một số ngôn ngữ lập trình hàm phổ biến bao gồm: Lisp, Python, Erlang, Haskell, Clojure,…

Các ngôn ngữ lập trình hàm được phân loại thành hai nhóm, tức là –

Ngôn ngữ hàm thuần túy (Pure Functional Languages): Các loại ngôn ngữ chức năng này chỉ hỗ trợ các mô hình chức năng. Ví dụ – Haskell.Ngôn ngữ hàm không tinh khiết (Impure Functional Languages): Các loại ngôn ngữ chức năng này hỗ trợ các mô hình chức năng và lập trình kiểu mệnh lệnh. Ví dụ – LISP.

*

Các hàm trong FP là quan trọng nhất

Ưu điểm của Functional Programming là gì?

Sở dĩ mô hình lập trình Functional Programming được sử dụng phổ biến vì chúng mang nhiều ưu điểm, cụ thể như sau:

Ưu điểm nổi bật hơn cả có lẽ chính là tính bất biến. Các ngôn ngữ lập trình hàm khi đã khai báo thì sẽ không thay đổi. Người ta có thể lập trình các hàm hoạt động song song như hướng dẫn. Những mã như vậy hỗ trợ khả năng tái sử dụng và kiểm tra dễ dàng.

Đối với những ngôn ngữ có hỗ trợ high order function, thì các hàm toán học cũng có thể được truyền như các tham số hoặc là kết quả trả về. Vì vậy các thuật toán trong Functional Programming có thể được diễn tả một cách ngắn gọn và đơn giản.

Đặc biệt, điểm khác biệt lớn nhất của lập trình hàm với lập trình thủ tục thuần túy (procedural programming) chính là, thay vì thực hiện tuần tự theo các bước với các biến để lưu trạng thái. Thì Functional Programming chú trọng đến thực thi luồng chương trình thông qua sự kết hợp các hàm bậc cao (high order function).

Trong lập trình hàm, nó còn được chú ý bởi khả năng hỗ trợ các hàm lồng nhau. 

*

Dựa liệu đầu vào, đầu ra là các hàm

Nhược điểm của Functional Programming

Bên cạnh những ưu điểm kể ở trên thì phương pháp lập trình Functional Programming vẫn tồn tại một số hạn chế cụ thể như sau:

Hạn chế được cho là lớn nhất của lập trình hàm chính là phương pháp này yêu cầu không gian bộ nhớ lớn. Vì nó không tạo ra một đơn vị mới. Cho nên mỗi lần khi sử dụng bạn cần tạo các đối tượng mới để thực hiện các hành động.

Trong một số tình huống khi mà chúng ta sử dụng lập trình hàm thì phải thực hiện nhiều thao tác khác nhau trên cùng một tập dữ liệu. Điều này mang đến không ít phiền toái.

Ngôn ngữ Lisp được dùng cho các ứng dụng trí tuệ nhân tạo như học máy, lập trình ngôn ngữ, lập mô hình giọng nói và thị giác,…Trình thông dịch Lisp được nhúng để bổ sung khả năng lập trình cho một số hệ thống như Emacs.

Khái lược về Object-oriented Programming

Object-oriented Programming là gì?

Object-oriented Programming hay được viết tắt là OOP. Nó có nghĩa là lập trình hướng đối tượng. Đây là một phương pháp lập trình cho phép các lập trình viên tạo ra các đối tượng trừu tượng trong code hóa các đối tượng.

*

Lập trình hướng đối tượng

Trong đó, một đối tượng thường bao gồm có 2 thông tin là:

Thuộc tính: đây là những đặc điểm, thông tin của đối tượng. Ví dụ như con mèo có các đặc điểm như hình dáng, màu lông, giới tính, màu mắt,… Phương thức: là các thao tác, hành động mà mỗi đối tượng đó có thể thực hiện. Ví dụ tiếp về con mèo thì chúng có thể có các hành động như đi lại, ăn uống, bắt chuột, kêu,…

Khi một đối tượng có những đặc tính giống như nhau thì sẽ được gom lại thành một nhóm gọi là lớp đối tượng (class). Lớp này cũng sẽ có 2 thành phần giống đối tượng là thuộc tính và phương thức. Lớp cũng có thể được dùng để định nghĩa cho một kiểu dữ liệu mới.

Ví dụ như ta có lớp đối tượng ô tô, thì chúng có:

Các thuộc tính như màu sắc, động cơ, giá cả,…Các phương thức sẽ là chạy, chở người, chở hàng,…

Lúc này, đối tượng của lớp đối tượng ô tô chính là các dòng xe cụ thể như Mercedes, Volvo, Audi, Bentley,…

Ưu điểm của lập trình hướng đối tượng

Lập trình hướng đối tượng tuy “sinh sau đẻ muộn” nhưng chúng đã khắc phục được hầu hết các điểm yếu của các mô hình lập trình trước đó. Cụ thể phương pháp lập trình này có các ưu điểm sau:

Dễ dàng trong việc quản lý code khi có sự thay đổi chương trình.Việc mở rộng dự án trở nên dễ dàng.Tính bảo mật của OOP cao.Có thể sử dụng mã nguồn từ đó cho khả năng tiết kiệm tài nguyên.

*

Ví dụ về lớp đối tượng

Sự khác nhau giữa Functional Programming và Object-oriented Programming

Hiện nay hai phương pháp lập trình này được đem ra so sánh với nhau. Dưới đây là bảng tổng hợp một số điểm khác biệt của hai mô hình lập trình này.

Functional Programming – Lập trình hàmObject-oriented Programming – Lập trình hướng đối tượng
Dữ liệu sử dụng bất biến.Dữ liệu sử dụng không phải là bất biến, chúng có thể thay đổi.
Tuân theo mô hình lập trình khai báo – DPM.

Xem thêm: Cfm Là Gì – đơn Vị đo

Tuân theo mô hình lập trình mệnh lệnh – IPM.
Tập trung vào vấn đề “Bạn đang làm gì”.Tập trung vào vấn đề “Bạn đang làm như thế nào”.
Hỗ trợ lập trình song song.Không thích hợp cho lập trình song song.
Các hàm của FP không có tác dụng phụCác phương pháp của OOP có thể tạo ra các tác dụng phụ nghiêm trọng.
Kiểm soát luồng được thực hiện bằng cách sử dụng các lệnh gọi hàm & lệnh gọi hàm với đệ quy.Điều khiển luồng được thực hiện bằng cách sử dụng các vòng lặp và các câu lệnh điều kiện.
Nó sử dụng khái niệm “Đệ quy” để lặp lại bộ sưu tập dữ liệu.Nó sử dụng khái niệm “Vòng lặp” để lặp lại bộ sưu tập dữ liệu. Ví dụ như đối với mỗi vòng lặp trong Java.
Thứ tự thực hiện các câu lệnh không quá quan trọng.Thứ tự thực hiện các câu lệnh là rất quan trọng.
Hỗ trợ cả “Tóm tắt dữ liệu” và “tóm tắt hành vi”.Chỉ hỗ trợ “Tóm tắt trên dữ liệu”.

Xem thêm: Tbh Là Gì – Tbh Có Nghĩa Là Gì

Đến đây hẳn bạn đã biết Functional Programming là gì cũng như sự khác nhau giữa hai mô hình lập trình FP và OOP. Hy vọng những thông tin tổng hợp trên sẽ hữu ích đối với quý vị.

Chuyên mục: Hỏi Đáp