Схема или Общий Лисп? [закрыто]

17
задан Bill the Lizard 19 August 2010 в 21:53
поделиться

11 ответов

Как и многое другое, это зависит от того, что вы хотите сделать .

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

Если вы просто хотите изучить и поиграть с Lisp, или даже создать умеренно сложные программы, я бы сказал, что Scheme, вероятно, лучше. У него более чистая, четкая (меньшая) стандартная библиотека, и есть много ресурсов, предназначенных для учащихся (не то чтобы для CL тоже нет).

Если вам нужна чистая мощь множества библиотек (многие из которых написаны очень хорошо) и инструментарий стандартной (такой же стандартной, как и реализация CL), которая поставляется с CL, то это будет ваш лучший выбор.

В качестве альтернативы я бы предложил Clojure . Это относительно новый язык (<5 лет), но в нем много чего интересного. Он построен для параллелизма с множеством примитивов, которые упрощают создание программ с сохранением состояния, если вам нужно иметь состояние. И множество других преимуществ, хотя, опять же, стандартная библиотека остается небольшой .

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

Однако это новый язык с новым (но очень дружелюбным!) Сообществом. Если вы просто хотите окунуться в бассейн Lisp, я бы сказал, что Scheme - ваш лучший выбор. Если вы хотите добиться цели, я предпочитаю и люблю Clojure.

ИЗМЕНИТЬ Честно говоря, вы не ошибетесь ни с одним из трех. Один может быть лучше в зависимости от того, что вы хотите сделать, и я бы порекомендовал Clojure практически всем.

18
ответ дан 30 November 2019 в 10:53
поделиться

Это старый;) Emacs или vi? KDE или Gnome? Красный или белый?

Самая большая разница между ними в том, что Scheme фокусируется на функциональном программировании; некоторые авторы делают упор на функциональное программирование на Common Lisp, например Пол Грэм, и если я пишу Common Lisp, я следую их советам.

Я предпочитаю Scheme, потому что она мне больше понятна. Я обнаружил, что сообщество Scheme, особенно окружающее реализации свободного программного обеспечения, гораздо больше сосредоточено на свободном программном обеспечении. Считайте это, если это важно для вас. Вопреки распространенному мнению, Common Lisp - очень популярный язык, но чаще всего он находится за закрытыми корпоративными дверями. Для меня это было большим фактором, чтобы отвернуться от Common Lisp: когда сообщество не так открыто, вы не найдете столько помощи и библиотек.

Что касается реализаций, я бы порекомендовал Guile, если вы пользователь GNU / Linux. Другие реализации просто слишком далеки от мейнстрима сознания GNU; Мне нравится сообщество GNU, поэтому Guile был для меня лучшим выбором. Также у Guile есть лучший набор библиотек, включенных в установку по умолчанию, которую я нашел (учитывая, что в отличие от других респондентов, я ничего не знаю о Clojure).

Я видел, как некоторые другие респонденты повторяли старое заклинание: «Если вы хотите что-то сделать, используйте Common Lisp; если вы хотите учиться, используйте Scheme». Вероятно, это было правдой в эпоху SICP , но я не думаю, что это правда в наши дни.Хорошая реализация Scheme, такая как Guile, имеет множество доступных библиотек и множество хороших сценариев использования, которые показывают, что с ней можно сделать много чего.

6
ответ дан 30 November 2019 в 10:53
поделиться

Мое впечатление: Common Lisp больше подходит для выполнения задач, Scheme - для образования и развлечения. Я предпочитаю реализацию SBCL. Scheme я не знаю.

3
ответ дан 30 November 2019 в 10:53
поделиться

Мне нравятся более прагматичные, барочные и странные языки программирования, поэтому я выбрал Common Lisp.

Я использую GNU clisp, но подумываю о переходе на SBCL, поскольку он ориентирован на эффективность.

1
ответ дан 30 November 2019 в 10:53
поделиться

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

