Lập trình hướng chức năng là gì

Lập trình hướng chức năng là gì
Sự khác biệt giữa lập trình chức năng và lập trình mệnh lệnh - Công Nghệ

Sự khác biệt chính - Chức năng Lập trình so với Lập trình mệnh lệnh  

Các sự khác biệt chính giữa lập trình chức năng và lập trình mệnh lệnh là lập trình hàm coi các tính toán là các hàm toán học và tránh thay đổi trạng thái và dữ liệu có thể thay đổi trong khi lập trình mệnh lệnh sử dụng các câu lệnh thay đổi trạng thái chương trình.

Mô hình lập trình cung cấp một phong cách xây dựng cấu trúc và các yếu tố của một chương trình máy tính. Các mô hình lập trình giúp phân loại các ngôn ngữ lập trình dựa trên các tính năng của chúng. Một ngôn ngữ lập trình có thể ảnh hưởng đến nhiều mô hình hơn. Trong mô hình hướng đối tượng, chương trình được cấu trúc bằng cách sử dụng các đối tượng và các đối tượng truyền thông điệp bằng các phương thức. Lập trình logic có thể thể hiện tính toán hoàn toàn về mặt logic toán học. Hai mô hình lập trình khác là lập trình chức năng và lập trình mệnh lệnh. Lập trình hàm cho phép thể hiện các phép tính như việc đánh giá các hàm toán học. Lập trình mệnh lệnh cung cấp các câu lệnh thay đổi trạng thái của bộ nhớ một cách rõ ràng. Bài viết này thảo luận về sự khác biệt giữa lập trình hàm và lập trình mệnh lệnh.


1. Tổng quan và sự khác biệt chính 2. Lập trình chức năng là gì 3. Lập trình mệnh lệnh là gì 4. Điểm giống nhau giữa lập trình chức năng và lập trình mệnh lệnh 5. So sánh song song - Lập trình chức năng và Lập trình mệnh lệnh ở dạng bảng

6. Tóm tắt

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

Lập trình chức năng dựa trên Toán học. Nguyên tắc quan trọng đằng sau lập trình hàm là tất cả các phép tính được coi là sự kết hợp của các hàm toán học riêng biệt. Một hàm toán học ánh xạ đầu vào đến đầu ra. Giả sử rằng có một hàm được gọi là f (x) = x * x. Giá trị x 1 được ánh xạ tới đầu ra 1. Giá trị x 2 được ánh xạ tới đầu ra 4. Giá trị x 3 được ánh xạ tới đầu ra 9, v.v.

Lập trình hướng chức năng là gì

Trong lập trình chức năng, các mẫu được xem xét. Ngôn ngữ lập trình hàm Haskell, sử dụng phương pháp dưới đây để tìm tổng các số.


Hàm sum có các giá trị nguyên và kết quả cũng sẽ là một số nguyên. Nó có thể được viết dưới dạng sum: [int] -> int. Việc tổng kết có thể được thực hiện bằng cách làm theo các mẫu dưới đây.

sum [n] = n, tổng của một số là chính số đó.

Nếu có một danh sách các số, nó có thể được viết như sau. N đại diện cho số đầu tiên và ns đại diện cho các số khác

sum (n, ns) = n + sum ns.

Có thể áp dụng các mẫu trên để tìm tổng của ba số là 3,4,5.

3 + tổng [4,5]

3 + (4 + tổng [5])

3+ 4 + 5 = 12

Một hàm hoặc một biểu thức được cho là có tác dụng phụ nếu nó sửa đổi một số trạng thái bên ngoài phạm vi của nó hoặc có một tương tác có thể quan sát được với các hàm đang gọi của nó bên cạnh giá trị trả về. Lập trình chức năng giảm thiểu tác dụng phụ này. Các thay đổi trạng thái không phụ thuộc vào các đầu vào của hàm. Nó rất hữu ích khi hiểu được hành vi của chương trình. Một nhược điểm của lập trình hàm là học lập trình hàm khó hơn so với lập trình mệnh lệnh.


