Почему в Clojure над другой JVM шепелявит: Кава, Вооруженных медведя или SISC?
У JVM уже было три шепелявых, прежде чем Clojure прибыл на сцену: Кава,Вооруженные Медведь и SISC.
какой разрыв Clojure заполнить то, что осталось от этих шепелявых?
11 ответов:
Kawa, ABCL и SISC-это переопределения существующих языков, которые довольно долго находятся в зубе. Они отлично подходят, если по какой-то причине вы хотите использовать стандартную схему или стандартный Common Lisp на JVM.
Clojure-это новая язык. Он не заполняет пробел. Это добавляет совершенно новые возможности. Это способствует чисто функциональный подход - схемы и CL как мультипарадигменный. Clojure сильно заимствует из дизайна различных языков FP (мл, Хаскель.)
и да, вы можете добавить поддержку параллелизма к другим Lisps, но это совершенно не имеет значения. В Clojure был разработан с самого начала как параллельный язык. Настолько, что написание параллельных программ тривиально в Clojure - а не в ракетостроении, как в нефункциональных языках (Scheme, CL не исключено). Посмотрите на этот путь:
люди говорят, что C позволяет писать быстрые программы по умолчанию.
Ну, Clojure позволяет писать одновременно программы по умолчанию.
"Clojure-это Lisp, не ограниченный обратной совместимостью" (это с веб-сайта Clojure). Это новое начало. Это прогресс. Используйте идеи, которые делают Lisp / Scheme мощным, но переосмыслите их вокруг Java платформа.
Clojure всегда будет самым последним Clojure. С любым другим языком, портированным на JVM, версия JVM всегда может играть в догонялки. Если вам не нужна платформа Java, зачем использовать SISC над другим Схема? Если да, то почему бы не использовать один Lisp (Clojure), который был разработан специально для него?
разработан с учетом параллелизма.
самый простой ответ, который я могу придумать, это то, что Clojure не является обычным-Lisp. Clojure-это не сдерживается истории других шепелявит. Это new язык built для JVM.
Я просто не знал о них, что является серьезным преимуществом для Clojure (что люди сделали достаточно шума, который я узнал). Самое большое, что есть у Clojure, что я не видел в тех, кого вы перечислили, это Программная Транзакционная.
Clojure также был разработан для JVM, в отличие от слоя для другого языка, так что это немного больше "Java-y", что я думаю, что другие будут, когда вам нужно сделать взаимодействие.
Если бы я был циничным, я бы сказал, что это потому, что у Clojure есть лучше сайт и более сексуальное имя.
страница обоснования на clojure.org государства:
Почему я написал еще один язык программирования? В основном потому, что я хотел:
- Ерунда
- для функционального программирования
- симбиотический с установленной платформой
- предназначен для параллелизма
и не смог найти ни одного.
соответствуют ли упомянутые вами 3 языка (Kawa, ABCL и SISC) этим требованиям? Они таковы:
- шепелявит (либо CL или схема диалекты)✓
- для функционального ✓программирования
- симбиотический с установленной платформой (JVM) ✓
но они не предназначен для (STM) параллелизма; однако, чтобы быть справедливым и полным, есть по крайней мере 2 библиотеки STM, которые я нашел для CL, которые еще не были упомянуты:
- STMX
- испытанная работа на ABCL. В стадии активного развития.
- CL-STM
- мертв? Последнее изменение было в 2007 году.
Мда... Так зачем же создавать новый Lisp? Главным образом потому, что это библиотеки. Страница с обоснованием clojure.org продолжает (курсив добавлен):
насчет уровня шепелявит (общий Лисп и Scheme)?
- медленная / отсутствие стандартизации столба нововведения
- основные структуры данных изменяемые, не расширяемые
- нет параллелизма в спецификациях
- хорошие реализации уже существуют для JVM (ABCL, Kawa, SISC и др.)
- стандартные Лиспы - это их собственные платформы
Это дизайн параллелизма языка проблема, как отметили другие.
кроме того, зачем останавливаться на JVM? в Clojure поддержка среды CLR находится в стадии активного развитие.
Это 2 промежутка, которые он заполняет, с моей точки зрения. Вы должны использовать Clojure, если это соответствует вашим потребностям. Не беспокойтесь о потере своих навыков, если Clojure упадет с карты. Ваши навыки шепелявости, но что более важно ваш образ мышления, будут перенесены на другие диалекты шепелявости.
Я также должен добавить, что Clojure-это относительно новый язык, реализованный одним человеком, с хорошими маркетинговыми навыками и большим количеством энергии. Он вкладывает много времени и шумихи в clojure ... иногда, шумиха-это самоисполняющееся пророчество в том, что если вы можете убедить людей, что это новая вещь, то можно получить достаточную поддержку и импульс, чтобы заставить ее работать.
Я подозреваю, что исполнители Kawa и т. д. не так много поставлено на карту, следовательно не раскручивая свой продукт. Кроме того, что там обман? -У нас отличный язык .. это называется Lisp" это более сложная маркетинговая продажа.
Я думаю, что Java является ярким примером этого. У него были некоторые очень серьезные недостатки, но поскольку он был продан и раскручен так сильно, он достиг большого импульса, что означало поддержку со стороны поставщиков оборудования/программного обеспечения, производителей инструментов, инвестиций в промышленность и т. д. В любом случае, он достиг определенной степени успеха, хотя я ненавидел программирование в оно. В Clojure может достигнуть подобного успеха там, где другие шепелявит нет.
преимущество Clojure заключается в том, что он дает вам доступ ко всем библиотекам java/коду и многопоточную поддержку, потому что он основан на JVM. Кроме того, он был разработан с учетом параллелизма, что-то обычно не разработано в lisp, хотя из-за примитивов сопоставления, вероятно, не было бы трудно создать lisp, который хорошо поддерживал бы параллелизм.
Это, как говорится, я попробовал Clojure и ненавидел синтаксис и боль в заднице фактор, который кажется, что он согласен со всем, что связано с Java.
Clojure-это "Лисп", это не любой Лисп, который вы уже знаете. Я потратил последнее пара дней чтения материала и просмотра видео, и я впечатлен. Свой предпосылка заключается в том, что функциональные программы (основанные на неизменяемых данных) являются лучшим способом управление параллелизмом. Clojure реализует lisp-подобную систему на основе JVM для ее обеспечения.
нам не нужно иметь еще один ответ (и я не ожидаю голосов за этот), но вот некоторые небольшие улучшения для нескольких других ответов.
новее не всегда лучше. Новое и плохо спроектированное-это не хорошо, новое и не поддерживаемое-это не хорошо, а новое без большего (или, по крайней мере, растущего) сообщества пользователей-это не хорошо. (Новые языки появляются регулярно, но большинство из них уходят на второй план из-за неупотребления.)
Я люблю Common Lisp. Часть его красота-это его причудливость, которая исходит из того, что он был разработан комитетами с целью обратной совместимости с несколькими несовместимыми диалектами.
Я люблю схеме. Это красивый, элегантный язык. Тем не менее, его развитие зависит от комитетов, и, возможно, это замедлило его в разы. В любом случае, его цели отличаются от целей Clojure.
Common Lisp и Scheme имеют акценты, такие как хвостовая рекурсия, которые не очень хорошо подходят для эффективность на СПМ. Clojure был разработан с самого начала, чтобы хорошо отображать на JVM и взаимодействовать (довольно) хорошо с Java. (Я не уверен, что это означает о диалектах Clojurescript и CLR.)
и это важный момент: Хики разработал язык, который хорошо продуман, элегантен, и что с самого начала включал систематически связанный набор функций, которые позволяют легко делать много с небольшим. Это относится к базовому взаимодействию JVM, а также к остальной части языка. Люди, которые контролируют Clojure, продолжают строго придерживаться целей языка до сих пор.Это большая часть того, что я люблю о Clojure: он хорошо спроектирован как в целом, так и в деталях. Это означает, что как только вы привыкнете к нему, это приятно, программа в нем.
Это было бы только немного преувеличение (или занижение?) сказать, что Clojure имеет силу Common Lisp с элегантностью схемы. В Common Lisp есть много и много того, что вам нужно встроить в язык, но это беспорядок (я говорю это с любовью), и когда вам нужно что-то большее, чем то, что есть в языке, есть иногда несколько несовместимых библиотек с разными компромиссами. Схема по дизайну небольшая, хотя есть доступные библиотеки. Clojure имеет растущее тело стандартный библиотеки (в отличие от CL), которые являются более или менее частями языка. Хорошей иллюстрацией этого является основным.матричный проект, который предоставляет общий интерфейс для нескольких различных матричных реализаций. Это важно, потому что существуют различные реализации матрицы, которые лучше всего подходят для случайных использование малых матриц, или для широкого использования огромных матриц, например.
ничто из этого не означает, что Clojure лучше, чем Common Lisp или Scheme; это не так. Эти три языка имеют разные достоинства.
Это новое! Это означает, что не многие старые шепелявые будут использовать его, так как традиционное сообщество lisp хорошо, традиционно, но это также означает, что люди без предыдущего опыта lisp забрать его как новую вещь.
Imho, Clojure для старых шепелявит, что Ruby был для Smalltalk. Не обязательно лучше, но достаточно хорошо. И самое главное, это более приемлемо для вашего работодателя, потому что он имеет импульс и рассматривается как язык на подъеме, так же, как Рубин когда-то было.
Comments