Обычный Lisp Использование Практический общий Lisp .
Я начал с книги практичного общего Lisp, а также использовать Emacs & Slime со стальным банком Common Lisp.
Я предлагаю начать с схемы, а затем перейти к общему Lisp, поскольку схема проще. Поскольку вы новичок в Lisp, хорошая отправная точка будет Учить себе схему в Xixnum Days Dorai Sitaram. Как только вам удобно с основы языка, вы можете начать работать с SICP.
Для Common Lisp вы можете следить по аналогичному пути: начните с простого учебного пособивого подхода, станьте комфортно написанием небольших программ, а затем прочитайте книгу, которая научит вас продвинутым концепциям. Я предлагаю следующие книги для изучения обычного Lisp. Позаботьтесь о том, чтобы прочитать их в данном порядке: Common Lisp: интерактивный подход (Стюарт С. Шапиро), Успешный Lisp (Дэвид Б. Ламкинс), Практический общий (Питер Сейбель) и на Lisp (Пол Грэм).
Пол Грэм также написал ANSI Common Lisp , что является хорошей ссылкой.
Я начал с книги Practical Common Lisp и использую Emacs & SLIME с Steel Bank Common Lisp.
-121--2125919- Единственное, что Джанго предоставляет для обработки неизвестных контекстных переменных в TEMPLATE _ STRING _ IF _ INVALID
. Вам придется сделать более глубокий взлом механизма шаблонов, если вы хотите лучше, чем это.
Обучение чему-то новому почти всегда хорошо. И если вы знаете только Java и Python, то изучение функционального языка программирования растянет ваш ум.
Схема является одним из самых простых вариантов LISP, и она хорошо документирована. Действуй!
Я бы пошел с LFE, скорость вы изучаете, пропорциональна количеству ошибок, которые вы испытываете. Выбор LFE даст вам как Erlang и Lisp одновременно.
На самом деле только две общие варианты, схема и общий лисс. Они очень похожи, у обоих есть множество реализаций, и переключение между ними достаточно легко. Если вы хотите написать приложение, я бы предложил бы CL из-за превосходных библиотек. Если вы хотите изучить стиль FP, перейдите со схемой.
В дополнение к книгам, упомянутым здесь, я также предлагаю «парадигмы программирования искусственного интеллекта: тематические исследования в общем Lisp» Peter Norvig.
Я был в вашей позиции и разделил мое внимание между схемой и общими Lisp. Оглядываясь назад, теперь я думаю, что (для целей обучения Clojure, в отличие от личного развития), я бы лучше сосредоточиться на общих лисштабах, с практическими распространенным Lisp и PG на Lisp .
Теперь, когда есть настоящие книги, ориентируясь на Cljure, вы обязательно должны пойти с одним из них. Радость Clojure - отличная книга, а 4Clojure.com - это хороший способ получить некоторую практику, решая головоломки с Clojure.
Я бы выбрал Схему. Она проста, минималистична, чрезвычайно последовательна, и можно утверждать, что она более функциональна, чем LISP (что приятно, если вы хотите изучить новую парадигму). Я также считаю, что среды разработки Scheme IDE намного более удобны в использовании, чем LISP (PLT Scheme - хорошая).
Кроме того, существует множество отличных ресурсов либо на Common Lisp, либо на Scheme, так что это не должно быть решающим моментом.
Для учеников визуального / аудио я высоко рекомендую видео серии Righ Hicky на BLIP.TV
Clojure для программистов Java , а затем просто ударил reft. Остальная часть серии следует естественным образом и действительно может получить творческие соки, текущие. PCL (практичный общий Lisp) - это захватывающая книга, хотя некоторые из них на самом деле не применимы к Clojure. Я настоятельно рекомендую главу о макросах.
Я второй Днолен порекомендовал схватить книгу С. Халлоуэя (я купил ее, и она великолепна) и сразу же выучить Кложура.
Я проработал свой путь (частично) через SICP некоторое время назад и действительно боролся. После этого я нашел Clojure приятно простым, возможно, потому что у меня уже был небольшой опыт работы с Scheme. Тем не менее, особенно для того, кто уже знаком с Java, я бы сказал, что это круто прыгать прямо в Clojure. Обоснование:
(cond (условие) (значение) (значение))
, а не(cond ((условие) (значение)) ((условие) (значение)))
let
и loop
и т.д. находятся в [квадратных скобках], а не (в круглых скобках). Облегчает чтение определений функций IMHO. (defn)
. Вы, как никто другой, должны это оценить ;)Первым учебным пособием, достойным рекомендации, является Учебное пособие Моксли Страттона по клоуризму. Также существует огромная дискуссия SO по учебнику Клоюра , которая дает много ссылок.
Кое-что, что я нашел чрезвычайно полезным с моими первыми шагами в Клоюре, было Clojure Cheat Sheet . Это касается общего случая, когда вы приблизительно знаете, что вы хотите сделать, но не знаете, какую функцию использовать. Кто-то хотел бы, чтобы другие языки приняли эту концепцию. Найдя вероятную функцию для ваших нужд, вы можете получить больше документации по ней, используя (doc
в Clojure REPL.
Пробег может, конечно, варьироваться; но к тому времени, как Amazon доставил Программирующий Clojure, я уже достаточно изучил Clojure из Сети, что книга была скорее источником "большой картины", чем учебником для меня. Но, конечно, можно было бы сделать гораздо хуже, чем учиться программированию на Clojure из этой книги.
Возможно, из вышесказанного видно, что я с энтузиазмом отношусь к Clojure. После многих лет работы на Java я нахожу его освежающе новым и достаточно мощным, чтобы сделать то, что меня беспокоит. Я даже пожертвовал на проект :)
Рискуя потом об этом пожалеть, я также предлагаю (бесплатное) начало Clojure помощи и репетиторства по электронной почте, Google Chat или Wave. Мой почтовый адрес должен быть довольно легко угадать.
Книга Stuart Halloway - это отличный ресурс, если вы просто начинаете. В работах, которые доступны пара новых книг, которые доступны для загрузки в ранней форме (радость Clojure, Clojure в действии и т. Д.).
Также я настоятельно рекомендую список рассылки, а также канал IRC. Особенно, канал IRC, там много полезных людей, и вопросы обычно отвечают довольно быстро.
В то время как схема обучения, безусловно, поможет (теперь, когда я играл с Clojure на год), я бы также сказал, что это ненужно для обучения и веселиться с Clojure.