Lập trình mệnh lệnh là một mô hình lập trình sử dụng các câu lệnh thay đổi trạng thái của chương trình. Nó tập trung vào việc mô tả cách một chương trình hoạt động. Các ngôn ngữ lập trình như Java, C và C # là các ngôn ngữ lập trình mệnh lệnh. Nó cung cấp một quy trình từng bước về những việc cần làm. Các ngôn ngữ lập trình mệnh lệnh chứa các cấu trúc như vòng lặp if, else, while, for, lớp, đối tượng và hàm.

Lập trình hướng chức năng là gì

Tổng của mười số có thể được tìm thấy trong Java như sau. Trong mỗi lần lặp, giá trị i được thêm vào tổng và được gán cho biến tổng. Trong mỗi lần lặp, giá trị tổng tiếp tục cộng vào tổng đã tính trước đó.

int sum = 0;

for (int i = 0; i <= 10; i ++) {

sum = sum + i;

}

Lập trình mệnh lệnh rất dễ học, dễ hiểu và dễ gỡ lỗi. Có thể dễ dàng tìm thấy trạng thái của chương trình vì sử dụng các biến trạng thái. Một số hạn chế là nó có thể làm cho mã dài dòng và cũng có thể giảm thiểu khả năng mở rộng.

Sự giống nhau giữa Lập trình chức năng và Lập trình mệnh lệnh là gì?

  • Cả Lập trình Chức năng và Lập trình Mệnh lệnh đều là các mô hình lập trình.

Sự khác biệt giữa lập trình chức năng và lập trình mệnh lệnh là gì?

Lập trình chức năng là một mô hình lập trình coi tính toán là việc đánh giá các chức năng toán học và tránh thay đổi trạng thái và dữ liệu có thể thay đổi.Lập trình mệnh lệnh là một mô hình lập trình sử dụng các câu lệnh để thay đổi trạng thái của chương trình.
cấu trúc
Lập trình hàm chứa các lệnh gọi hàm và các hàm bậc cao hơn.Lập trình mệnh lệnh chứa các vòng lặp if, else, while, for, hàm, lớp và đối tượng.
Ngôn ngữ lập trình
Scala, Haskell và Lisp là các ngôn ngữ lập trình chức năng.C, C ++, Java là các ngôn ngữ lập trình mệnh lệnh.
Tiêu điểm
Lập trình chức năng tập trung vào kết quả cuối cùng.Lập trình mệnh lệnh tập trung vào việc mô tả cách một chương trình hoạt động.
Sự đơn giản
Lập trình chức năng thật khó.Lập trình mệnh lệnh dễ dàng hơn.

Tóm tắt - Chức năng Lập trình so với Lập trình mệnh lệnh

Mô hình lập trình cung cấp một phong cách xây dựng cấu trúc và các yếu tố của một chương trình máy tính. Lập trình chức năng và Lập trình mệnh lệnh là hai trong số đó. Sự khác biệt giữa lập trình hàm và lập trình mệnh lệnh là lập trình hàm coi các tính toán là các hàm toán học và tránh thay đổi trạng thái và dữ liệu có thể thay đổi trong khi lập trình mệnh lệnh sử dụng các câu lệnh thay đổi trạng thái chương trình.

Đây là 2 phương pháp cơ bản được sử dụng để phát triển hệ thống.
1. Phương pháp hướng chức năng: – Đây là cách tiếp cận truyền thống.

Lập trình hướng chức năng là gì

– Quan tâm chủ yếu tới những thông tin mà hệ thống sẽ giữ gìn. Chúng ta hỏi người dùng xem họ sẽ cần những thông tin nào, rồi chúng ta thiết kế ngân hàng dữ liệu để chứa những thông tin đó, cung cấp Forms để nhập thông tin và in báo cáo để trình bày các thông tin. –> tập trung vào thông tin và không mấy để ý đến những gì có thể xảy ra với những hệ thống đó và cách hoạt động (ứng xử) của hệ thống là ra sao

