2010-01-22 2 views
20

я в конечном счете хочу узнать Clojure, но я нашел учебные ресурсы для Clojure быть мало для людей мало опыта ...Любые предложения, для которых вариант Lisp узнать?

мне интересно, если это было бы полезно начать с Scheme (читать The Little Schemer и SICP) или какой-либо другой вариант Лиспа.

Мой единственный опыт программирования - это Java и Python (что довольно мало). В конечном итоге я хочу изучать Clojure в свое время, так как я нахожу это увлекательным, и мои классы в колледже используют Java.

ответ

7

Я начал с книги Practical Common Lisp и использовал Emacs & SLIME со стальным банком Common Lisp.

+1

Если вы решили начать с PCL, вам может быть интересно упражнение С. Хэллоуэй портировать все упражнения программирования к Clojure: http://blog.thinkrelevance.com/2008/9/16/pcl-clojure –

+0

У меня есть иррациональная аллергия ко всем вещам Java. Я буду придерживаться SBCL, хотя я рассматриваю ECL, чтобы я мог делать автономные исполняемые файлы. – Demosthenex

+0

Идите, я переехал по оптовой продаже в Racket, потому что могу делать исполняемые файлы. – Demosthenex

1

Изучение чего-то нового почти всегда хорошо. И если вы только знаете Java и Python, то изучение функционального языка программирования растянет ваш разум.

Схема является одним из простейших вариантов LISP, и она хорошо документирована. Действуй!

9

Я бы пошел с Схемой. Это просто, минималистично, чрезвычайно последовательно, и можно утверждать, что он более функциональный, чем LISP (что приятно, если вы хотите изучить новую парадигму). Я также нашел Scheme IDE намного удобнее, чем LISP (PLT Scheme - хороший).

Кроме того, на Common Lisp или Scheme имеется множество отличных ресурсов, поэтому это не должно быть решающим моментом.

+2

Я обнаружил, что CL выглядит уродливым после того, как я узнал схему :) – leppie

+0

Да, я тоже сначала узнал схему. Это красиво по сравнению с CL. CL также имеет странные имена. –

15

Книга Стюарта Халлоуэя - отличный ресурс, если вы только начинаете. Есть несколько новых книг в произведениях, которые доступны для скачивания в ранней форме («Радость Clojure», «Clojure in Action» и т. Д.).

Также я настоятельно рекомендую список рассылки, а также канал irc. Особенно в канале irc, там много полезных людей, и вопросы обычно отвечают довольно быстро.

При изучении схемы, безусловно, полезно (теперь, когда я играл с Clojure в течение года), я бы также сказал, что это не нужно для обучения и развлечения с Clojure.

+0

Спасибо, я буду иметь это в виду, может пойти сначала на схему, чтобы попытаться получить хорошее представление о FP – defn

+4

@defn, если вы идете с помощью схемы, я предлагаю SICP. Помните, что схема не очень строга относительно FP, поэтому, если вы не посмотрите на текст схемы с учетом этого, это не поможет вашему Clojure. К сожалению, SICP длинный (забавный), так что это очень круто. Если вы хотите получить быстрее схватывать на FP проверьте следующее: http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html Я также искал в Haskell. У богатого Хикки есть много замечательных идей оттуда, поэтому я искренне рекомендую это также: http://learnyouahaskell.com/ – dnolen

+0

Я согласен с этой рекомендацией. Если вы в конечном счете хотите изучить Clojure, просто погрузитесь прямо в Halloway - это очень доступно. Сказав это, SICP и The Little Schemer & c взорвут ваш ум, если вы используете основной фон кодирования, но это, конечно же, не является обязательным условием - вы можете добраться до него после того, как вы попали в Clojure без каких-либо побочных эффектов.В любом случае, Little Schemer все о рекурсии, так что это не поможет с Clojure, кроме, может быть, поможет вам понять совет «не делайте этого таким образом» для интриганов. –

9

Common Lisp используя Practical Common Lisp.

+0

В случае, если вы решите начать с PCL, вас может заинтересовать упражнение С. Хэллоуэй в портировании всех упражнений по программированию на Clojure: http://blog.thinkrelevance.com/2008/9/16/pcl-clojure –

3

Я предлагаю вам начать с Схемы, а затем перейти к Common Lisp, так как схема проще. Поскольку вы новичок в Lisp, хорошей отправной точкой будет Teach yourself Scheme in Fixnum Days от Dorai Sitaram. После того, как вы будете довольны основами языка, вы можете начать работать с SICP.

Для Common Lisp вы можете следовать по аналогичному пути: начните с простого подхода, основанного на учебнике, станьте удобным написанием небольших программ, а затем прочитайте книгу, в которой вы научите вас передовым концепциям. Я предлагаю следующие книги, чтобы изучить Common Lisp. Позаботьтесь о том, чтобы прочитать их в указанном порядке: COMMON LISP: An Interactive Approach (Стюарт К. Шапиро), Successful Lisp (David B. Lamkins), Practical Common Lisp (Peter Seibel) и On Lisp (Paul Graham).

Paul Graham также написал ANSI Common Lisp, что является хорошим ориентиром.

1

