Чему я учусь, чтобы «просветить себя путями» функционального программирования? - PullRequest
10 голосов
/ 12 марта 2010

Я кодирую уже несколько лет, ничего сложного. C ++ - это то, что я знаю лучше всего. Я недавно наткнулся на сайт Пола Грэма, кодирующий ужас, и теперь здесь.

Чему я учусь, чтобы «просветить себя путями» функционального программирования? Хаскель, Схема или CLisp?

Ответы [ 6 ]

18 голосов
/ 13 марта 2010

Если вы заинтересованы в функциональном программировании, Haskell - единственный чисто функциональный язык в этом списке. Common Lisp - это слабофункциональный язык смешанной парадигмы, а Scheme более функциональный, но все же не чистый. Lisps интересны по другим причинам, но Haskell - это в значительной степени современный уровень функционального программирования.

Кстати, причина, по которой я поощряю использование более функциональных языков, таких как Haskell, заключается в том, что большая часть «изучения функционального программирования» учится думать о вашей программе иначе. Если из-за того, что ваш язык заставляет вас писать естественным образом, слишком легко впасть в такое мышление и никогда не осознавать, что есть другой способ сделать это.

5 голосов
/ 12 марта 2010

Все три хороши, зависит от каждого человека.

Если вы выберете haskell, это отличный ресурс: learnyouahaskell , а также haskell реального мира

5 голосов
/ 12 марта 2010

Из трех я бы сказал, что Схема самая простая, если это ваша главная задача. SICP использует Scheme и сам по себе является отличным ресурсом для обучения программированию функционального способа.

Однако Common Lisp обладает множеством расширенных функций, которые делают его довольно выразительным, например, мощная обработка ошибок (более мощная, чем исключения), мультиметоды и поддержка аспектно-ориентированного программирования .

Вы можете начать с одного, но, в конце концов, вы должны изучать много языков.

4 голосов
/ 13 марта 2010

«просветить себя путями» функционального программирования?

Haskell - самый сильный образец функционального стиля, подчеркивающий чисто функциональное программирование (без побочных эффектов), строгую статическую типизацию и прагматическую реализацию с акцентом на многоядерный параллелизм, а также имеющий огромное сообщество (около 2000 библиотек доступны на http://hackage.haskell.org и множество онлайн-ресурсов).

Он несколько прославлен тем, что люди переучиваются думать о программировании.

Но это адвокация, а не полезный сеанс вопросов и ответов в стеке. Вы должны решить для себя, что вы хотите изучить.

4 голосов
/ 12 марта 2010

Как говорят другие ответы, все три хороши.

Но если вы выберете Лисп, то я бы посоветовал вам пойти на Clojure , что, возможно, является его самой последней реинкарнацией.

3 голосов
/ 13 марта 2010

Вы слышали о F #, ML или OCaml? Эти три языка принадлежат семье ML.

F # - это новый диалект ML, поддерживаемый Microsoft и поставляемый с Visual Studio 2010. Преимущество F # (или других языков ML) состоит в том, что при первом запуске вы можете написать императивный код выучить хороший функциональный стиль постепенно.

Вот пример, который я написал для Project Euler # 2 . Когда я впервые это сделал, я использовал императивный стиль. Позже я знаю, как использовать ленивую последовательность, которая является мощной концепцией функционального программирования.

...