Tất cả các ngôn ngữ lập trình không có chức năng? Nếu vậy, tại sao không phải là tất cả lập trìnhngôn ngữ được coi là ngôn ngữ hàm? Ngôn ngữ chức năng chia sẻ một vài cơ bảnnguyên tắc.Tránh Mutable nhà nướcNguyên tắc đầu tiên là việc sử dụng các giá trị không thay đổi. Bạn có thể nhớ lại các trường học equationfrom nổi tiếng Pytago, liên quan đến chiều dài của các cạnh của một tam giác:x2+ y2= z2Nếu tôi cung cấp cho bạn valuesfor y xand biến, nói rằng x = 3and y = 4, bạn có thể tính toán giá trịcho z (5 in trường hợp này). Ý tưởng quan trọng ở đây là giá trị là nevermodified. Nó sẽ làđiên để nói 3 c++, nhưng bạn có thể bắt đầu lên bởi gán newvalues để các samevariables.Hầu hết các ngôn ngữ lập trình không thực hiện một sự phân biệt rõ ràng giữa một giá trị (tức là, cácnội dung của bộ nhớ) và một biến đề cập đến nó. Java, chúng tôi sẽ sử dụng finalto Cấmvariablereassignment, do đó, chúng tôi nhận được các đối tượng có giá trị không thay đổi.Tại sao chúng tôi nên tránh đột giá trị? Trước tiên, cho phép các mutable giá trị là những gì làm chomultithreaded lập trình khó khăn như vậy. Nếu nhiều chủ đề có thể thay đổi như vậygiá trị được chia sẻ, bạn phải đồng bộ hoá truy cập tới giá trị đó. Điều này là khá tẻ nhạt vàdễ bị lỗi lập trình rằng ngay cả các chuyên gia tìm thấy khó khăn [Goetz2006]. Nếu bạnlàm cho một giá trị không thay đổi, vấn đề đồng bộ hóa biến mất. Đồng thời đọclà vô hại, do đó, multithreaded lập trình trở nên xa dễ dàng hơn.Một lợi ích thứ hai của không thay đổi giá trị liên quan đến chương trình đúng đắn theo những cách khác. Nólà khó khăn hơn để hiểu và exhaustively kiểm tra mã với giá trị mutable, đặc biệt là nếuđột biến không phải là địa phương đến một nơi. Một số các lỗi khó khăn nhất để tìm thấy trong lớnHệ thống xảy ra khi nhà nước sửa đổi phòng không-tại địa phương, theo mã khách hàng được đặt ở những nơi khác trong chương trình.
đang được dịch, vui lòng đợi..