Hôm nay chúng ta sẽ chạm vào lập trình chức năng. Cụ thể hơn, chúng ta sẽ xem xét sự khác biệt giữa lập trình khai báo và mệnh lệnh.

Đầu tiên, chúng ta hãy nhanh chóng đi qua các điều khoản. Sau đó, chúng ta sẽ so sánh các phong cách lập trình này và xem chúng xuất hiện như thế nào trong Java và liệu ngôn ngữ này có hỗ trợ sự cùng tồn tại vui vẻ của chúng hay không.

Lập trình hàm là một mô hình trong đó các hàm được hiểu là hàm toán học, không phải là chương trình con, như trong lập trình thủ tục . Đó là, trong hai mô hình này diễn giải từ "chức năng" khác nhau. Hãy nhớ điều này và đừng nhầm lẫn chúng. Java không để bạn bị nhầm lẫn, vì các chương trình con được gọi là "phương thức", trong khi các hàm tham chiếu đến các hàm toán học (cũng như: hàm lambda hoặc tham chiếu phương thức).

Trong thực tế, trong lập trình thủ tục, các hàm không chỉ phụ thuộc vào các biến đầu vào mà còn phụ thuộc vào các yếu tố bên ngoài (chẳng hạn như các biến khác bên ngoài hàm hoặc trạng thái của hệ thống). Điều đó có nghĩa là gọi cùng một hàm với cùng đối số nhưng trong ngữ cảnh khác có thể tạo ra kết quả khác. Trong lập trình hàm, khi một hàm được gọi với các đối số giống nhau, nó luôn tạo ra cùng một kết quả, bởi vì các hàm chỉ phụ thuộc vào dữ liệu đầu vào.

Ưu điểm của lập trình chức năng

  • Cải thiện độ tin cậy của mã
  • Thử nghiệm đơn vị thuận tiện
  • Cơ hội để tối ưu hóa mã trong quá trình biên dịch
  • Cơ hội đồng thời

Nhược điểm của lập trình chức năng

Nhược điểm của lập trình chức năng bắt nguồn từ tất cả các tính năng giống nhau sau:

  • Không có câu lệnh gán. Thay vào đó, các giá trị mới được lưu trữ trong các biến mới, dẫn đến nhu cầu cấp phát liên tục và tự động giải phóng bộ nhớ. Do đó, việc thu gom rác hiệu quả cao là một phần thiết yếu của bất kỳ hệ thống nào thực thi các chương trình chức năng.

  • Đánh giá không nghiêm ngặt có nghĩa là thứ tự của các lời gọi hàm là không thể đoán trước, điều này tạo ra các vấn đề I/O khi thứ tự của các thao tác là quan trọng.

Điều đó kết thúc đánh giá nhanh chóng của chúng tôi về lập trình chức năng. Bây giờ hãy chuyển sang phong cách lập trình.

Lập trình mệnh lệnh là một mô hình lập trình được đặc trưng bởi các tính năng sau:

  • Mã nguồn của chương trình bao gồm các hướng dẫn (câu lệnh).

  • Các hướng dẫn phải được thực hiện tuần tự.

  • Dữ liệu được tạo bằng cách thực hiện các lệnh trước đó có thể được đọc từ bộ nhớ bằng các lệnh tiếp theo.

  • Dữ liệu thu được bằng cách thực hiện một lệnh có thể được ghi vào bộ nhớ.

Dưới đây là các tính năng chính của ngôn ngữ mệnh lệnh:

  • Sử dụng các biến boolean.
  • Sử dụng toán tử gán.
  • Sử dụng các biểu thức ghép.
  • Sử dụng chương trình con.

Một chương trình mệnh lệnh giống như các mệnh lệnh được diễn đạt theo tâm trạng mệnh lệnh trong các ngôn ngữ tự nhiên. Nói cách khác, một chương trình mệnh lệnh là một chuỗi các lệnh.

Các ngôn ngữ lập trình mệnh lệnh bao gồm C và C++.

Lập trình khai báo là một mô hình lập trình trong đó giải pháp cho một vấn đề được chỉ định. Đó là, kết quả cuối cùng được mô tả, không phải là cách để đạt được nó. HTML là một ví dụ về ngôn ngữ khai báo. Khi viết thẻ bằng ngôn ngữ này, chúng tôi không nghĩ về cách các yếu tố sẽ được vẽ trên trang. Chúng tôi chỉ mô tả trang sẽ trông như thế nào.

Một ngôn ngữ lập trình khai báo khác là SQL.

Hãy so sánh hai phong cách lập trình bằng cách xem xét một ví dụ thực tế: làm thế nào để chúng ta giải thích cho một người cách đến một địa điểm nhất định?

Hãy tưởng tượng tình huống này: một người đàn ông đến gặp chúng tôi trên phố và hỏi: "Làm thế nào để tôi đến bảo tàng?"

Với cách tiếp cận bắt buộc, chúng tôi sẽ cung cấp cho anh ta thuật toán về cách đi bộ đến đó:

  • quay lại đây
  • đi bộ 2 khối theo một đường thẳng
  • quẹo sang bên phải

Với cách tiếp cận khai báo, chúng tôi chỉ cần cung cấp địa chỉ và sau đó người đó sẽ tự mình đến đúng địa điểm.

Java hiện là ngôn ngữ lập trình đa mô hình . Đa mô hình có nghĩa là ngôn ngữ hỗ trợ một số mô hình.

Trong quá trình phát triển lâu dài của mình, ngôn ngữ này đã mở rộng mô hình hướng đối tượng để người dùng có các công cụ khác nhau và có thể chọn công cụ tốt nhất cho nhiệm vụ cụ thể của họ.

Do đó, Java hiện hỗ trợ cả cách tiếp cận bắt buộc (chẳng hạn như viết mã cho các lệnh gọi phương thức) và cách tiếp cận khai báo (chẳng hạn như các chú thích có sẵn khi chạy).

Hãy tóm tắt:

  • Có nhiều mô hình lập trình khác nhau.

  • Có những cách tiếp cận tuyên bố và bắt buộc.

  • Bạn nên chọn một cái phù hợp nhất cho nhiệm vụ hiện tại.

  • Java là một ngôn ngữ đa mô hình hỗ trợ cả hai cách tiếp cận.