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 phương trình Pythagore nổi tiếng từ trường học, trong đó các chiều dài các cạnh của một tam giác có liên quan:x2+ y2= z2Nếu tôi cung cấp cho bạn giá trị cho các biến x và y, nói rằng x = 3 và 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ị đã được sửa đổi không bao giờ. Nó sẽ làđiên để nói 3 c++, nhưng bạn có thể bắt đầu lên bởi gán cho các biến cùng một số giá trị mới.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ó. Trong Java, chúng tôi sẽ sử dụng cuối cùng để ngăn cấm««biến giải, 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 chođa luồng 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 đó, nhiều luồng 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..