Ưu điểm: đơn giản, là phương pháp tốt cho việc thiết kế ngân hàng dữ liệu và nắm bắt thông tin,


Nhược điểm: + áp dụng cho việc thiết kế ứng dụng lại có thể khiến phát sinh nhiều khó khăn. + Không phù hợp với hệ thống thường xuyên thay đổi.

2. Phương pháp hướng đối tượng:

– Lối tiếp cận hướng đối tượng là một lối tư duy về vấn đề theo lối ánh xạ các thành phần trong bài toán vào các đối tượng ngoài đời thực. Với lối tiếp cận này, chúng ta chia ứng dụng thành các thành phần nhỏ, gọi là các đối tượng, chúng tương đối độc lập với nhau. Sau đó ta có thể xây dựng ứng dụng bằng cách chắp các đối tượng đó lại với nhau. – Chức năng của hệ thống được biểu diễn thông qua cộng tác của đối tượng, việc thay đổi chức năng, tiến hóa chức năng không làm thay đổi đến cấu trúc tĩnh của phần mềm.

Ví du: vấn đề rút tiền mặt ở ngân hàng. Các thành phần ở đây sẽ là ánh xạ của các đối tượng ngoài đời thực như tài khoản, nhân viên, khách hàng, …Và ứng dụng sẽ được sẽ được nhận diện cũng như giải đáp xoay quanh các đối tượng đó.


Ưu điểm: Một trong những ưu điểm quan trọng bậc nhất của phương pháp phân tích và thiết kế hướng đối tượng là tính tái sử dụng: bạn có thể tạo các thành phần (đối tượng) một lần và dùng chúng nhiều lần sau đó.
–> giảm thiểu lỗi và các khó khăn trong việc bảo trì, giúp tăng tốc độ thiết kế và phát triển phần mềm.

sưu tầm

Mặc dù đều là kỹ thuật lập trình sử dụng ngôn ngữ bậc cao, nhưng nếu so sánh lập trình hướng đối tượng và lập trình hướng cấu trúc thì ta có thể dễ dàng phát hiện những điểm không tương đồng giữa 2 phương pháp này. Vậy chúng khác nhau như thế nào? Cùng tìm hiểu qua bài viết dưới đây của Got It.

  • Tìm hiểu thêm: Những mẫu đề thi lập trình hướng đối tượng C++ có thể tham khảo
Lập trình hướng chức năng là gì
So sánh lập trình hướng đối tượng và lập trình hướng cấu trúc

1. Đặc điểm của lập trình hướng đối tượng và lập trình hướng cấu trúc

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

Lập trình hướng đối tượng (OOP) là kỹ thuật lập trình dựa trên “công nghệ đối tượng”, tạo ra các đối tượng trong code trừu tượng hóa các đối tượng thực tế trong thế giới thực. Đối tượng trong OOP có thuộc tính và phương thức. Chúng có thể tương tác qua lại lẫn nhau.

Lập trình hướng chức năng là gì
Lập trình hướng đối tượng

OOP có 4 tính chất:

  • Encapsulation – tính đóng gói: các phương thức và dữ liệu có mối quan hệ với nhau được lưu vào một lớp để thuận tiện cho việc quản lý, sử dụng. Chỉ có phương thức nội tại của chính đối tượng mới có thể thay đổi trạng thái nội tại của nó.
  • Abstraction – tính trừu tượng: chỉ tập trung vào những thuộc tính và phương thức cần thiết cho việc giải quyết vấn đề trong lập trình và bỏ qua các thông tin không quan trọng.
  • Inheritance – tính kế thừa: các đối tượng “con” có thể thừa hưởng các đặc tính có sẵn từ đối tượng “cha” mà không cần định nghĩa lại (tùy theo ngôn ngữ lập trình).
  • Polymorphism – tính đa hình: các đối tượng không cùng một lớp, khi tiếp nhận cùng một thông điệp thì sẽ phản hồi theo những cách khác nhau.

