Cuốn sách có thể truy cập về lập trình chức năng [đã đóng]


17

Tôi đang tìm một cuốn sách giải thích lập trình chức năng theo cách dễ tiếp cận. Ngoài ra, tôi thích một ngôn ngữ không quá buồn tẻ và không sử dụng ngôn ngữ bí truyền.

Lý tưởng nhất là nó sẽ sử dụng các ví dụ chứng minh các tình huống trong đó lập trình chức năng dẫn đến các giải pháp thanh lịch hoặc đơn giản hơn so với các phương pháp bắt buộc.

Tôi có một lượng kinh nghiệm lập trình hợp lý, nhưng không có kiến ​​thức về lập trình chức năng. Cảm ơn vì những gợi ý


3
Tôi tò mò liệu có một ngôn ngữ cụ thể mà bạn có trong đầu khi bạn nói rằng bạn không muốn sử dụng "ngôn ngữ bí truyền".
MatrixFrog

@MatrixFrog: Tôi chắc chắn 99% rằng bằng "ngôn ngữ bí truyền", ý anh ấy là Scheme. Ông có lẽ đã nhận thức được rằng SICP sẽ là cuốn sách đầu tiên được đề xuất.
dùng16764

@ user16764 Nhưng "có thể truy cập"? Đó sẽ là Cách thiết kế chương trình (hoặc tái bản lần 2 ) dựa trên cơ sở lý luận được đưa ra bởi tác giả trong Cấu trúc và diễn giải của chương trình giảng dạy khoa học máy tính .
Đánh dấu C

Câu trả lời:


13

Tôi sẽ sugest bắt đầu với " The Little Schemer " (và có lẽ là " The Scheded Schuler " sau đó).

Nếu bạn nghĩ Scheme quá bí truyền hoặc nếu bạn thích Javascript, Douglas Crockford đã dịch nhiều bài tập sang Javascript: http://javascript.crockford.com/little.html

Nếu bạn thích C #, " Lập trình chức năng trong thế giới thực " của Tomas Petricek sẽ là một nơi tuyệt vời để bắt đầu. Nó cũng phục vụ như là một giới thiệu tốt đẹp về F #.


10

Nếu bạn thích Ngôn ngữ được nhập tĩnh và [Chân đế]:

Haskell trong khi khá nặng về sự thuần khiết của mô hình lập trình, có một trong những lời giới thiệu tốt nhất về ngôn ngữ mà tôi đã thấy dưới dạng "Học cho bạn một Haskell vì điều tốt!". Hình thức sách là tùy chọn vì trang web này miễn phí nhưng đây là một tác giả mà tôi không cảm thấy bị áp đảo. Real World Haskell là tốt nhưng thực sự tốt hơn là được theo dõi để [Tìm hiểu .. Tốt]. RWH cũng miễn phí với lòng tốt papery tùy chọn.

Từ Haskell, bạn có thể dễ dàng chuyển đổi sang các biến thể ML khác như F # hoặc OCaml cả hai đều được sử dụng rộng rãi hơn. Đối với ATS cạnh chảy máu .

Nếu bạn thích (và Dynamic_Typing ngoặc đơn):

Lược đồ là định hướng chức năng hơn của hai phương ngữ Lisp chính, nhỏ hơn và tinh khiết hơn so với Lisp thông thường nhưng ít được sử dụng rộng rãi trong công nghiệp. Cá nhân tôi thích Cấu trúc và diễn giải các chương trình máy tính nhưng nó là một cuốn sách khá nặng về lý thuyết, rằng một chút khó nuốt sẽ giúp bạn trở thành một lập trình viên giỏi hơn.

Nếu bạn muốn Common Lisp hoặc thực hành Common Lisp hoặc đất của Lisp có vẻ như các khoản đầu tư tốt, đầu tiên là miễn phí trực tuyến và thứ hai là khá rẻ và quan trọng hơn (đối với một số) trò chơi tập trung. Nó mạnh hơn mặc dù kém tinh khiết hơn Scheme.

Từ những thứ này, bạn có thể mở rộng thành Clojure nếu muốn. Đó là Lisp cho JVM, do đó, việc triển khai dễ dàng hơn và có khả năng bảo vệ tốt hơn trước các cáo buộc "hàn lâm" Clojure có thể triển khai sang .NET và cũng chuyển sang Javascript. Đối với .NET gốc, hãy thử IronScheme .

Bạn cũng có thể phân chia sự khác biệt và tìm hiểu cả hai loại cùng một lúc với Write Yourself a Scheme trong 48 giờ trong Haskell.


Nếu bạn đi với SICP cũng có rất nhiều bài giảng video trên cuốn sách, nổi tiếng nhất là: Groups.csail.mit.edu/mac/groupes/6.001/abelson-sussman-lectures Paul Graham là một nhà văn giỏi và có một cuốn sách miễn phí về tại sao lisp là đầu gối của con ong paulgraham.com/onlisptext.html
simoraman

