thể trùng lặp:
Why functional languages?Lợi ích và công dụng của một ngôn ngữ lập trình chức năng
tôi bắt đầu lập trình với C/C++, VB, và cuối cùng Python - tất cả các ngôn ngữ bắt buộc. Tôi đã học một khóa học về ngôn ngữ lập trình và học ngôn ngữ chức năng đầu tiên của tôi - OCaml. Điều đó thật tồi tệ.
Cú pháp và những nỗi kinh hoàng khác sang một bên, OCaml lấy quy trình suy nghĩ bắt buộc của tôi và ném nó ra ngoài cửa sổ. Đó là bực bội. Tôi nhấn mạnh rằng mọi thứ có thể được thực hiện chức năng cũng có thể được thực hiện một cách bất hợp pháp. Tôi nghĩ về lập trình chức năng như lập trình bắt buộc mà không có chi (tác dụng phụ). Để đáp lại sự thất vọng của tôi, lợi ích duy nhất mà giáo sư của tôi có thể đưa ra là khả năng của FPL để song song các chức năng không có tác dụng phụ.
Dù sao, hãy nói đủ.
- Một số lợi thế mà FPL cung cấp ở trên IPL là gì?
- Có điều gì có thể dễ dàng thực hiện trong FPL không thể thực hiện dễ dàng trong IPL không?
- Có bất kỳ ví dụ thực tế về FPL nào đang được sử dụng hay chúng chủ yếu là các bài tập học thuật? (Khi tôi nói thế giới thực, tôi có nghĩa là một dự án phụ thuộc rất nhiều vào khía cạnh chức năng của ngôn ngữ và không nhồi nhét FPL vào một kịch bản mà nó không thuộc về).
Cảm ơn,
Advait
Chủ yếu là lặp lại: http://stackoverflow.com/questions/36504/ Tại sao-chức năng-ngôn ngữ –
Chỉ cần một gợi ý ngắn gọn: một ngôn ngữ OO 'ngăn chặn' bạn truy cập vào tất cả các biến, ẩn chúng đằng sau abstractions. Điều này giúp bạn kiểm soát sự phức tạp. Tương tự như vậy, một FP ngăn cản bạn thao tác trạng thái chia sẻ, và do đó giúp bạn viết mã song song, trong số những thứ khác. –
Tôi thấy bài đăng đó và nhận thấy cách mọi người đề cập đến sự song song dễ dàng. Tôi đã không thực sự hài lòng với bất kỳ câu trả lời nào. Tôi cảm thấy rằng việc song song các lời gọi hàm chuẩn sẽ không cung cấp nhiều lợi ích hiệu năng hơn cho phép lập trình viên song song một cách rõ ràng mã của riêng mình (đặc biệt là vì chi phí của việc bắt đầu một chuỗi mới để thực hiện một hàm có tầm thường là khá lớn). Khi lựa chọn được để lại cho lập trình viên (khi nào/những gì để song song), anh/cô ấy được tự do nhất - lợi ích hiệu suất của song song mà không có nạng của một FPL. – advait