1.2. Lập trình hướng cấu trúc

Lập trình hướng cấu trúc (POP) là kỹ thuật lập trình chia nhỏ một chương trình lớn thành các chương trình con (còn được gọi là các hàm). Mỗi hàm sẽ đảm nhiệm một chức năng khác nhau trong hệ thống. Quá trình phân nhỏ sẽ được thực hiện cho đến khi ra được các hàm đơn giản nhất. Mục đích của việc này là để đơn giản hóa cấu trúc của chương trình, thuận tiện cho việc kiểm tra, sửa đổi và thực thi một cách hiệu quả.

Lập trình hướng chức năng là gì
Lập trình hướng cấu trúc

POP có đặc điểm:

  • Chỉ tập trung vào việc phát triển các hàm, ít chú trọng đến dữ liệu
  • Dữ liệu của hệ thống di chuyển từ hàm này qua hàm khác, được dùng chung giữa các hàm.
  • Tuân theo hình thức tiếp cận top-down khi thiết kế chương trình
  • Dùng con trỏ hoặc biến toàn cục để liên kết các hàm với nhau

2. So sánh lập trình hướng đối tượng và lập trình hướng cấu trúc

Có rất nhiều điểm khác biệt giữa lập trình hướng đối tượng và lập trình hướng cấu trúc mà bạn nên quan tâm như:

Trọng tâm

OOP chú ý vào dữ liệu hơn là thuật toán. POP chú ý đến việc xây dựng các hàm và thuật toán hơn là dữ liệu.

Sự phân chia

OOP chia nhỏ chương trình thành các đối tượng. POP chia nhỏ chương trình thành các hàm con.

Chế độ truy cập

Các từ khóa phạm vi truy cập trong OOP được chia thành Public, Private, Protected và Default. POP không có thành phần này.

Hướng tiếp cận khi thiết kế chương trình

OOP tiếp cận từ dưới lên. POP tiếp cận từ trên xuống.

Quá trình thực thi

OOP cho phép các chức năng chạy cùng một lúc. POP cho phép các hàm và chức năng chạy lần lượt.

Truy cập dữ liệu

OOP hạn chế truy cập dữ liệu giữa các đối tượng. POP cho phép dữ liệu tự do di chuyển trong hệ thống và các hàm có thể chia sẻ dữ liệu cho nhau.

Bảo mật

OOP ẩn dữ liệu trong chế độ Public, Protected và Private nên có bảo mật cao. POP không có chế độ ẩn dữ liệu, độ an toàn thấp.

Thêm mới dữ liệu

Hoạt động này có thể được thực hiện dễ dàng với các đối tượng trong OOP, còn POP thì khó hơn.

Nạp chồng/Đa hình

OOP hỗ trợ nạp chồng các hàm, hàm tạo và toán tử còn POP thì không.

Ứng dụng

OOP có thể áp dụng trong xây dựng các chương trình có độ phức tạp cao. POP chỉ nên được dùng với chương trình đơn giản.

Sự ra đời của phương pháp OOP đã khắc phục được nhược điểm của kỹ thuật POP truyền thống, giúp ích cho lập trình viên trong quá trình xây dựng các chương trình. Nếu bạn muốn tìm hiểu thông tin về so sánh lập trình hướng đối tượng và lập trình hướng cấu trúc thì đây chính là bài viết dành cho bạn.

Tìm hiểu thêm:

  • 5 ngôn ngữ lập trình hướng đối tượng phổ biến nhất
  • 7 câu hỏi thường gặp trong phỏng vấn lập trình hướng đối tượng