Как мне начать с Lisp? [закрыто]


48

Я программирую уже много лет, прорабатывая различные итерации Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby без какого-либо конкретного порядка «Blub-ness»), и я хотел бы научиться Лисп. Тем не менее, у меня много интертаций с ограниченным временем (семья, работа на полную ставку и т. Д.) И комфортное счастье с моим нынешним Blub (Java).

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

Я думаю, что «используйте диалект A, используйте IDE B, следуйте инструкциям на странице C, поставьте под сомнение ваше здравомыслие после монад с помощью консультанта D». Я просто хотел бы знать, что люди здесь считают оптимальным набором значений для A, B, C и, возможно, D. Также некоторые дискуссии об относительных достоинствах изучения такого мощного языка по сравнению с, скажем, становлением Rails эксперт.

Просто, чтобы добавить больше подробностей, я буду разрабатывать на MacOS (или Linux VM) - подходы на основе Windows не понадобятся, спасибо.

Заметки для тех, кто просто просматривает

Я собираюсь оставить этот вопрос открытым некоторое время, чтобы я мог оставить отзыв о предложениях после того, как смогу их изучить. Если вы просматриваете и чувствуете, что хотите что-то добавить, сделайте это. Буду очень рад вашим отзывам.

Интересные ссылки

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

  1. Использование плагина Intellij La Clojure для интеграции Lisp ( видеокаст )
  2. Лисп для Интернета
  3. Онлайн-версия Практического Common Lisp (с Фрэнком Шираром)
  4. Land of Lisp - (+ (+ very quirky) game based)путь, но все это так просто
  5. Установите Clojure и Sublime 2 на MacOS - отличное руководство по началу работы
  6. Посмотрите на книгу Clojure in Action . Работал на меня.

1
Прочитав «Полной Грэм» ANSI Common Lisp и On On Lisp.
Дурос

2
На Лиспе (я не читал ANSI Common Lisp), но в качестве вступительной книги Практический общий Лисп> На Лиспе. ИМО, по крайней мере. (Сначала я читал «О Лиспе», но именно PCL
привел

Должен сказать, что в настоящее время я наслаждаюсь чтением PCL - отличные сноски об истории языка действительно дают ощущение сообщества
Гари Роу

1
Моим первым знакомством с Лиспом было наблюдение за знаменитой структурой и интерпретацией компьютерных программ. Затем я посмотрел Clojure Рича Хикки для программистов на Java. Я рекомендовал бы эти видео как хорошее введение.
WuHoUnited

Ответы:


18

Это, вероятно, противоречит рекомендациям большинства людей, но держитесь подальше от Emacs, если только вы этого не знаете. Особенно, если вы привыкли к современным средам разработки / редакторам.

Я говорю из опыта; Я пытался начать с Emacs, но необходимость изучать язык и редактор в то же время очень расстраивала меня (тем более что Emacs так сильно отличается от других инструментов). Я закончил с этим, начав с PLT Scheme (теперь Racket), которая поставляется со сравнительно простой кроссплатформенной IDE, централизованным хранилищем пакетов и потрясающими документами (включая промежуточное руководство, специально предназначенное для веб-разработки ). После того, как я получил полный контроль над Lisp, я вернулся к Emacs, взяв EL / CL в виде практического Common Lisp и Xah's Elisp Guide., В принципе, как я понимаю, вам нужно знать Lisp, прежде чем вы сможете эффективно использовать Emacs, и вам нужно знать Emacs, чтобы быть очень эффективным с CL / Elisp. Это означает, что вы можете либо выбрать Scheme, либо сначала изучить Common Lisp с помощью другого редактора (вероятно, личного LispWorks).

Если вы уже знаете Emacs, то да, Elisp - естественный шаг (хотя то, как вы будете получать удовольствие от использования Emacs, не зная, что сначала Elisp, мне не подходит).

YMMV, конечно, это то, что я нашел, помогло.

Так как ваш нынешний клуб - Java, вы, вероятно, можете получить много пробега от Clojure , Armed Bear или Kawa . Я не пробовал ни одного из них сам, не будучи парнем с Java, но Clojure специально рекомендован другими знакомыми мне Лисперсами. Кажется, что возможность сохранить вашу текущую виртуальную машину и IDE может помочь в процессе обучения.


Когда я только начинал, у меня уже было немного свободного владения emacs. Emacs имеет очень крутой курс обучения!
Фрэнк Шиарар

+1, потому что мой предыдущий опыт работы с Emacs был менее чем замечательным (это не мешает мне хотеть узнать его и иметь встроенный Lisp - как указал Торбьерн - означает, что я могу использовать свои знания Lisp в своей повседневной работе)
Гари Роу

3
@ Thorbjørn Равн Андерсен - сделал это. Дважды. Тем не менее я постоянно использовал ярлыки CUA (которые по умолчанию отключены в Emacs). Худшим было закрытие моего редактора случайным вырезом + предназначенная копия ( C-x C-c). Я люблю Emacs до смерти, и в значительной степени живет в нем сейчас, но понимаю , что во - первых, вы боретесь года мышечной памяти говорю вам C-sэто Save, не Searchи что Undoэто C-z. Я не буду рекомендовать такое разочарование тому, кто хочет изучать Лисп. Сначала выучите язык, поймите, что вы любите его, а затем начинайте биться руками с ясной целью.
Инамати

1
@Inaima, ну, власть приходит с ценой, а привязки Emacs предшествуют CUA, поэтому вините IBM :) Также Ctrl-C + Ctrl-v не CUA :)

