Который Lisp я должен изучить? [закрытый]

он был напечатан строчными буквами. спасибо Жюльен и всем остальным. не могу поверить, что я не уловил этого

69
задан 11 revs, 3 users 60% 7 September 2017 в 18:57
поделиться

17 ответов

Clojure является активно разработанным, современным диалектом Lisp. Это основано на JVM, таким образом, все библиотеки Java сразу доступны, и поэтому также имеет поддержку Unicode.

Это - одна альтернатива, не Один Истинный Ответ.

62
ответ дан Greg Hewgill 24 November 2019 в 13:39
поделиться

Существует очень немного реальных вариантов там, или SBCL, Clojure или PLTScheme.

0
ответ дан Marko 24 November 2019 в 13:39
поделиться

Я - поклонник Схемы, но это были больше чем 10 лет, с тех пор как я сделал что-либо со Схемой.

как другие сказали - просто выбирают один и идут.

0
ответ дан Tim 24 November 2019 в 13:39
поделиться

Я думаю Вы или хочу язык Common LISP или Схему PLT.

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

1
ответ дан Leslie P. Polzer 24 November 2019 в 13:39
поделиться

Догадка: при изучении первой шепелявости не изучайте ту, которую Вы закончите тем, что использовали для разработки конца.

Лемма: изучите Дугу. Это - весь из "трудно к grok" вещи в шепелявости - закрытия, макросы, продолжения, ни с одним из Java Clojure interop сложность, беспорядок пространства имен CL или фрагментация имени Схемы. Если Вы выделены, можно изучить все эти вещи в выходные. Если Вы резки и преданы ночью.

И это сделает изучение всех других, шепелявит партия легче.

4
ответ дан Andrey Fedorov 24 November 2019 в 13:39
поделиться

Смотрите на IronScheme.

4
ответ дан Nemanja Trifunovic 24 November 2019 в 13:39
поделиться

Пойдите с Clojure. Это - удивительный язык с полным доступом к любой библиотеке Java. Это было в разработке в течение чуть более чем 2 лет и уже имеет 3 плагина IDE в разработке и книге, опубликованной в апреле об этом. Это очень быстро, очень изящно и красиво. Вы не можете пойти не так, как надо с Clojure.

6
ответ дан Rayne 24 November 2019 в 13:39
поделиться

Изучите elisp, таким образом, можно расширить Emacs.

7
ответ дан mletterle 24 November 2019 в 13:39
поделиться

Самая большая проблема Lisp состоит в том, что нет никакого переопределяющего стандарта, которого все придерживаются. Необходимо только выбрать между языком Common LISP и Схемой; необходимо выбрать между несколькими несовместимыми реализациями языка Common LISP и несколькими несовместимыми реализациями Схемы, а также другими небольшими вещами как Arc и Clojure.

я рекомендовал бы запуститься с MzScheme. Это популярно, это активно разрабатывается, это имеет многие библиотеки, предлагающие функции современной среды программирования, и Схема несколько более проста (не сказать лучше, просто более простой), чем язык Common LISP.

9
ответ дан Chuck 24 November 2019 в 13:39
поделиться

Мятежник Chuck, преимущество языка Common LISP состоит в том, что он имеет стандарт, которого реализации придерживаются и борются за, такой, что можно разработать в основном с SBCL (который имеет превосходную проверку типа и вывод), и затем, скажем, развернитесь как исполняемый файл, связанный с библиотеками C (с ECL или другими) или как использование .jar библиотек Java (с ABCL), или с Mac или собственным Windows GUI (Clozure, оба). Язык Common LISP является удивительно портативным через архитектуру и по реализациям и со временем, и Общие Lispers прилагают усилия для хранения вещей этим путем с поддержкой языка. Как иллюстрация, одно глупое расхождение нестандартизированного поведения является вопросом, "действительно ли это - специальная переменная?" Таким образом, я ответил на это через реализации, которые я использую:

#-abcl
(defun special-variable-p (symbol)
  #+ecl(si:specialp symbol)
  #+ccl(proclaimed-special-p symbol)
  #+sbcl(equal '(:special t)
               (multiple-value-list-int:info :variable :kind symbol)))

, который уменьшает, во время чтения, ни к чему на ABCL (он уже имеет это), к (defun special-variable-p (symbol) (si:specialp symbol)) на ECL, и так далее. Таким образом, я могу поместить это в свои .rc файлы и использовать общую функцию в REPL. Но это не очень важно: это не поточная обработка или по-разному поддержанные сети или библиотека Communicating Sequential Processes . Этот последний пример просто имеет один #+sbcl/#-sbcl, как раз когда это работает на пяти реализациях. Поскольку это полагается на код, это было тщательно портировано.