1
ответ дан 30 November 2019 в 10:53
поделиться

Обычно я смотрю на это так: Common Lisp относится к Scheme, как C ++ относится к Python. Как в Common Lisp, так и в C ++, вам предоставляется огромное количество инструментов и много возможностей, и, по сути, вы можете свободно перемещаться. В Scheme, с другой стороны, больше внимания уделяется простоте, и вам дается немного меньше веревки, на которой можно повеситься.

И, как и в случае с C ++ и Python, есть идея, что один предназначен для реальных, взрослых проектов, а другой - своего рода игрушечный язык, с которым можно поиграть или создать одноразовые сценарии, хотя в большинстве случаев это «игрушка» достаточно для всего, что вам нужно.

Если вы хотите взглянуть на схему, я рекомендую PLT Racket . Это не совсем стандартная схема, но по сути та же самая, и это дистрибутив "с батарейками".

1
ответ дан 30 November 2019 в 10:53
поделиться

Обычный лисп намного полезнее, но схема намного чище. в основном сводится к этому.

0
ответ дан 30 November 2019 в 10:53
поделиться

Если вам нужна мощность и гибкость, выбирайте Common Lisp.

Если вам нужна простота и понятность, вы выбираете Scheme.

Пока я доволен SBCL.

7
ответ дан 30 November 2019 в 10:53
поделиться

Если вы хотите писать практичный код и/или вам нужна хорошая степень переносимости от одной реализации к другой, используйте Common Lisp. В настоящее время ведется активное техническое обслуживание одиннадцати реализаций. См. мой обзор реализаций.

Различные реализации имеют разные сильные стороны. Если вам нужна бесплатная версия с открытым исходным кодом, Clozure Common Lisp (CCL) (не путать с «Clojure»!) и Steel Bank Common Lisp (SBCL) — хорошие реализации общего назначения. Существуют также коммерческие реализации, наиболее известными из которых являются Allegro Common Lisp и LispWorks. Для совместимости с Windows в Corman Common Lisp есть полезные возможности. Для встраивания отлично подходит Embedded Common Lisp (ECL) (вам не нужно использовать его во встроенном виде). Если вам нужен Common Lisp, который компилируется в виртуальную машину Java, есть Armed Bear Common Lisp (ABCL). См. документ для других; какой из них вы хотите, зависит от ваших индивидуальных обстоятельств.

10
ответ дан 30 November 2019 в 10:53
поделиться

Scheme имеет такую ​​же или большую мощность, как Common Lisp, но у него меньше поддержки или привязок. Я бы выбрал Common Lisp. Что касается реализации? Я уже некоторое время использую sbcl в Slime/Swank, и это довольно приятно и быстро. Слайм действительно хорош.

0
ответ дан 30 November 2019 в 10:53
поделиться

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

Синтаксис одинаково сложен или не в любом шепелявости. Синтаксис Clojure немного проще для тех, кто не шепелявит, потому что используются другие скобки. Это имеет большее значение, чем можно было бы ожидать.

И у Clojure, и у CL есть отличные вводные книги. Я не читал книги по схемам сколько-нибудь подробно, но по сравнению с ними они кажутся более академическими.

Я бы порекомендовал Clojure или Common Lisp новичку, основываясь на личном опыте.

Clojure более функциональна и в высшей степени практична. При использовании CL я рекомендую IDE (у Allegro и других есть бесплатные версии) или использование текстового редактора и repl. Другими словами, не используйте слизь. Для Clojure я не могу придумать никаких IDE, но, возможно, у Textmate или Eclipse что-то есть?

В Scheme также есть несколько очень хороших IDE, таких как DrScheme. Но мне было легче оставаться вовлеченным, когда я занимался чем-то вроде реального проекта, и Clojure и CL, казалось, облегчали эту задачу.

0
ответ дан 30 November 2019 в 10:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: