Định nghĩa: Ngôn ngữ bắt buộc sử dụng một chuỗi câu lệnh để xác định cách đạt được mục tiêu nhất định. Những tuyên bố này được cho là thay đổi trạng thái của chương trình khi mỗi chương trình được thực hiện lần lượt.
Ví dụ: Java là ngôn ngữ bắt buộc. Ví dụ: một chương trình có thể được tạo để thêm một chuỗi số:
int total = 0;
int number1 = 5;
int number2 = 10;
int number3 = 15;
total = number1 + number2 + number3;
Mỗi câu lệnh sẽ thay đổi trạng thái của chương trình, từ việc gán giá trị cho từng biến để bổ sung cuối cùng các giá trị đó. Sử dụng một chuỗi gồm năm câu lệnh, chương trình được cho biết rõ ràng cách thêm các số 5, 10 và 15 lại với nhau.
Ngôn ngữ chức năng: Mô hình lập trình chức năng được tạo rõ ràng để hỗ trợ phương pháp tiếp cận chức năng thuần túy để giải quyết vấn đề. Lập trình hàm là một dạng lập trình khai báo.
Ưu điểm của hàm thuần túy: Lý do chính để thực hiện phép biến đổi chức năng là hàm thuần túy là hàm thuần túy có thể tổng hợp được: đó là, độc lập và không trạng thái. Những đặc điểm này mang lại một số lợi ích, bao gồm: Tăng khả năng đọc và bảo trì. Điều này là do mỗi hàm được thiết kế để hoàn thành một nhiệm vụ cụ thể cho các đối số của nó. Hàm này không phụ thuộc vào bất kỳ trạng thái bên ngoài nào.
Phát triển lặp lại dễ dàng hơn. Bởi vì mã dễ dàng hơn để cấu trúc lại, các thay đổi về thiết kế thường dễ thực hiện hơn. Ví dụ, giả sử bạn viết một phép biến đổi phức tạp, và sau đó nhận ra rằng một số mã được lặp lại nhiều lần trong phép biến đổi. Nếu bạn refactor thông qua một phương pháp thuần túy, bạn có thể gọi phương pháp tinh khiết của bạn theo ý muốn mà không đáng lo ngại về tác dụng phụ.
Kiểm tra và gỡ lỗi dễ dàng hơn. Bởi vì các hàm thuần túy có thể dễ dàng được kiểm tra trong sự cô lập, bạn có thể viết mã thử nghiệm gọi hàm thuần túy với các giá trị điển hình, các trường hợp cạnh hợp lệ và các trường hợp cạnh không hợp lệ.
Đối với nhân dân OOP hoặc ngôn ngữ bắt buộc:
hướng đối tượng ngôn ngữ là tốt khi bạn có một tập cố định các hoạt động vào những thứ và như mã của bạn phát triển, bạn chủ yếu thêm những điều mới mẻ. Điều này có thể được thực hiện bằng cách thêm các lớp mới thực hiện các phương thức hiện có và các lớp hiện có được để lại một mình.
Ngôn ngữ chức năng là tốt khi bạn có bộ công cụ cố định và khi mã của bạn phát triển, bạn chủ yếu thêm hoạt động mới vào những thứ hiện có. Điều này có thể được thực hiện bằng cách thêm các hàm mới tính toán với các kiểu dữ liệu hiện có và các hàm hiện có được để lại một mình.
Nhược điểm:
Nó phụ thuộc vào yêu cầu sử dụng để lựa chọn con đường lập trình, do đó thiệt hại chỉ khi người dùng không chọn con đường đúng đắn.
Khi tiến hóa đi một cách sai lầm, bạn có vấn đề:
- Thêm một hoạt động mới cho một chương trình hướng đối tượng có thể yêu cầu chỉnh sửa nhiều định nghĩa lớp để thêm một phương pháp mới
- Thêm một loại mới của điều đến một chương trình chức năng có thể yêu cầu chỉnh sửa nhiều định nghĩa hàm để thêm một trường hợp mới.
có thể trùng lặp của [Lập trình chức năng và lập trình hướng đối tượng] (http://stackoverflow.com/questions/2078978/functional-programming-vs-object-oriented-programming) –
kiểm tra [bài đăng khác này ] [1]. Nó mô tả rõ ràng sự khác biệt. [1]: http://stackoverflow.com/questions/602444/what-is-functional-declarative-and-imperative-programming – theta