1
Tôi đang đọc phiên bản trực tuyến miễn phí của Real World Haskell và khả năng đọc các bình luận trong khi đọc văn bản là vô cùng hữu ích. Vì vậy, ngay cả khi bạn có phiên bản giấy, bạn cũng có thể muốn đọc phiên bản trực tuyến. Một số phần chỉ là cách ít gây nhầm lẫn với các ý kiến.
MatrixFrog

4

Nguồn yêu thích của tôi là Giới thiệu nhẹ nhàng về Haskell . Tôi đã đọc một phần của Tìm hiểu về bạn một Haskell và O'Reilly Real-World Haskell và Simon Thompson's Lập trình chức năng , nhưng tôi thực sự đang làm tốt hơn với phần giới thiệu nhẹ nhàng. Nó giống như K & R của Haskell: một tài liệu mỏng được tạo ra bởi những người tạo ra ngôn ngữ. Không dài dòng, không bảo trợ, nhưng cũng không cố gắng áp đảo bạn bằng sự uyên bác của họ.


1
Các Gentle Giới thiệu là rất trực tiếp và không vô nghĩa, giống như một cú đấm vững chắc để dạ dày. Đó là nhẹ nhàng theo nghĩa là nó thực hiện bạo lực mà không có ác ý, tìm kiếm không để mã hóa cũng không để thống trị; đúng hơn, với hy vọng rằng người đọc có thể đến để khám phá sức mạnh bên trong cần thiết để chống lại.
CA McCann

1
Hmm, sensei, không chắc tôi sẽ sử dụng hình ảnh đó, nhưng bất cứ điều gì. Nó không phải là bạo lực cũng không phải là một vấn đề nội tâm, nhưng tôi sẽ đồng ý với phần còn lại. "Nhẹ nhàng" là một chút hài hước ở đây. Giống như "đề nghị khiêm tốn".
JohnL4

1
Vâng, tôi đã lấy một số ... tự do sáng tạo nhỏ ở đó. ;] Tuy nhiên, phải mất một chút sức mạnh tinh thần để vượt qua một thứ gì đó quá cùn so với các tài liệu giới thiệu khác trong những ngày này (đối với bất kỳ ngôn ngữ nào, không chỉ Haskell). Mặc dù vậy, việc so sánh với K & R khiến tôi nghĩ rằng bạn đã quen với kiểu phong cách đó. Tôi thường cho rằng "nhẹ nhàng" có nghĩa là trái ngược với việc học từ Báo cáo Haskell và một đống tài liệu nghiên cứu.
CA McCann

1

http://hop.perl.plover.com/ bao gồm một cuốn sách mà bạn có thể tải xuống miễn phí. Nó giải thích cách sử dụng nhiều kỹ thuật chức năng trong Perl.

Hầu hết những gì nó nói có thể rất dễ dàng được dịch sang JavaScript, Ruby hoặc Python.


1

Tôi hiện đang học lập trình chức năng. Tuy nhiên tôi đang học sử dụng Haskell.

Dưới đây là một vài cuốn sách trực tuyến (bạn cũng có thể mua chúng trong bìa cứng iirc)

Haskell không esteroic và đang trở nên chính thống hơn (sở hữu không phải là chính thống như LISP hoặc Erlang). Tuy nhiên, đây là một ngôn ngữ chức năng thuần túy và sẽ buộc bạn phải học mô hình lập trình chức năng. Trái ngược với một cách tiếp cận chức năng nửa bắt buộc mà bạn sẽ nhận được bằng cách sử dụng một ngôn ngữ không thuần túy chức năng.

Mọi người đã phát triển WebServers, Bittorrent Client và một vài ứng dụng trong thế giới thực bằng haskell. Tuy nhiên, cá nhân tôi đang sử dụng nó để tìm hiểu các khái niệm và sau đó áp dụng điều đó cho C # & F # đang hoạt động tuyệt vời cho đến nay.

Thưởng thức.


1

Tôi đã nghe những điều hay về "Cấu trúc và diễn giải các chương trình máy tính" nhiều lần. Đây là một cuốn sách thực sự, vì vậy bạn cũng có thể muốn nhận nó trong Paper, xem http://www.amazon.co.uk/Str struct -Interpretation-Computer-Electric-Engineering/dp/0262510871 .

Nó có sẵn miễn phí tại đây http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ) và thậm chí còn có video về các bài giảng ( http: //groups.csail.mit.edu/mac/groupes/6.001/abelson-sussman-lectures/ )


SICP là tốt, nhưng không thể truy cập theo kinh nghiệm của tôi.
willem

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.