Доступна книга з функціонального програмування [закрито]


17

Я шукаю книгу, яка доступним чином пояснює функціональне програмування. Також я віддаю перевагу такому, який не надто тьмяний і не використовує езотеричну мову.

В ідеалі він буде використовувати приклади, які демонструють ситуації, коли функціональне програмування призводить до більш елегантних чи простіших рішень, ніж імперативні підходи.

У мене є достатньо досвіду програмування, але я не знаю функціонального програмування. Дякуємо за будь-які пропозиції


3
Мені цікаво, чи була на увазі певна мова, яку ви мали на увазі, коли говорили, що не хочете використовувати "езотеричну мову".
MatrixFrog

@MatrixFrog: Я на 99% впевнений, що під "езотеричною мовою" він мав на увазі схему. Ймовірно, він знав, що SICP буде першою рекомендованою книгою.
user16764

@ user16764 Але "доступно"? Це було б, як створити програми (або 2-е видання ) на основі обґрунтування, поданого автором (-ами) у "Структурі та інтерпретації навчальної програми з інформатики" .
Марк C

Відповіді:


13

Я б сказав, починаючи з " Маленького Шемера " (а можливо, " Розумного Шемера " після цього).

Якщо ви вважаєте, що схема занадто езотерична, або якщо вам подобається Javascript, Дуглас Крокфорд перевів багато вправ на Javascript: http://javascript.crockford.com/little.html

Якщо вам подобається C #, " Функціональне програмування в реальному світі " Томаша Петричека стане прекрасним місцем для початку. Він також служить приємним вступом до F #.


10

Якщо вам подобаються статично набрані мови та [дужки]:

Хоча Haskell досить важкий щодо чистоти парадигми програмування, має одне з найкращих вступів до мови, яку я досі бачив у формі "Learn You a Haskell For Great Good!". Форма книги не є обов'язковою, оскільки веб-сайт безкоштовний, але це один автор, якого я не відчував у собі. Реальний світ Haskell хороший, але насправді краще сприймати як слідкувати до [Learn..Good]. RWH також безкоштовний з додатковою користю паперу.

З Haskell ви можете легко перейти до інших варіантів ML, таких як F # або OCaml, обидва з яких широко використовуються. Для кровоточивого краю ОВС .

Якщо вам подобається (і Dynamic_Typing Parentheses):

Схема є більш функціонально орієнтованою з двох основних діалектів Ліспа, меншої та чистої, ніж звичайний Лісп, але менш широко використовується в промисловості. Мені особисто подобається «Структура та інтерпретація комп’ютерних програм», але це досить теоретична важка книга, яка, хоча трохи важко ковтати, зробить вас кращим програмістом.

Якщо ви віддаєте перевагу Common Lisp, практичний звичайний Lisp або Land of Lisp здаються хорошими інвестиціями, перший - безкоштовний онлайн, а другий - досить дешевий і важливіший (для деяких) гра, орієнтована. Він більш потужний, але менш чистий, ніж схема.

Звідси ви можете розширитись у Clojure, якщо хочете. Це Lisp для JVM, тому його легше розгорнути і краще захищати від звинувачень у тому, що "академічний" Clojure може розгорнути в .NET і перейти на Javascript теж. Для рідного .NET спробуйте IronScheme .

Ви також можете розділити різницю і навчитися обидва сорти одразу за допомогою Написати собі схему за 48 годин у Haskell.


Якщо ви їдете з програмою SICP , також є багато відео лекцій про книгу, найвідоміші з них: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Пол Грехем - хороший письменник і має безкоштовну книгу про чому ліс
simoraman

1
Я читаю безкоштовну онлайн-версію Real World Haskell, і вміння читати коментарі під час читання тексту надзвичайно корисно. Тож навіть якщо ви отримаєте паперову версію, ви можете прочитати і онлайн-версію. Деякі частини просто менш заплутані в коментарях.
MatrixFrog

4

Моє улюблене джерело - Ніжне введення в Haskell . Я читав частину Learn you a Haskell та Haskell в реальному світі O'Reilly та Ремесло функціонального програмування Саймона Томпсона , але я, чесно кажучи, роблю краще з ніжним вступом. Це схоже на K&R Haskell: тонкий документ, створений творцями мови. Ні слова, не покровительствую, але і не намагаючись переповнити вас своєю ерудицією, також.


1
Gentle Введення дуже прямий і без надмірностей, так само, як твердої удар в живіт. Це лагідно в тому сенсі, що він чинить насильство без злості, не прагнучи ні притулитися, ні домінувати; швидше, сподіваючись, що читач може прийти до виявлення внутрішньої сили, необхідної для боротьби.
CA McCann

1
Хм, сенсей, не впевнений, що я б використовував це зображення, але що б там не було. Це не є насильницьким і не є внутрішньою силою, але я згоден з іншими. "Ніжний" тут трохи жартівливий. Як "скромна пропозиція".
JohnL4

1
Так, я брав там якусь незначну творчу свободу. ;] Однак потрібно трохи душевної стійкості, щоб пройти щось настільки тупе в порівнянні з іншими вступними матеріалами, що існують сьогодні (для будь-якої мови, не лише Хаскелла). Порівняння K&R змушує мене думати, що ти звик до такого стилю. Я загалом припускав, що "лагідний" мається на увазі на відміну від навчання з доповіді Haskell і ряду наукових робіт.
CA McCann

1

http://hop.perl.plover.com/ включає книгу, яку ви можете завантажити безкоштовно. Це пояснює, як використовувати багато функціональних прийомів в Perl.

Більшість того, що там сказано, дуже легко можна перекласти на JavaScript, Ruby або Python.


1

Зараз я сам навчаюся функціональному програмуванню. Однак я навчаюсь за допомогою Haskell.

Ось декілька онлайн-книг (їх можна також придбати в твердій обкладинці iirc)

Haskell не естетичний і стає більш мейнстрімом (можливо, не такий мейнстрім, як LISP або Erlang). Однак це чиста функціональна мова, і змусить вас вивчити парадигму функціонального програмування. На відміну від напівімперативного наполовину функціонального підходу, який ви отримаєте, використовуючи не суто функціональну мову.

Люди розробили веб-сервери, клієнти Bittorrent та декілька реальних програм із використанням haskell. Однак я особисто використовую це для того, щоб вивчити ці поняття, а потім застосувати це до C # & F #, який до цього часу працює фантастично.

Насолоджуйтесь.


1

Я чував хороші речі про "Структура та інтерпретація комп'ютерних програм" кілька разів. Це справжня книга, тому ви, можливо, захочете її отримати і в папері, див. Http://www.amazon.co.uk/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871 .

Він вільно доступний тут http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ), і навіть є відео з лекцій ( http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )


SICP був приємний, але недоступний мій досвід.
Віллем

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.