1
@ Geoffrey van Wyk - PLT - это здорово, но есть некоторые ограничения, с которыми вы столкнулись через какое-то время, что заставило меня перейти на CL / Emacs, как только у меня появились подшипники. YMMV. Я написал некоторое время назад, если вас интересуют подробности langnostic.blogspot.com/2010/09/… Что касается вопроса о LispWorks; Я должен верить, что они нацелены на большие команды (где компания покупает инструменты) или консультантов (которые обычно делают достаточно, чтобы ценник был оправданным). Не уверен, как это работает для них, но это не тот подход, который я бы выбрал.
Инамати

10

Ну, вы можете поразить двух зайцев, прочитав SICP : один изучает LISP (я имею в виду, что схема - это диалект Lisp), а другой - отличное понимание того, как программировать. Период !!


1
+1 за ссылку - быстрый просмотр, кажется, показывает, что он очень подробный, но также довольно сухой (читай академический) в своем подходе. Я большой поклонник «голоса экспертов», который звучит при чтении текста, но мне кажется, что это хороший общий справочник.
Гари Роу

10

У Конрада Барского есть отличный учебник под названием Casting SPELs в Lisp (SPEL - его сокращение от макросов). Он включает в себя создание простой игры типа Adventure и включает в себя макросы Lisp. Он также работал над вводной книгой, которая теперь доступна по адресу:

Научитесь программировать Lisp по одной игре за раз .

И из оглавления:

  • Создайте свой собственный веб-сервер и используйте его для игры в браузерные игры.

Однако я не знаю, что это означает для веб- разработки (как на HTML-страницах) с использованием Lisp. :)

Обновление - я вижу, что кто-то упомянул книгу «Структура и интерпретация компьютерных программ», которая напомнила мне, что MIT выложил в сеть все лекции SICP Video от Hal Abelson и Gerald Jay Sussman . Возможно, вы нашли книгу сухой, но лекции отличные. Несмотря на то, что они основаны на схемах, они все же очень хорошо знакомы с основными понятиями в Лиспе. Стоит скачать и посмотреть.


8

Чтобы получить хорошее базовое введение в язык, прочитайте Практический Общий Лисп Питера Сейбела . Книга отличная.

Настройка emacs и SLIME может быть непростой задачей для новичка, где «хитрость» варьируется по величине в зависимости от вашей ОС. Как обычно, Windows получает короткий конец флешки, но люди сделали сложную часть и написали ее (SBCL, Emacs, SLIME).

Как только это вышло, Planet Lisp недавно ссылался на статью, описывающую, как настроить Hunchentoot и nginx.

Редактирование для конкретной ОС: MCLIDE может быть хорошим местом для начала. Я установил его, но у меня не было возможности использовать его, поэтому я не могу сказать что-нибудь полезное об этом. Это, конечно, выглядит интересно!

Изменить: Eclipse также имеет плагин Cusp .


6

Уже много хороших ответов, но, если вы захотите погрузиться в мир веб-разработки с помощью Lisp, у меня есть еще несколько идей.

