З чого слід почати з 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. Використання плагіна La Clojure від Intellij для інтеграції Lisp ( відеопередача )
  2. Lisp для Інтернету
  3. Інтернет-версія практичного звичайного Lisp (c / o Frank Shearar)
  4. Земля Лісп входить, (+ (+ very quirky) game based)але робить все це просто
  5. Встановіть Clojure та Sublime 2 на MacOS - чудовий посібник для початку роботи
  6. Подивіться на книгу Clojure in Action . Працювали для мене.

1
Читаючи "ANSI Common Lisp" та "On Lisp" Пола Грема.
duros

2
На скелях Lisp (я не читав ANSI Common Lisp), але як вступна книга, Practical Common Lisp> On Lisp. ІМО, принаймні. (Спочатку я прочитав про Лісп, але PCL був тим, що мене змусило в CL.)
Френк Шірар

Слід сказати, що мені подобається читати PCL на даний момент - відмінні виноски про історію мови справді створюють відчуття для громади
Gary Rowe

1
Моє перше знайомство з Lisps - це перегляд відомої структури та інтерпретації комп'ютерних програм. Потім я переглянув Clojure Rich Hickey для програмістів Java. Я б рекомендував ці відео як гарне вступ.
WuHoUnited

Відповіді:


18

Це, мабуть, суперечить рекомендаціям більшості людей, але для початку слід уникати Emacs, якщо ви цього ще не знаєте. Особливо, якщо ви звикли до сучасних IDE / редакторів.

Я кажу з досвіду; Я намагався почати з Emacs, але в той час, коли я мав вивчити мову ТА редактор, мене це дуже засмутило (тим більше, що Emacs настільки відрізняється від інших інструментів). Я завершив це, перебираючи його, почавши зі схеми PLT (тепер Ракетка), яка постачається з порівняно простим крос-платформним IDE, централізованим сховищем пакетів та казковими документами (включаючи проміжний підручник, спеціально спрямований на розробку веб-сторінок ). Після того, як я зрозумів Lisp, я повернувся до Emacs, взявши EL / CL за допомогою практичного звичайного Lisp та Elisp Guide Xah. В основному, як я бачу, вам потрібно знати Lisp, перш ніж ефективно використовувати Emacs, і вам потрібно знати Emacs, щоб бути дуже ефективним з CL / Elisp. Це означає, що ви можете або забрати схему, або навчитися спочатку звичайного Lisp через якийсь інший редактор (можливо, особистий LispWorks).

Якщо ви вже знаєте Emacs, то так, Elisp - це природний крок (хоча те, як вам сподобається використання Emacs, не знаючи спочатку Elisp, - це не за мене).

YMMV, звичайно, це саме те, що я знайшов, що допомогло.

Оскільки поточна ревіти є Java, ви, ймовірно , отримати багато пробіг з Clojure , озброєних Медведя або Кава . Я сам не пробував жодного з них, не будучи хлопцем на Java, але Clojure спеціально настійно рекомендується від інших я знаю. Схоже, здатність зберігати поточну віртуальну машину та IDE може допомогти в процесі навчання.


У мене вже почалася основна вільність у Emacs, коли я починав. Emacs має дуже круту криву навчання!
Френк Ширар

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

3
@ Thorbjørn Ravn Andersen - Зробив це. Двічі. Я все ще постійно використовую комбінації клавіш CUA (які вимкнено у Emacs за замовчуванням). Найгірше було закриття мого редактора випадковим вирізанням + призначена копія ( C-x C-c). Я люблю Emacs до смерті, і в значній мірі живе в ньому зараз, але розумію , що у - перших, ви боретеся року м'язової пам'яті кажу вам C-sце Save, чи не Searchта що Undoце C-z. Я не рекомендую такого розчарування тому, хто має намір вивчити Лісп. Вивчіть мову спочатку, зрозумійте, що ви її любите, а потім почніть битися руками з чіткою метою на увазі.
Inaimathi

1
@Inaima, ну потужність поставляється з ціною, а прив’язки Emacs до того, як CUA так звинувачують IBM :) Також Ctrl-C + Ctrl-v не є CUA :)

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

10

Ну, ви можете вдарити двох птахів, читаючи SICP ; Один вивчає LISP (я маю на увазі схему - діалект Ліспа), а інший чудово розуміє, як програмувати. Період !!


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

10

Конрад Барскі має чудовий підручник під назвою Casting SPELs in Lisp (SPEL - його абревіатура для макросів). Він передбачає створення простої гри типу Adventure, і стрибає прямо в макроси Lisp. Він також працював над вступною книгою, яка тепер доступна за адресою:

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

І, з змісту:

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

Я не знаю, що це означає для веб- розробки (як на HTML-сторінках) за допомогою Lisp. :)

Оновлення - я бачу, як хтось згадав книгу "Структура та інтерпретація комп'ютерних програм", яка нагадала мені, що MIT виклав в Інтернеті цілі відео-лекції SICP від Хела Абельсона та Джеральда Джея Суссмана . Можливо, ви знайшли книгу сухий, але лекції чудові. Хоча вони базуються на схемах, вони все ще добре поширюються на основні поняття в Lisp. Добре варто завантажити та переглянути.


