Helpex - Trao đổi & giúp đỡ Đăng nhập
61

Tôi đang tìm cách nắm bắt các khái niệm lập trình hàm.

Tôi đã sử dụng Javascript trong nhiều năm để viết kịch bản phía máy khách trong các ứng dụng web và ngoài việc sử dụng các nguyên mẫu, tất cả chỉ là thao tác DOM đơn giản, xác nhận đầu vào, v.v.

Cuối cùng, tôi thường đọc rằng Javascript là một trong những ngôn ngữ hỗ trợ lập trình chức năng.

Với sự quen thuộc và kinh nghiệm của tôi với Javascript, sở thích của tôi là sử dụng nó để học lập trình hàm. Tôi hy vọng mình sẽ có thể tập trung hơn vào các khái niệm chức năng chính và không bị sa lầy hoặc bị phân tâm bởi một cú pháp hoàn toàn mới.

Vậy tóm lại, Javascript có phải là một lựa chọn tốt để học các khái niệm lập trình hàm không? Những khả năng nào trong Javascript có liên quan / hỗ trợ lập trình chức năng?

61 hữu ích 1 bình luận 18k xem chia sẻ
43
43 hữu ích 1 bình luận chia sẻ
9

Javascript thứ tự cao hơn là một cách tuyệt vời để làm quen với các khía cạnh chức năng của javascript. Đây cũng là một bài đọc tương đối ngắn trong trường hợp bạn muốn chân ướt chân ráo mà không tìm hiểu kỹ một cuốn sách lớn hơn.

9 hữu ích 0 bình luận chia sẻ
6

Tôi muốn nói rằng mặc dù bạn có thể nhanh chóng nắm bắt một số khái niệm lập trình hàm với JavaScript, nhưng việc sử dụng JavaScript một cách nhất quán như một ngôn ngữ lập trình hàm không phải là một thực tế phổ biến. Ít nhất là không rõ ràng là phổ biến. Hầu hết mọi người không đăng các hướng dẫn xác định cách lập trình chức năng với JavaScript - một marxidad đã chỉ ra thực sự là một ví dụ khá hay, nhưng bạn sẽ không tìm thấy nhiều điều đó. Các khía cạnh chức năng thường không rõ ràng, giống như khi mọi người sử dụng các bao đóng trong JavaScript, nhưng không biết rằng họ đang làm điều đó.

Ý tưởng rằng bạn sẽ chuyển hai hàm dưới dạng đối số cho một hàm thứ ba và sau đó để giá trị trả về là một số thực thi liên quan đến hai hàm đầu tiên là một kỹ thuật nâng cao hầu như luôn chỉ xuất hiện trong lõi của các thư viện đầy đủ như jQuery . Việc tự thực hiện các chức năng ẩn danh và những chức năng tương tự đã được cải thiện, nhưng vẫn không được sử dụng một cách nhất quán. Phần lớn các hướng dẫn thường tập trung vào các khả năng OO của JavaScript, như cách tạo thuộc tính và phương thức, phạm vi, kiểm soát truy cập và cả cách sử dụng thuộc tính nguyên mẫu của các hàm tạo. Thành thật mà nói, nếu lập trình chức năng là những gì bạn muốn, thì tôi sẽ chọn một ngôn ngữ được biết đến nghiêm ngặt cho khả năng này.

6 hữu ích 1 bình luận chia sẻ
6

Tôi không nhớ ai đã nói điều đó, nhưng javascript đã được gọi là "Đề án với cú pháp Algol". Vì vậy, để học Scheme / Lisp, Javascript không phải là một khởi đầu tồi. Lưu ý rằng các ngôn ngữ chức năng như Lisp hoàn toàn khác với các ngôn ngữ chức năng thuần túy, chẳng hạn như Haskell.

Ngoài "các hàm hạng nhất" (Có nghĩa là các hàm là các giá trị, có thể được gán cho các biến), phạm vi từ vựng cũng là một phần vốn có của những gì tạo nên một ngôn ngữ hàm.

Javascript thứ tự cao hơnJavascripter nhỏ đã được đề cập đến. Cả hai đều là những văn bản xuất sắc. Ngoài ra, Lập trình thứ tự cao hơn trong Javascript có thể là một khởi đầu dễ dàng hơn.

6 hữu ích 0 bình luận chia sẻ
6

Mặc dù javascript hỗ trợ FP ở một mức độ nào đó, nhưng nó không trực tiếp khuyến khích nó. Đó là lý do tại sao các dự án như Chức năng của Oliver Steele tồn tại, để lấp đầy những khoảng trống. Vì vậy, tôi sẽ không giới thiệu nó để học FP. Kiểm tra F # để thay thế.

6 hữu ích 0 bình luận chia sẻ
3

Tôi khuyên bạn nên đọc The Little Schemer , đây là một cuốn sách khá mỏng về đệ quy và là một giới thiệu tốt về kiểu hàm. Trong khi nó tập trung vào Đề án, nó có thể dễ dàng được áp dụng cho JavaScript, hãy xem http://javascript.crockford.com/little.html . Tôi thấy nó thực sự hữu ích trong quá trình phát triển javascript của tôi, mặc dù nó khá phức tạp về cuối.

3 hữu ích 0 bình luận chia sẻ
2

Javascript là một ngôn ngữ đa mô hình. Nếu mục tiêu của bạn là học các khái niệm ngôn ngữ chức năng, hãy thử bắt đầu với một ngôn ngữ chức năng thuần túy như OCaml hoặc Haskell .

2 hữu ích 2 bình luận chia sẻ
2
2 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript functional-programming language-features , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading