Với tất cả sự cường điệu xung quanh lập trình chức năng, đó là những nguồn lực tốt nhất để bắt đầu lập trình chức năng [cho lập trình viên C#]? Tôi không tìm kiếm các cải tiến ngôn ngữ C# 3.0.Tôi có thể bắt đầu với chương trình chức năng bằng cách nào?
Trả lời
Tôi nghĩ đối với nhà phát triển C# với nền .NET, cách tốt nhất để tham gia lập trình hàm là học F #.
Tôi đã học lập trình chức năng ở trường đại học, sử dụng ngôn ngữ Haskell.
Trong trang chủ, rất có thể bạn sẽ tìm thấy những gì bạn cần để bắt đầu :)
BTW, phải mất nhiều thực hành để xem giải pháp; các thuật toán, như vậy, không phải là những gì mọi người sử dụng để mã hóa trong các ngôn ngữ hướng đối tượng, logic hoặc thủ tục.
Dành thời gian xem Lisp hoặc Scheme vì họ là cha mẹ của lập trình chức năng. PLT Scheme là một môi trường tuyệt vời để chơi với Đề án. Tự mình lấy một bản sao của The Little Schemer vì đây là một giới thiệu tốt về Đề án và sẽ giúp bạn bắt kịp tốc độ khá nhanh.
Khi bạn đã chuẩn bị xong chức năng của mình, hãy thực hiện một số sự cố Project Euler theo cách chức năng.
Chọn ngôn ngữ chức năng. Python có nhiều tính năng chức năng. Haskell hoàn toàn là chức năng.
Đi tới Project Euler.
Giải quyết một số sự cố.
Nếu bạn nhìn vào Project Euler stats, Python và Haskell được xếp hạng rất cao.
Sửa
lập trình chức năng bằng Python:
- http://www.ibm.com/developerworks/library/l-prog.html
- http://www.amk.ca/python/writing/functional
- http://linuxgazette.net/109/pramode.html
- http://www.slideshare.net/adambyrtek/functional-programming-with-python-516744
- http://scott.andstuff.org/FunctionalPython
- http://docs.python.org/tutorial/datastructures.html#functional-programming-tools
- http://www.freenetpages.co.uk/hp/alan.gauld/tutfctnl.htm
+1 mặc dù trình cắm Python (là nó KHÔNG hoạt động như vậy :)) –
@OJ: Đã thêm tham chiếu từ những người có vẻ nghĩ rằng Python không hỗ trợ lập trình chức năng. –
Đồng ý, Python không phải là ngôn ngữ lập trình hàm, nhưng nó có các tính năng chức năng. Đây là một bài cũ, và tôi đánh giá cao rằng S.Lott đã viết một cuốn sách về chủ đề này. Tuy nhiên, không có thư viện chức năng của bên thứ ba defacto cho Python đã được viết mà tôi thấy hơi thất vọng. Chắc chắn đã có những nỗ lực và đóng góp khác nhau nhưng không có gì đã giữ trong cùng một cách như nói JS thư viện cho EcmaScript vv. – arcseldon
Tôi đồng ý với Mehrdad Afshari. Nếu bạn đã quen thuộc với C# bắt đầu lập trình hàm với F #. Cú pháp tương tự với các biểu thức lambda trong C#.
Plugin không biết xấu hổ: Tôi là đồng tác giả (biên tập viên tuyệt vời, thực sự :) của Real World Functional Programming. Nó nhắm vào những người như chính bạn. Nó dạy các nguyên tắc lập trình hàm, chủ yếu thông qua F #, và cũng cho thấy cách bạn có thể áp dụng cùng nguyên tắc trong nhiều trường hợp trong C#.
Giả sử bạn đã biết C# rồi, nhưng giới thiệu F # từ đầu.Nó cung cấp cho bạn đủ kiến thức về F # để giúp bạn bắt đầu để bạn có thể thử nghiệm, nhưng mục đích là dạy một cách suy nghĩ chức năng hơn là đi vào mọi ngóc ngách của F # như một ngôn ngữ. (Nói cách khác, nếu bạn muốn bắt đầu sử dụng F # làm ngôn ngữ sản xuất, tôi cũng sẽ nhận được một cuốn sách khác cũng như.)
Chưa có, nhưng bạn có thể truy cập sớm qua chương trình MEAP. Một số chương có sẵn, với nhiều hơn đến sớm.
Bất kỳ đề xuất cho các nguồn lực khác cho đến khi phiên bản gỗ chết của cuốn sách đó phát hành? – suhair
Nếu bạn quan tâm đến gỗ chết thay vì ebook, có hai cuốn sách Apress F #: Nền tảng của F # (Robert Pickering) và Chuyên gia F # (Don Symes) –
Tôi chỉ đọc phần miễn phí này từ trang Manning - những thứ rất thú vị và được viết tốt. Một điều nhỏ: Trang 16 có "Mã đầu tiên tạo danh sách tạm thời để lưu trữ tất cả các ký tự đã chết" - có thể thực hiện với chỉnh sửa Jon! –
Phiên bản trực tuyến miễn phí của Real World Haskell là cách tốt, rẻ tiền để bắt đầu.
Khi bạn đã thực hiện một vài chương, bạn sẽ ở vị trí để quyết định xem FP có dành cho bạn hay không và bạn có muốn tiếp tục với Haskell hoặc chuyển sang một số ngôn ngữ khác không. Bạn thậm chí có thể tiếp tục mua phiên bản cây chết (như tôi đã làm).
Các mô hình bạn học được từ cuốn sách này, đặc biệt là các chương mở, áp dụng tốt cho các ngôn ngữ chức năng khác. (Tôi thích nghĩ rằng Javascript và Groovy của tôi được hưởng lợi từ nghiên cứu của tôi Haskell).
Tôi đã thích learn you a haskell cho đến nay, nó khá tốt cho người mới bắt đầu.
- 1. Chức năng nên bắt đầu bằng "Nhận"?
- 2. chương trình Python bắt đầu
- 3. Làm cách nào để tạo menu trong menu bắt đầu cho chương trình của tôi?
- 4. Tôi có thể gọi trang web java bắt đầu trong chương trình không?
- 5. Tôi có thể bắt đầu với Perl 6 bằng cách nào?
- 6. Nếu TeX là ngôn ngữ lập trình, tôi có thể bắt đầu lập trình bằng TeX như thế nào?
- 7. Tôi có thể học lập trình DirectShow bằng cách nào?
- 8. Tôi bắt đầu học chương trình bot ở đâu?
- 9. visual studio 2010 không thể bắt đầu chương trình .dll
- 10. URL có thể bắt đầu bằng "//" không?
- 11. có thể viết chương trình in mã nguồn riêng của mình bằng cách sử dụng "chức năng tạo chuỗi"
- 12. Các chương trình bằng các ngôn ngữ chức năng có nhiều khả năng có tràn ngăn xếp hơn không?
- 13. Chức năng ngủ trong chương trình android
- 14. Lập trình chức năng có phải là một tập hợp con của chương trình bắt buộc không?
- 15. Tôi có thể bắt đầu và kiểm tra nhật ký MySQL của mình bằng cách nào?
- 16. Làm thế nào tôi có thể bắt đầu màn hình thông tin ứng dụng Android theo chương trình?
- 17. Trong python, tôi có thể chuyển hướng đầu ra của chức năng in tới stderr không?
- 18. Tôi có thể thực hiện chức năng tẩy trong SVG bằng cách nào?
- 19. Làm cách nào để tôi có thể lập cấu hình chương trình đa luồng bằng Python?
- 20. Tôi có thể tham chiếu đến chương trình con Perl bằng cách nào?
- 21. Tôi có thể gọi chương trình python từ VBA bằng cách nào?
- 22. Làm cách nào để bắt đầu chương trình Java của tôi với nhiều hơn một tác nhân java?
- 23. trong C++ chức năng chính là điểm vào chương trình làm thế nào tôi có thể thay đổi nó sang một chức năng khác?
- 24. Làm cách nào để chương trình của tôi có thể hoàn thành tab?
- 25. Bắt đầu chương trình mặc định trong OSX theo chương trình
- 26. Làm thế nào tôi có thể thêm mẫu bắt đầu bằng băm vào gitignore
- 27. Không thể chạy chương trình java có chức năng php exec
- 28. Làm cách nào tôi có thể buộc tìm kiếm theo chương trình trong UISearchBar?
- 29. Bắt đầu Qt GUI từ dll (trong chức năng DLLStart)
Cuối cùng tôi đã có đủ động lực để thử F # thay vì Haskell. Cảm ơn – suhair