8

Щоб отримати хороший базовий вступ до мови, прочитайте « Практичний загальний текст» Пітера Сейбела . Книга відмінна.

Налаштування emacs та SLIME може бути складним для новачків, де "хитрощі" змінюються за величиною залежно від вашої ОС. Як завжди, Windows отримує короткий кінець палиці, але люди зробили важку частину і написали її (SBCL, Emacs, SLIME).

Як тільки це не вийшло, Планета Лісп посилалася на статтю, де нещодавно описується, як налаштувати Hunchentoot та nginx.

Специфічна для ОС редакція: MCLIDE може бути хорошим місцем для початку. Я встановив його, але не мав можливості реально використовувати його, тому нічого корисного не можу сказати. Це звичайно виглядає цікаво!

Редагувати: Eclipse також має плагін Cusp .


6

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

Clojure - це перший Lisp, який я бачив, маючи справді чудові повнорозмірні веб-кадри, готові до прайм-тайму.

  • Noir - це міцний веб-фреймворк з маршрутизацією, шаблонуванням тощо, подібний до Sinatra, але трохи більш багатий на функції. Він використовує Ring, що в основному є Clovire еквівалентом Rack in Ruby.
  • Korma - бібліотека абстракцій SQL, яка дуже добре поєднується з Noir.
  • Pinot - це система, створена на базі клієнта, повністю написана ClojureScript, що дозволяє нам:
  • Clojurescript - це компілятор для Clojure, націлений на Javascript.

Якщо ви цього не помічали, я просто накрив весь стек веб-сторінок, і все написано Clojure.

Мені Clojure трохи легше почати роботу із звичайним Lisp із набагато кращою підтримкою набору функцій / бібліотекою, ніж схема.

Якщо ви взагалі виходите з Java-програми, це має додаткову перевагу роботи на JVM, що дає вам доступ до всього Java-програми stdlib, коли вам це потрібно.

Доступна документація - це незавершене виробництво, як і самі рамки. Але тут є досить хороший підручник .

Що стосується редакторів ... якщо вам подобається vim, ви можете використовувати vim зі SLIMV. Якщо ви любите emacs, emacs / SLIME добре. Існує досить хороша підтримка Eclipse та NetBeans для Clojure (або так мені кажуть), але я зазвичай використовую TextMate (хоча Sublime Text 2 швидко стає моїм редактором на вибір). Я знаю, що я пропускаю невелику магію Lisp, не використовуючи більш інтегрованого середовища, але я радий натиснути ⌘-Tab, щоб переключитися між моїм редактором та REPL; ваш пробіг може змінюватися.

Якщо ви хочете, щоб книга прискорила вас, я рекомендую програмувати Clojure від Стюарта Халлоуей та Аарона Бедра. 2-е видання щойно вийшло з PragProg , тож воно актуальне.

Щасливий Лиспінг!


Ви можете додати Leiningen
Gary Rowe

5

Ще один коментатор , Інаіматі , порекомендував цю книгу кілька днів тому: Маленький шемер

Отримавши це сьогодні, і я можу сказати, що хтось, хто має дуже здоровенну бібліотеку книг програмування, придбаних за багато років, що, можливо, я прочитав лише одну главу, але мені, безумовно, знадобиться тверда версія цієї версії. Він читає як Дао Те Чинг, безліч маленьких фрагментів божественної мудрості щодо мови. Це може сказати схема, але спочатку вона називалася "Маленький LISPer", мови на рівні, про які вона обговорює, є досить схожими, щоб викладатися як одна.

Це не вдосконалений текст, але він має місію прищеплювати принципи мови і для чого це насправді, як мислити так. Я вважаю, що це буде відмінним початком для LISP.

NB. Матриця компетенцій програміста фактично зазначає цю книгу на найвищому рівні компетенцій, що потрібно шукати. (див. розділ Книги)


4

Дуже приємне місце для початку використання Lisp знаходиться в редакторі Emacs, де його можна буде переосмислити майже будь-що. Ви хочете, щоб клавіша 'e' вставила дату часу, просто напишіть невеликий фрагмент Lisp, щоб створити рядок і прив'язати його до клавіші e. Зроблено.

Це також дозволить вам ВИКОРИСТОВУВАТИ те, що ви дізнаєтесь у щоденній обстановці, якщо вам трапляється користуватися звичайним редактором протягом дня.


+1 за порадою "використовувати те, що ти дізнаєшся". Я є робочим днем ​​Intellij, але я просто зможу отримати лапи на emacs в нашому дуже обмеженому програмному середовищі.
Гері Роу

3

Якщо ви розробляєте Mac, ви можете спробувати Clozure CL . Він постачається з IDE, який має сумісні з Emacs натискання клавіш, і є міст до Objective C, щоб ви могли писати програми з какао.

Крім того, я читав «Практичний звичайний Lisp», але виявив, що « Успішний Lisp» також є корисним.

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


2

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


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