, Но что разрешает это (и другой) преимущества также ставят его собственную проблему ученику: язык Common LISP является очень большим языком. Это не что-то, что можно хлебать через неделю или два, как я сделал Clojure (но мой Clojure уже затухает с повреждающимся набором изменений для развертывания - что язык, хотя тяжелый его собственными достоинствами, напомнил мне в отличие от большого количества из того, что мне нравится приблизительно язык Common LISP.), Таким образом, необходимо считать много из эта страница и сохранить HyperSpec нажатием клавиши далеко (для меня, M-x hyperspec RET do-symbols RET достаточная близость к Библии.), и думают о покупке нескольких книг. Я имею , Практический язык Common LISP , просто полученный Позволил По Лямбде и купит PAIP очень скоро теперь.

, Но даже если язык Common LISP Истинный Ответ , Вы не будете абсолютно ненужный Ваше время 'просто выбирающий' некоторую обманчиво роскошную альтернативу (-'обманчивый', потому что распространенный CL не показывает Вам всем, что его макросы могут сделать, и это имеет больше виды макросов , чем кто-либо. Обычное сравнение между плохим CL и оптимизированной синтаксисом альтернативой X). Вы все еще изучите основы, можно все еще использовать большую часть того, что можно считать в SICP, На Lisp, Маленький Интриган , и т.д. Шепелявость, даже неправильная шепелявость, еще лучше, чем нешепелявость. (Но Вы потратите некоторые свои части реализации времени правильной шепелявости, плохо, в неправильной шепелявости. Meta-Greenspun.)

18
ответ дан ayrnieu 24 November 2019 в 13:39
поделиться

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

19
ответ дан Gregg Lind 24 November 2019 в 13:39
поделиться

Clojure является большим диалектом LISP, который способствует функциональному программированию. Это работает на JVM, таким образом, у Вас есть доступ к любым библиотекам Java, которыми Вы могли бы привыкнуть пользоваться. Сайт имеет замечательную документацию и скринкасты , чтобы помочь Вам учиться. Другое преимущество состоит в том, что действительно легко установить, в отличие от большого количества других диалектов.

, Если Вы просто обращаетесь к grok понятия , Emacs (EmacsLISP конкретно) является другой альтернативой. Это идет с невероятной документацией, учебными руководствами и большим количеством примеров кода. Скринкасты довольно легко найти также. Одно из больших преимуществ Emacs - то, что редактор записан в LISP, таким образом, у редактора естественно есть очень хорошая поддержка выполнения, редактирования и отладки LISP. Кроме того, можно расширить редактора для создания Вашего каждый день, для редактирования текста нужно легче , в то время как Вы изучаете LISP.

19
ответ дан Bryan Kyle 24 November 2019 в 13:39
поделиться

Если Вы хотите, избегают flamewars, и Вы наслаждаетесь библиотеками, идут с Clojure. Это является маленьким, это быстро, и сообщество полезно и недогматично. Это - Lisp минус абсурдный хлам 1980-х. Это имеет BDFL и если у Вас есть хорошая идея существует чертовски хороший шанс, это будет реализовано на язык.

я играл вокруг с языком Common LISP, это - красивая вещь. Я завершил первые 3 главы и Метакруговое Средство анализа в SICP в DrScheme, и это - красивая вещь также. Конечно, Вы извлечете выгоду значительно из изучения их.

, Но, со временем я приезжал для дорожения маленькими языками к моей основе. Я не буду лгать, я люблю JavaScript, и я люблю C (и черт возьми! если каждый язык не имеет ядра C в, он - основа), потому что они являются маленькими.

Clojure является небольшим. Это изящно. Это - язык в течение наших времен.

31
ответ дан dnolen 24 November 2019 в 13:39
поделиться

Для меня основополагающая теория Схемы намного более убедительна. PLTScheme является, безусловно, наиболее активно разработанный LISP, который я нашел. К сожалению, это имеет быстрое увеличение ввода, который затеняет красоту Lisp.

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

5
ответ дан nbro 24 November 2019 в 13:39
поделиться

Знаете ... Когда я заинтересовался Лиспом, я тоже подумал, что мне придется выбирать. Затем, после прочтения и множества вопросов, я остановился на Common Lisp. Не потому, что он «лучше» чем Scheme в абсолютном смысле, а потому, что в нем есть функции, которые, как я знал, я, вероятно, буду использовать в следующие 2-3 года в своих проектах:

  • Очень эффективный компилятор для численных вычислений (SBCL),
  • Система условий, и ...
  • Я должен признать, что SLIME также сыграла важную роль в этом решении. : -)

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

