Dostępna książka o programowaniu funkcjonalnym [zamknięte]


17

Szukam książki wyjaśniającej programowanie funkcjonalne w przystępny sposób. Wolałbym też taki, który nie jest zbyt nudny i nie używa ezoterycznego języka.

Idealnie wykorzysta przykłady pokazujące sytuacje, w których programowanie funkcjonalne prowadzi do bardziej eleganckich lub prostszych rozwiązań niż podejście imperatywne.

Mam rozsądne doświadczenie w programowaniu, ale nie znam wiedzy na temat programowania funkcjonalnego. Dziękuję za wszelkie sugestie


3
Jestem ciekawy, czy był jakiś konkretny język, który miałeś na myśli, mówiąc, że nie chcesz używać „języka ezoterycznego”.
MatrixFrog,

@MatrixFrog: Jestem w 99% pewien, że przez „język ezoteryczny” miał na myśli Scheme. Prawdopodobnie był świadomy, że SICP będzie pierwszą zalecaną książką.
user16764

@ user16764 Ale „dostępny”? Byłby to How To Design Programs (lub 2nd ed. ) Na podstawie uzasadnienia podanego przez autora (autorów) w Strukturze i interpretacji programu nauczania informatyki .
Mark C

Odpowiedzi:



10

Jeśli podoba Ci się język statyczny i [nawiasy]:

Haskell, choć dość ciężki w kwestii paradygmatu programistycznego, ma jedno z najlepszych wstępów do języka, jaki widziałem w formie „Learn You a Haskell For Great Good!”. Formularz książki jest opcjonalny, ponieważ strona jest bezpłatna, ale jest to jeden autor, którego nie czułem wcale. Real World Haskell jest dobry, ale tak naprawdę lepiej go traktować jako kontynuację [Learn..Good]. RWH jest również bezpłatny z opcjonalnym dobrodziejstwem papieru.

Z Haskell możesz łatwo przejść do innych wariantów ML, takich jak F # lub OCaml, z których oba są bardziej rozpowszechnione. Dla krwawiącej ATS .

Jeśli chcesz (i nawiasy Dynamic_Typing):

Schemat jest bardziej funkcjonalnie zorientowany z dwóch głównych dialektów Lisp, mniejszych i czystszych niż Common Lisp, ale rzadziej stosowanych w przemyśle. Osobiście podoba mi się struktura i interpretacja programów komputerowych, ale jest to dość ciężka teoria, która, choć nieco trudna do przełknięcia, uczyni cię lepszym programistą.

Jeśli wolisz Common Lisp albo Practical Common Lisp lub Land of Lisp wydają się być dobrą inwestycją, pierwsza jest darmowa online, a druga jest dość tania i, co ważniejsze (dla niektórych) skoncentrowana na grze. Jest mocniejszy, choć mniej czysty niż Scheme.

Z nich możesz rozwinąć się w Clojure, jeśli chcesz. Jest to Lisp dla JVM, więc łatwiej jest go wdrożyć i lepiej być w stanie obronić się przed zarzutami bycia „akademickim” Clojure może wdrożyć na .NET i przejść również na Javascript. W przypadku macierzystej platformy .NET wypróbuj IronScheme .

Możesz także podzielić różnicę i nauczyć się obu rodzajów naraz dzięki programowi Write Your a Scheme w 48 godzin w Haskell.


Jeśli wybierzesz SICP, w książce jest również wiele wykładów wideo, z których najbardziej znane to: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Paul Graham jest dobrym pisarzem i ma darmową książkę o dlaczego seplenienie to kolana pszczoły paulgraham.com/onlisptext.html
simoraman

1
Czytam darmową wersję internetową Real World Haskell, a możliwość czytania komentarzy podczas czytania tekstu jest niezwykle pomocna. Więc nawet jeśli dostaniesz wersję papierową, możesz również przeczytać wersję online. Niektóre części są po prostu mniej mylące z komentarzami.
MatrixFrog,

4

Moje ulubione źródło to Delikatne wprowadzenie do Haskell . Przeczytałem część „ Naucz się Haskella” i „ Prawdziwy świat O'Reilly Haskell” i Simona Thompsona „ Craft of Functional Programming” , ale szczerze mówiąc, lepiej sobie radzę z łagodnym wprowadzeniem. To trochę jak K&R Haskella: cienki dokument stworzony przez twórców języka. Nie pracowity, nie protekcjonalny, ale nie próbujący przytłoczyć cię swoją erudycją.


1
Delikatna Wstęp jest bardzo bezpośredni i no-nonsense, podobnie jak mocnym ciosem w brzuch. Jest łagodny w tym sensie, że dokonuje przemocy bez złośliwości, nie starając się rozpieszczać ani dominować; raczej w nadziei, że czytelnik może odkryć wewnętrzną siłę niezbędną do walki.
CA McCann,

1
Hmm, sensei, nie jestem pewien, czy użyję tych zdjęć, ale cokolwiek. To nie jest przemoc, ani wewnętrzna siła nie jest problemem, ale zgodzę się z resztą. „Delikatny” jest tutaj trochę humorystyczny. Jak „skromna propozycja”.
JohnL4

1
Tak, zabierałem tam ... niewielką swobodę twórczą. ;] Trzeba jednak trochę męskiego umysłu, aby przejść przez coś tak tępego w porównaniu z innymi materiałami wprowadzającymi w tamtych czasach (dla dowolnego języka, nie tylko Haskell). Porównanie z K&R sprawia, że ​​myślę, że jesteś przyzwyczajony do tego rodzaju stylu. Ogólnie zakładałem, że „łagodny” oznacza w przeciwieństwie do uczenia się na podstawie raportu Haskella i stosu dokumentów badawczych.
CA McCann

1

http://hop.perl.plover.com/ zawiera książkę, którą można pobrać za darmo. Wyjaśnia, jak używać wielu technik funkcjonalnych w Perlu.

Większość tego, co mówi, można bardzo łatwo przetłumaczyć na JavaScript, Ruby lub Python.


1

Obecnie uczę się programowania funkcjonalnego. Jednak uczę się za pomocą Haskell.

Oto kilka książek online (można je również kupić w twardej oprawie iirc)

Haskell nie jest estrowy i staje się coraz bardziej popularny (być może nie tak popularny jak LISP lub Erlang). Jest to jednak język funkcjonalny i zmusza do nauki paradygmatu programowania funkcjonalnego. W przeciwieństwie do w połowie imperatywnego, w połowie funkcjonalnego podejścia, które otrzymasz przy użyciu języka nie wyłącznie funkcjonalnego.

Ludzie opracowali WebServers, Bittorrent Clients i kilka rzeczywistych aplikacji za pomocą haskell. Jednak osobiście używam go do nauki pojęć, a następnie stosuję to w C # i F #, który do tej pory działa fantastycznie.

Cieszyć się.


1

Kilka razy słyszałem dobre rzeczy o „strukturze i interpretacji programów komputerowych”. To prawdziwa książka, więc możesz też chcieć ją zdobyć w wersji papierowej, patrz http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871 .

Jest bezpłatnie dostępny tutaj http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ), a nawet filmy z wykładów ( http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )


SICP był miły, ale z mojego doświadczenia nie był dostępny.
willem

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.