На самом деле существуют только два общих варианта: Scheme и Common Lisp. Они очень похожи, оба имеют множество реализаций, и переключение между ними достаточно просто. Если вы хотите написать приложение, я бы предложил CL из-за превосходных библиотек.Если вы хотите изучить стиль FP, перейдите к Схеме.

В дополнение к книгам, упомянутым здесь, я также предлагаю «Парадигмы программирования искусственного интеллекта: примеры из практики в общем Лиспе» Питера Норвига.

+1

сейчас I «Возможно, класс Clojure также является распространенным вариантом ... – mikera

0

Я бы поехал с LFE, скорость, которую вы узнаете, пропорциональна количеству ошибок, которые вы испытываете. Выбор LFE даст вам одновременно Erlang и Lisp.

+0

Не знаю о других людях, но мне не сразу стало очевидно, что LFE - это Lisp Flavored Erlang: http://metajack.im/2009/01/09/lisp-flavored-erlang/ –

+0

Спасибо, ты прав. – Flinkman

8

Рекомендация второй dnolen о том, чтобы схватить книгу С. Хэллоуэй (я ее купил, и это здорово) и изучать Clojure с места в карьер.

Я проделал свой путь (частично) через SICP некоторое время назад и действительно боролся. После этого я нашел Clojure приятным, возможно, потому, что у меня уже был некоторый опыт работы с Scheme. Тем не менее, особенно для тех, кто уже знаком с Java, я бы сказал, что круто прыгать прямо в Clojure. Обоснование:

  • У вас есть удобный доступ ко всему API Java и всему телу библиотек, написанных для Java; например, недавно я построил графический интерфейс Swing для/из программы Clojure и использовал HTTP-компоненты Apache для совершения некоторых сетевых перехватов.
  • Clojure пытается быть меньше «Lispy» по сравнению с другими Лиспах: Примерами могут служить:
    • сокращение «ненужных» круглых скобках: например,
      (cond (condition) (value) (condition) (value)), а не
      (cond ((condition) (value)) ((condition) (value)))
    • использования нечто иное, чем скобки в нескольких значимых местах; например списки аргументов и привязки для let и loop и т. д. находятся в квадратных скобках, а не в круглых скобках. Делает определения функций более легкими для чтения IMHO.
    • список не является единственной структурой данных. Там хорошо интегрированы
      • [векторы] (случайным образом доступная, как массивы) и
      • {HashMaps};
        Это облегчает жизнь, особенно если вы привыкли иметь их на Java.
  • Функция для определения функций (defn). Вы все должны это оценить;)

Рекомендованный первый учебник - Moxley Stratton's Clojure Tutorial. Там также огромный SO discussion on Clojure tutorials, который дает много ссылок.

Что-то, что я нашел чрезвычайно полезным с первых шагов в Clojure, было Clojure Cheat Sheet. Это касается общего случая, когда вы знаете, что вы хотите сделать, но не какую функцию использовать. Хотелось бы, чтобы другие языки приняли эту концепцию. Найдя вероятную функцию для ваших нужд, вы можете получить дополнительную документацию по ней, используя (doc <name>) в Clojure REPL.

Ваш пробег может отличаться, конечно; но к тому времени, когда Amazon поставила Программирование Clojure Я уже достаточно усвоил Clojure из Интернета, что книга была скорее источником «большой картины», чем учебником для меня. Но, конечно, можно было бы сделать намного хуже, чем изучать программирование Clojure из этой книги.

Возможно, из сказанного выше я с энтузиазмом отношусь к Clojure. Я нахожу его освежающе отличающимся после многих лет Java, и достаточно мощный, чтобы выполнить все, что меня задевает. Я даже пожертвовал проект :)

С риском сожаления об этом позже, я также предлагаю (бесплатно) начало помощи Clojure и обучение по электронной почте, Google Chat или Wave. Мой адрес электронной почты должен быть довольно легко догадаться.

+2

Также важно отметить, что Крис Хаузер и Фогус пишут книгу, в которой конкретно рассматривается проблема, с которой люди сталкиваются с «мышлением в Clojure». Он доступен через Manning Early Access Preview прямо сейчас и будет выпущен осенью этого года. – Rayne

0

Для визуального/AUDO учеников я очень рекомендую серию видео RIGH Hicky на blip.tv
Clojure for java programmers, а затем просто нажмите Отв. Остальная часть серии следует естественным образом и действительно может получить творческие соки. PCL (Practical Common Lisp) - захватывающая книга, хотя некоторые из них на самом деле не применимы к clojure. Я настоятельно рекомендую главу «Макросы».

1

Я был в вашем положении и разделял свое внимание между Схем и Common Lisp. Оглядываясь назад, я думаю, что (в целях изучения Clojure, в отличие от личного развития) мне было бы лучше сосредоточиться на Common Lisp, с Практические общие Lisp и PG's На Lisp.

Теперь, когда есть настоящие книги, посвященные Clojure, вы обязательно должны пойти с одним из них. Joy of Clojure - отличная книга, и 4clojure.com - хороший способ получить некоторые решения, решающие головоломки с Clojure.

1

newLISP - хм ..., потому что это современный (и только ??) LISP на основе общего языка сценариев? (Я не считаю AutoLISP и т. Д., Потому что они являются специфичными для домена скриптами langs). Так что, если вам это понравится, возможно, в будущем вы потеряете Python через окно :-))