Что касается Arc, Clojure и Lush, я их не знаю. Полагаю, тот же аргумент можно применить и к ним ... Причины, по которым я не хотел вкладывать в них слишком много, заключались в следующем: Arc не кажется интересным для численных вычислений, а П. Грэм, кажется, одержим размером кода (чтобы смысл сделать его код нечитаемым); Clojure кажется хорошим, но мне не нравится JVM. И Lush ... Ну, помимо использования динамической области видимости, скомпилированные и интерпретируемые версии языка очень отличаются - и вы не можете компилировать рекурсивные функции. Так что для меня это была либо Scheme, либо Common Lisp.

я их не знаю. Полагаю, тот же аргумент можно применить и к ним ... Причины, по которым я не хотел вкладывать в них слишком много, заключались в следующем: Arc не кажется интересным для численных вычислений, а П. Грэм, кажется, одержим размером кода (чтобы смысл сделать его код нечитаемым); Clojure кажется хорошим, но мне не нравится JVM. И Lush ... Ну, помимо использования динамической области видимости, скомпилированные и интерпретируемые версии языка очень отличаются - и вы не можете компилировать рекурсивные функции. Так что для меня это была либо Scheme, либо Common Lisp.

я их не знаю. Полагаю, тот же аргумент можно применить и к ним ... Причины, по которым я не хотел вкладывать в них слишком много, заключались в следующем: Arc не кажется интересным для численных вычислений, а П. Грэм, кажется, одержим размером кода (чтобы смысл сделать его код нечитаемым); Clojure кажется хорошим, но мне не нравится JVM. И Lush ... Ну, помимо использования динамической области видимости, скомпилированные и интерпретируемые версии языка очень отличаются - и вы не можете компилировать рекурсивные функции. Так что для меня это была либо Scheme, либо Common Lisp.

Clojure кажется хорошим, но мне не нравится JVM. И Lush ... Ну, помимо использования динамической области видимости, скомпилированные и интерпретируемые версии языка очень отличаются - и вы не можете компилировать рекурсивные функции. Так что для меня это была либо Scheme, либо Common Lisp.

Clojure кажется хорошим, но мне не нравится JVM. И Lush ... Ну, помимо использования динамической области видимости, скомпилированные и интерпретируемые версии языка очень отличаются - и вы не можете компилировать рекурсивные функции. Так что для меня это была либо Scheme, либо Common Lisp.

3
ответ дан 24 November 2019 в 13:39
поделиться

Буквально вчера я написал perl-скрипт, чтобы сделать именно это. Сценарий возвращает список модулей Perl, установленных в @INC, используя символ '::' в качестве разделителя. Вызов сценария с помощью -

perl perlmod.pl

ИЛИ

perl perlmod.pl <module name> #Case-insensitive(eg. perl perlmod.pl ftp)

На данный момент сценарий пропускает текущий каталог ('.' DrScheme - это потрясающая среда программирования, которая включает в себя компилятор, степпер, средства проверки синтаксиса, REPL, поддерживает множество языков и является расширяемой. Это делает весь опыт увлекательным. См. Несколько скриншотов

  • Хорошая поддержка сообщества.
    Сообщество с энтузиазмом относится к их языку и очень поддерживает их. Если у вас есть какие-либо вопросы, доступны списки рассылки, группы и форумы. Даже авторы очень доступны.

  • Продолжение исследований
    PLT очень активны и продолжают делать свой инструмент все лучше и лучше. От лабораторий можно ожидать много инноваций. например. Мне очень нравится использовать это: http://blog.plt-scheme.org/2009/05/typed-scheme-20.html

  • Бесплатные книги и интересные руководства, которые помогут вам начать работу.
    http : //www.htdp.org/
    http://world.cs.brown.edu/

  • Хорошие модули и обширные библиотеки.
    http://www.cs.utah.edu/plt/ разработать /
    http://planet.plt-scheme.org/ также см. docs

  • Если вы изучаете Scheme, попробуйте DrScheme .

    4
    ответ дан 24 November 2019 в 13:39
    поделиться

    Pick anything but Clojure, go with it, and you will be in a better position to evaluate later.

    You phrased this question as which Lisp is the best medium for learning Lisp, and to me that has to include a Lisp that is built up from low level primitives, whereas large parts of Clojure are written in Java.

    If you had phrased this question as which is the best Lisp to start a new project in, then Clojure may be the best choice.

    1
    ответ дан 24 November 2019 в 13:39
    поделиться