Clojure - это первый Lisp, у которого действительно отличные полнофункциональные веб-фреймворки, готовые к работе в прайм-тайм.

  • Noir - это надежная веб-инфраструктура с маршрутизацией, шаблонами и т. Д., Похожая на Sinatra, но немного более функциональная. Он использует Ring, который по сути является эквивалентом Rack в Ruby от Clojure.
  • Korma - это библиотека абстракций SQL, которая отлично сочетается с Noir.
  • Pinot - это клиентская среда, полностью написанная на ClojureScript, которая позволяет нам:
  • Clojurescript - это компилятор для Clojure, который нацелен на Javascript.

Если вы не заметили, я просто покрыл весь веб-стек, и все это написано на Clojure.

Я считаю, что с Clojure легче начать работу, чем с Common Lisp, с гораздо лучшей поддержкой функций / библиотек, чем Scheme.

Если вы вообще работаете с Java-фоном, у него есть дополнительное преимущество - он работает на JVM, что дает вам доступ ко всему Java stdlib, когда вам это нужно.

Доступная документация находится в стадии разработки, как и сами структуры. Но здесь есть довольно хорошее руководство .

Что касается редакторов ... если вам удобно с vim, вы можете использовать vim с SLIMV. Если вам нравится emacs, то с emacs / SLIME все в порядке. Есть довольно хорошая поддержка Eclipse и NetBeans для Clojure (или мне так сказали), но я обычно использую TextMate (хотя Sublime Text 2 быстро становится моим любимым редактором). Я знаю, что упускаю немного волшебства Лиспа, не используя более интегрированную среду, но я счастлив нажать ⌘-Tab, чтобы переключиться между моим редактором и REPL; Ваш пробег может варьироваться.

Если вы хотите, чтобы книга стала для вас толчком, я рекомендую Программирование Clojure от Стюарта Хэллоуэя и Аарона Бедры. 2-е издание только что вышло из PragProg , так что оно актуально.

Счастливого Лиспинга!


Вы можете добавить Leiningen
Гари Роу

5

Другой комментатор, Inaimathi , порекомендовал эту книгу несколько дней назад: The Little Schemer

Получил его сегодня, и я, как человек, обладающий очень большой библиотекой книг по программированию, приобретенной за многие годы, могу сказать, что, возможно, я прочитал только одну главу, но мне определенно понадобится версия в твердом переплете. Это звучит как Дао Дэ Цзин, множество маленьких фрагментов божественной мудрости относительно языка. Можно сказать «Схема», но изначально она называлась «Маленький ШУМ», языки на обсуждаемом уровне достаточно похожи, чтобы их можно было преподавать как единое целое.

Это не продвинутый текст, но он призван привить принципы языка и понять, для чего он на самом деле, как думать, как это. Я считаю, что это будет отличным стартером для LISP.

NB. Матрица компетенций программиста на самом деле упоминает эту книгу на высшем уровне компетентности того, что нужно искать. (см. раздел Книги)


4

Очень хорошее место для начала использования Lisp - это редактор Emacs, где его можно использовать для переопределения чего угодно. Вы хотите, чтобы ключ 'e' вставлял время даты, просто напишите небольшой фрагмент Lisp, чтобы сгенерировать строку и связать ее с ключом e. Готово.

Это также позволит вам на самом деле использовать то, что вы изучаете в повседневной обстановке, если вы используете простой редактор в течение дня.


+1 за совет «используйте то, что вы узнали». Я работаю с Intellij для повседневной работы, но, возможно, мне удастся получить лапы на emacs в нашей очень ограниченной программной среде.
Гари Роу

3

Если вы будете разрабатывать на Mac, вы можете попробовать Clozure CL . Он поставляется с IDE, в которой есть совместимые с Emacs сочетания клавиш, и есть мост к Objective C, чтобы вы могли писать приложения Какао.

Кроме того, я прочитал «Практический общий Лисп», но обнаружил, что « Успешный Лисп» также полезен.

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


2

У меня есть копия ANSI Common Lisp прямо у моего стола. Я поднимаю его каждые пару лет и прохожу пару глав, затем зацикливаюсь на нескольких упражнениях, и он срывает список приоритетов. Это, вероятно, говорит вам больше обо мне, чем о книге. Книга кажется вполне компетентной ...


Возможно, чтение ответов и комментариев к этому вопросу даст вам стимул работать для достижения более высокой цели. Взломайте ссылку PCL и расскажите нам, что вы думаете ...
Гари Роу,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.