Я знаю, что это диалекты одного семейства языков, называемого шепелявым, но в чем именно заключаются различия? Не могли бы вы дать обзор, если возможно, охватывающий такие темы, как синтаксис, характеристики, функции и ресурсы.
Я знаю, что это диалекты одного семейства языков, называемого шепелявым, но в чем именно заключаются различия? Не могли бы вы дать обзор, если возможно, охватывающий такие темы, как синтаксис, характеристики, функции и ресурсы.
Ответы:
У всех них много общего:
(function-name arg1 arg2)
Отличительные особенности Common Lisp:
Отличительные особенности Clojure:
[]
и карты, {}
используемые в качестве стандартных в дополнение к стандартным спискам ()
- помимо общей полезности векторов и карт, некоторые считают, что это нововведение, которое делает в целом более читабельнымОтличительные особенности схемы:
Люди выше пропустили несколько вещей
Common Lisp также имеет векторы и хеш-таблицы. Разница в том, что Common Lisp использует # () для векторов и не использует синтаксис для хеш-таблиц. На схеме есть векторы, я считаю
В Common Lisp есть макросы для чтения, которые позволяют использовать новые скобки (как и Racket, потомок Scheme).
Scheme и Clojure имеют гигиеничные макросы в отличие от негигиеничных макросов Common Lisp.
Все языки либо современные, либо есть обширные проекты ремонта. Common Lisp получил обширные библиотеки за последние пять лет (в основном благодаря Quicklisp), Scheme имеет некоторые современные реализации (Racket, Chicken, Chez Scheme и т. Д.), А Clojure был создан относительно недавно.
Common Lisp имеет встроенную объектно-ориентированную систему, хотя она сильно отличается от других объектно-ориентированных систем, которые вы, возможно, использовали. Примечательно, что это не принудительно - вам не нужно писать объектно-ориентированный код.
У языков несколько иная философия дизайна. Схема была разработана как минимальный диалект для понимания модели актера; позже он стал использоваться в педагогике. Common Lisp был разработан для объединения бесчисленного множества диалектов Lisp, которые возникли. Clojure был разработан для параллелизма. В результате Scheme имеет репутацию минималистичного и элегантного, Common Lisp - мощного и парадигматического (функционального, объектно-ориентированного и т. Д.), А Clojure - функционального программирования.
GIMP написан на схеме :)
На самом деле, часть программного обеспечения, которое, по мнению некоторых людей, могло быть написано на C ++, вероятно, было сделано под эгидой Lisp, трудно выделить золотые яблоки из этой кучи. Дело в том, что C ++ не всегда был популярен, он кажется популярным сегодня только из-за истории обновлений. Меньшую половину века C ++ даже не использовал многопоточность, именно здесь Python сегодня превратился в помойку бесполезного непроверенного кода с ошибками. Пройдите немного быстрее, и теперь мы наблюдаем рост функционального программирования, это больше похоже на адаптацию или смерть. Я думаю, что в части адаптации Java все правильно.
Scheme был разработан для упрощения языка Lisp, это было его единственной целью, за исключением того, что он так и не прижился. Я думаю, что Clojure делает что-то подобное, оно предназначено для упрощения схемы для JVM и не более того. Он, как и любой другой язык JVM, предназначен только для того, чтобы улучшить пользовательский опыт, только для упрощения написания шаблона на языке Java.